@nanoporetech-digital/components 5.9.4 → 5.9.6

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 (182) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cjs/{dom-7acf7afd.js → dom-1d35ea4d.js} +2 -2
  3. package/dist/cjs/{dom-7acf7afd.js.map → dom-1d35ea4d.js.map} +1 -1
  4. package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
  5. package/dist/cjs/nano-alert.cjs.entry.js +2 -2
  6. package/dist/cjs/nano-algolia-pagination.cjs.entry.js +1 -1
  7. package/dist/cjs/nano-algolia-pagination.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nano-algolia.cjs.entry.js +1 -1
  9. package/dist/cjs/nano-datalist_3.cjs.entry.js +1 -1
  10. package/dist/cjs/nano-details.cjs.entry.js +1 -1
  11. package/dist/cjs/nano-dialog.cjs.entry.js +2 -2
  12. package/dist/cjs/nano-drawer.cjs.entry.js +2 -2
  13. package/dist/cjs/nano-dropdown.cjs.entry.js +10 -6
  14. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +3 -3
  16. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nano-global-nav.cjs.entry.js +9 -7
  18. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nano-icon-button_2.cjs.entry.js +1 -1
  20. package/dist/cjs/nano-input.cjs.entry.js +1 -1
  21. package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
  22. package/dist/cjs/nano-overflow-nav.cjs.entry.js +1 -1
  23. package/dist/cjs/nano-sticker.cjs.entry.js +1 -1
  24. package/dist/cjs/nano-tab-group.cjs.entry.js +12 -6
  25. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  26. package/dist/cjs/{nano-table-9bd1168f.js → nano-table-49b4b3a6.js} +3 -3
  27. package/dist/cjs/{nano-table-9bd1168f.js.map → nano-table-49b4b3a6.js.map} +1 -1
  28. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  29. package/dist/cjs/{popover-088646b2.js → popover-b506f6ae.js} +10 -17
  30. package/dist/cjs/popover-b506f6ae.js.map +1 -0
  31. package/dist/cjs/{scroll-6a9bedb4.js → scroll-fc1b8387.js} +2 -2
  32. package/dist/cjs/{scroll-6a9bedb4.js.map → scroll-fc1b8387.js.map} +1 -1
  33. package/dist/cjs/{table.worker-894a0418.js → table.worker-da980a2f.js} +2 -2
  34. package/dist/cjs/table.worker-da980a2f.js.map +1 -0
  35. package/dist/cjs/{transitions-c985e9a9.js → transitions-cc18619c.js} +3 -3
  36. package/dist/cjs/transitions-cc18619c.js.map +1 -0
  37. package/dist/collection/components/algolia/algolia-pagination.js +1 -1
  38. package/dist/collection/components/algolia/algolia-pagination.js.map +1 -1
  39. package/dist/collection/components/dropdown/dropdown.js +9 -5
  40. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  41. package/dist/collection/components/global-nav/global-nav.js +7 -5
  42. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  43. package/dist/collection/components/global-nav/style/global-nav.css +18 -18
  44. package/dist/collection/components/nav-item/nav-item.css +4 -4
  45. package/dist/collection/components/table/table.js +2 -2
  46. package/dist/collection/components/table/table.js.map +1 -1
  47. package/dist/collection/components/tabs/tab-group.js +9 -3
  48. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  49. package/dist/collection/utils/dom.js +1 -1
  50. package/dist/collection/utils/dom.js.map +1 -1
  51. package/dist/collection/utils/transitions.js +2 -2
  52. package/dist/collection/utils/transitions.js.map +1 -1
  53. package/dist/components/dom.js +1 -1
  54. package/dist/components/dom.js.map +1 -1
  55. package/dist/components/dropdown.js +9 -5
  56. package/dist/components/dropdown.js.map +1 -1
  57. package/dist/components/nano-algolia-pagination.js +1 -1
  58. package/dist/components/nano-algolia-pagination.js.map +1 -1
  59. package/dist/components/nano-global-nav.js +8 -6
  60. package/dist/components/nano-global-nav.js.map +1 -1
  61. package/dist/components/nano-tab-group.js +9 -3
  62. package/dist/components/nano-tab-group.js.map +1 -1
  63. package/dist/components/nav-item.js +1 -1
  64. package/dist/components/nav-item.js.map +1 -1
  65. package/dist/components/popover.js +9 -16
  66. package/dist/components/popover.js.map +1 -1
  67. package/dist/components/table.js +1 -1
  68. package/dist/components/table.js.map +1 -1
  69. package/dist/components/transitions.js +2 -2
  70. package/dist/components/transitions.js.map +1 -1
  71. package/dist/esm/{dom-311c9e1e.js → dom-8599fac1.js} +2 -2
  72. package/dist/esm/{dom-311c9e1e.js.map → dom-8599fac1.js.map} +1 -1
  73. package/dist/esm/nano-accordion.entry.js +1 -1
  74. package/dist/esm/nano-alert.entry.js +2 -2
  75. package/dist/esm/nano-algolia-pagination.entry.js +1 -1
  76. package/dist/esm/nano-algolia-pagination.entry.js.map +1 -1
  77. package/dist/esm/nano-algolia.entry.js +1 -1
  78. package/dist/esm/nano-datalist_3.entry.js +1 -1
  79. package/dist/esm/nano-details.entry.js +1 -1
  80. package/dist/esm/nano-dialog.entry.js +2 -2
  81. package/dist/esm/nano-drawer.entry.js +2 -2
  82. package/dist/esm/nano-dropdown.entry.js +10 -6
  83. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  84. package/dist/esm/nano-global-nav-user-profile_3.entry.js +3 -3
  85. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  86. package/dist/esm/nano-global-nav.entry.js +9 -7
  87. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  88. package/dist/esm/nano-icon-button_2.entry.js +1 -1
  89. package/dist/esm/nano-input.entry.js +1 -1
  90. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  91. package/dist/esm/nano-overflow-nav.entry.js +1 -1
  92. package/dist/esm/nano-sticker.entry.js +1 -1
  93. package/dist/esm/nano-tab-group.entry.js +12 -6
  94. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  95. package/dist/esm/{nano-table-baba1696.js → nano-table-673838b5.js} +3 -3
  96. package/dist/esm/{nano-table-baba1696.js.map → nano-table-673838b5.js.map} +1 -1
  97. package/dist/esm/nano-table.entry.js +1 -1
  98. package/dist/esm/{popover-02e6714d.js → popover-e5e7a641.js} +10 -17
  99. package/dist/esm/popover-e5e7a641.js.map +1 -0
  100. package/dist/esm/{scroll-952d292a.js → scroll-ec7ac257.js} +2 -2
  101. package/dist/esm/{scroll-952d292a.js.map → scroll-ec7ac257.js.map} +1 -1
  102. package/dist/esm/{table.worker-ae46bca0.js → table.worker-608a4868.js} +2 -2
  103. package/dist/esm/table.worker-608a4868.js.map +1 -0
  104. package/dist/esm/{transitions-732f45a2.js → transitions-fb09eb32.js} +3 -3
  105. package/dist/esm/transitions-fb09eb32.js.map +1 -0
  106. package/dist/nano-components/nano-components.esm.js +1 -1
  107. package/dist/nano-components/{p-587d3e3d.js → p-06c85b64.js} +2 -2
  108. package/dist/nano-components/{p-a1ead0a7.entry.js → p-0b7c676c.entry.js} +2 -2
  109. package/dist/nano-components/{p-a2b73d79.entry.js → p-0e4da739.entry.js} +2 -2
  110. package/dist/nano-components/{p-6bdbcaa6.entry.js → p-191352c4.entry.js} +2 -2
  111. package/dist/nano-components/{p-03f8b115.entry.js → p-24dcd788.entry.js} +2 -2
  112. package/dist/nano-components/p-2a105609.entry.js +5 -0
  113. package/dist/nano-components/p-2a105609.entry.js.map +1 -0
  114. package/dist/nano-components/{p-4a79eafe.entry.js → p-359b7cd2.entry.js} +2 -2
  115. package/dist/nano-components/p-36c3ded8.entry.js +5 -0
  116. package/dist/nano-components/p-36c3ded8.entry.js.map +1 -0
  117. package/dist/nano-components/{p-760d80d2.entry.js → p-51133e62.entry.js} +2 -2
  118. package/dist/nano-components/{p-2a7d0c13.entry.js → p-5fc3035d.entry.js} +2 -2
  119. package/dist/nano-components/p-67ab5a5f.entry.js +5 -0
  120. package/dist/nano-components/p-67ab5a5f.entry.js.map +1 -0
  121. package/dist/nano-components/p-688f1a55.entry.js +5 -0
  122. package/dist/nano-components/p-688f1a55.entry.js.map +1 -0
  123. package/dist/nano-components/{p-ac7953e0.entry.js → p-7670058b.entry.js} +2 -2
  124. package/dist/nano-components/{p-04d5c9ea.entry.js → p-79fff4fd.entry.js} +2 -2
  125. package/dist/nano-components/p-842f826a.entry.js +5 -0
  126. package/dist/nano-components/p-842f826a.entry.js.map +1 -0
  127. package/dist/nano-components/{p-800c4260.entry.js → p-9f60ff14.entry.js} +2 -2
  128. package/dist/nano-components/{p-73312f19.entry.js → p-a225e976.entry.js} +2 -2
  129. package/dist/nano-components/p-b27b56d3.js +5 -0
  130. package/dist/nano-components/p-c3e8e3f9.js +5 -0
  131. package/dist/nano-components/p-c3e8e3f9.js.map +1 -0
  132. package/dist/nano-components/{p-18e0d957.entry.js → p-c80336b2.entry.js} +2 -2
  133. package/dist/nano-components/p-cd1fd454.js +5 -0
  134. package/dist/nano-components/p-cd1fd454.js.map +1 -0
  135. package/dist/nano-components/p-cdfc507e.js +5 -0
  136. package/dist/nano-components/p-cdfc507e.js.map +1 -0
  137. package/dist/nano-components/{p-f0226ce2.js → p-d18c0a7a.js} +2 -2
  138. package/dist/nano-components/p-d18c0a7a.js.map +1 -0
  139. package/dist/nano-components/{p-fcd8df14.entry.js → p-f73f52ed.entry.js} +2 -2
  140. package/dist/types/components/tabs/tab-group.d.ts +1 -0
  141. package/docs-json.json +1 -1
  142. package/hydrate/index.js +44 -39
  143. package/package.json +3 -3
  144. package/dist/cjs/popover-088646b2.js.map +0 -1
  145. package/dist/cjs/table.worker-894a0418.js.map +0 -1
  146. package/dist/cjs/transitions-c985e9a9.js.map +0 -1
  147. package/dist/esm/popover-02e6714d.js.map +0 -1
  148. package/dist/esm/table.worker-ae46bca0.js.map +0 -1
  149. package/dist/esm/transitions-732f45a2.js.map +0 -1
  150. package/dist/nano-components/p-186e8559.js +0 -5
  151. package/dist/nano-components/p-186e8559.js.map +0 -1
  152. package/dist/nano-components/p-257432ff.js +0 -5
  153. package/dist/nano-components/p-257432ff.js.map +0 -1
  154. package/dist/nano-components/p-4d0c0873.entry.js +0 -5
  155. package/dist/nano-components/p-4d0c0873.entry.js.map +0 -1
  156. package/dist/nano-components/p-51bc8b59.js +0 -5
  157. package/dist/nano-components/p-51bc8b59.js.map +0 -1
  158. package/dist/nano-components/p-79c96564.entry.js +0 -5
  159. package/dist/nano-components/p-79c96564.entry.js.map +0 -1
  160. package/dist/nano-components/p-8a72d576.entry.js +0 -5
  161. package/dist/nano-components/p-8a72d576.entry.js.map +0 -1
  162. package/dist/nano-components/p-c876624c.entry.js +0 -5
  163. package/dist/nano-components/p-c876624c.entry.js.map +0 -1
  164. package/dist/nano-components/p-d7c34990.js +0 -5
  165. package/dist/nano-components/p-f0226ce2.js.map +0 -1
  166. package/dist/nano-components/p-f073ee84.entry.js +0 -5
  167. package/dist/nano-components/p-f073ee84.entry.js.map +0 -1
  168. /package/dist/nano-components/{p-587d3e3d.js.map → p-06c85b64.js.map} +0 -0
  169. /package/dist/nano-components/{p-a1ead0a7.entry.js.map → p-0b7c676c.entry.js.map} +0 -0
  170. /package/dist/nano-components/{p-a2b73d79.entry.js.map → p-0e4da739.entry.js.map} +0 -0
  171. /package/dist/nano-components/{p-6bdbcaa6.entry.js.map → p-191352c4.entry.js.map} +0 -0
  172. /package/dist/nano-components/{p-03f8b115.entry.js.map → p-24dcd788.entry.js.map} +0 -0
  173. /package/dist/nano-components/{p-4a79eafe.entry.js.map → p-359b7cd2.entry.js.map} +0 -0
  174. /package/dist/nano-components/{p-760d80d2.entry.js.map → p-51133e62.entry.js.map} +0 -0
  175. /package/dist/nano-components/{p-2a7d0c13.entry.js.map → p-5fc3035d.entry.js.map} +0 -0
  176. /package/dist/nano-components/{p-ac7953e0.entry.js.map → p-7670058b.entry.js.map} +0 -0
  177. /package/dist/nano-components/{p-04d5c9ea.entry.js.map → p-79fff4fd.entry.js.map} +0 -0
  178. /package/dist/nano-components/{p-800c4260.entry.js.map → p-9f60ff14.entry.js.map} +0 -0
  179. /package/dist/nano-components/{p-73312f19.entry.js.map → p-a225e976.entry.js.map} +0 -0
  180. /package/dist/nano-components/{p-d7c34990.js.map → p-b27b56d3.js.map} +0 -0
  181. /package/dist/nano-components/{p-18e0d957.entry.js.map → p-c80336b2.entry.js.map} +0 -0
  182. /package/dist/nano-components/{p-fcd8df14.entry.js.map → p-f73f52ed.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["async","clientFetch","url","_a","body","customConfig","__rest","headers","Accept","Cache","config","Object","assign","method","credentials","keepalive","mode","JSON","stringify","id","setTimeout","window","AbortController","controller","timeout","abort","signal","response","fetch","clearTimeout","ok","json","errorMessage","text","Error","globalNavCss","THRESHOLDBREAKS","about","main","login","search","icon","GlobalNav","constructor","hostRef","this","currSize","thresholdsGoingUp","THRESHOLDLIMIT","keys","length","autocompleteEles","currAIndex","isLoggedIn","myAccData","aboutNavItms","siteNavItms","loggedInNavItms","setResizingState","state","debounceSetResizingState","debounce","isResizing","onMenuBtnKeyDown","ev","key","modalOpen","menuClose","menuOpen","onMenuBtnClick","e","preventDefault","menuDiv","style","display","menuWrapDiv","focus","preventScroll","threshold","scrollHeight","innerHeight","document","overflow","menuFullScreen","overflowX","modalIsOpen","onMenuHidden","removeEventListener","activeElement","menuBtn","mainBarDiv","subMenuClose","target","closest","open","onUserBtnClick","userMenuOpen","onUserBtnKeyDown","onUserMenuBlur","relatedTarget","onSearchBtnClick","searchBarShown","searchbarShow","searchbarHide","onSearchBtnKeyDown","onSearchBarShown","searchBarEl","searchInput","setFocus","showAutocomplete","searchValInternal","addEventListener","onSearchBarHidden","height","onSearchInput","value","isSearchValSet","searchLoading","detail","type","onSearchChange","searchValue","autocompleteResults","nanoSearchReset","emit","currentIndex","currentSelectedIndex","processSearchResults","alogliaIndex","attributesToSnippet","hitsPerPage","filters","Math","floor","Date","now","console","error","scopeSearch","onSearchSubmit","showAutocompleteResults","algoliaSearchResults","queries","internalSearchIndeces","map","index","indexName","query","facets","algoliaClient","nanoSearchError","results","result","i","name","selected","domain","domains","allGroup","nanoSearchResult","client","apiKey","searchApiKey","appId","searchAppId","onSearchIndexChange","indexStr","selectedIndex","find","searchIndex","switchIndexSubmit","onAutocompleteBlur","hits","onAutocompleteInteract","testIndex","el","shadowRoot","found","ele","setActiveElement","click","assessSlottedContent","readTask","hasSiteSlot","querySelectorAll","hasLoggedinSlot","hasPromotionSlot","aboutSlotLen","iconSlotLen","mainSlotLen","overflowSlotLen","searchSlotLen","encodeURIComponent","location","href","protocol","host","bind","handleMyAccountData","myAccountData","user","links","myAccountUser","processMyAccLinks","processMyAccData","remoteDataReady","openClose","undefined","env","userProfileUrl","getMyAccountData","ssoDataUrl","import","foundIndex","changeInternalSearchVal","initAlgoliaClient","algoliasearch","addAlgoliaIndeces","addIndeces","searchIndeces","forEach","initIndex","thresholdChange","newThreshold","oldThreshold","ratioChange","intersectRatio","thresholdReady","menuItems","barItems","Array","from","push","writeTask","item","classList","add","remove","assessReady","ready","remoteReady","attachIO","isReady","nanoIsReady","setupAutocompleteBlur","closeSearchBar","secondaryMenuOpen","slotChange","thresholdClasses","classes","onWindowResize","innerWidth","secondaryOpen","secondaryMenu","stopPropagation","menuSelectedItems","menuContentDiv","minHeight","secondaryClose","force","composedPath","some","contains","requestAnimationFrame","displayTransition","userLinkPanel","className","show","widgetHeight","querySelector","toString","autocompleteSnippet","hit","lookFor","_snippetResult","prop","matchLevel","title","substring","resetHitFocus","autocompleteEle","setAttribute","io","root","IntersectionObserver","data","slice","intersectionRatio","observe","componentDidLoad","debounceResize","componentWillLoad","ComponentStore","init","disconnectedCallback","disconnect","mo","connectedCallback","getMyAccData","autocompleteList","content","scrollingUp","currentScopeHits","scopeChangeSuggestions","scopeSuggestReducer","total","currentSuggestReducer","reduce","scopeSuggestions","h","class","role","ref","a","tabindex","innerHTML","button","onClick","onMouseDown","hidden","onKeyDown","searchWidget","onSubmit","label","hideLabel","showInlineError","onNanoChange","mask","slot","placeholder","input","onNanoInput","onNanoFocus","render","isRtl","ownerDocument","dir","Host","join","resizing","div","part","activeMyAccountSections","includes","msgUrl","msgCount","cartUrl","cartCount","urls","ssoRedirect","onSlotchange","link","address","closeOnBlur","small_avatar_url","forgot_password","logout","quietMode","w","btn","showLogo","logoUrl","src","getAssetPath","alt","showSearch","_b","onTouchEnd","domainFor","origin","dm","multiResults","singleResult","match","indeces","api_key","app_id","cart","count","notifications","messages","area"],"sources":["./src/utils/fetch.ts","./src/components/global-nav/style/global-nav.scss?tag=nano-global-nav&encapsulation=shadow","./src/components/global-nav/global-nav.tsx"],"sourcesContent":["interface FetchInputConfig {\n body?: { [prop: string]: string };\n headers?: { [prop: string]: string };\n [prop: string]: any;\n}\n\nexport async function clientFetch(\n url: string,\n { body, ...customConfig }: FetchInputConfig = {}\n) {\n const headers: { [prop: string]: string } = {\n Accept: 'application/json, text/plain, */*',\n 'Access-Control-Allow-Origin': '*',\n 'Content-Type': 'application/json',\n Cache: 'no-cache',\n };\n const config: RequestInit = {\n method: body ? 'POST' : 'GET',\n credentials: 'include',\n keepalive: true,\n mode: 'cors',\n ...customConfig,\n headers: {\n ...headers,\n ...customConfig.headers,\n },\n };\n if (body) {\n config.body = JSON.stringify(body);\n }\n\n let id = setTimeout(() => {}, 0);\n if (window.AbortController) {\n const controller = new AbortController();\n const { timeout = 500 } = customConfig;\n id = setTimeout(() => controller.abort(), timeout);\n config.signal = controller.signal;\n }\n\n const response = await fetch(url, config);\n clearTimeout(id);\n\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.text();\n return new Error(errorMessage);\n }\n}\n","@use 'sass:map';\n@use 'sass:list';\n@use '../../../global/style/nano-theme/form' as nanoForm;\n\n// globals\n@import '../../../global/style/utilities/globals';\n@import '../../../global/style/nano-theme/base';\n@import '../../../global/style/nano-theme/colours';\n@import '../../../global/style/nano-theme/layers';\n\n// local\n@import 'setup';\n@import 'bar';\n@import 'burger';\n@import 'search';\n@import 'user';\n\n:host {\n /**\n * @prop --bar-vertical-padding: Defaults to 21px;\n * @prop --bar-item-spacing: Defaults to 16px;\n * @prop --bar-background: Defaults to white;\n * @prop --bar-text-color: Defaults to #196c82;\n * @prop --bar-color-shade: Defaults to rgb(19 89 111);\n * @prop --bar-color-tint: Defaults to rgb(19 89 111);\n * @prop --bar-color-focus: Defaults to #001a21;\n * @prop --bar-user-panel-bg: Defaults to #016d86;\n\n * @prop --menu-background: Defaults to #001a21;\n * @prop --menu-text-color: Defaults to white;\n * @prop --bar-dropdown-bg: Defaults to #196c82;\n * @prop --bar-dropdown-text: Defaults to white;\n * @prop --menu-user-profile-bg: Defaults to #001a21;\n * @prop --menu-user-panel-bg: Defaults to #193037;\n * @prop --menu-padding: Defaults to 12px;\n * @prop --menu-hint-color: Defaults to #33484d;\n * @prop --menu-title-text: Defaults to #{map.get($colors, lightblue)};\n * @prop --menu-icon-color: Defaults to white;\n\n * @prop --login-button-bg: Defaults to #17bb75;\n * @prop --login-button-text: Defaults to white;\n */\n\n --bar-vertical-padding: 21px;\n --bar-item-spacing: 13px;\n --bar-background: white;\n --bar-text-color: #196c82;\n --bar-color-shade: rgb(12 90 113);\n --bar-color-tint: rgb(19 89 111);\n --bar-color-focus: #99a3a6;\n --bar-user-panel-bg: #016d86;\n --bar-dropdown-bg: #196c82;\n --bar-dropdown-text: white;\n --menu-background: #001a21;\n --menu-text-color: white;\n --menu-user-profile-bg: #001a21;\n --menu-user-panel-bg: #193037;\n --menu-padding: 12px;\n --menu-hint-color: #33484d;\n --menu-title-text: #{map.get($colors, lightblue)};\n --menu-icon-color: white;\n --login-button-bg: #17bb75;\n --login-button-text: white;\n\n // not sure if this required any more.\n --padding: 12px;\n --padding-top: var(--padding);\n --padding-end: var(--padding);\n --padding-bottom: var(--padding);\n --padding-start: var(--padding);\n\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: 1.5;\n height: 100%;\n font-size: 0.9375em;\n font-size: clamp(0.77rem, 1vw, 0.9rem);\n\n input,\n select,\n button {\n font-family: inherit;\n appearance: none;\n font-size: inherit;\n }\n\n a,\n button {\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n box-shadow: #{nanoForm.$control-focus-style};\n }\n }\n}\n","import {\n Component,\n h,\n Host,\n Element,\n State,\n Watch,\n Event,\n EventEmitter,\n Prop,\n Listen,\n Build,\n getAssetPath,\n readTask,\n writeTask,\n Method,\n VNode,\n ComponentInterface,\n} from '@stencil/core';\nimport algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';\nimport { clientFetch } from '../../utils/fetch';\nimport { ComponentStore } from '../../utils/store/component-store';\nimport { debounce } from '../../utils/throttle';\nimport { displayTransition } from '../../utils/transitions';\nimport type { SearchClient as AlgoliaClient } from 'algoliasearch/lite';\nimport type {\n InputChangeEventDetail,\n SelectChangeEventDetail,\n AlgoliaResults,\n SearchIndex,\n MyAccountLink,\n AloliaSearchResultDetail,\n AlgoliaMultiResult,\n MyAccountUser,\n MyAccountData,\n NavItemEventDetail,\n AlgoliaResultHit,\n AlgoliaNetworkError,\n AlgoliaMultiResults,\n} from '../../interface';\n\n// the 'breakpoints' where different segments of content go into or out-of the burger / overflow menu\nconst THRESHOLDBREAKS = {\n about: 0,\n main: 1,\n login: 2,\n search: 3,\n icon: 4,\n};\n\n/**\n * Nanopore digital global navigation and search bar.\n * Incorporates MyAccount / SSO states (messages / cart / user name etc).\n * Incorporates Algolia search.\n *\n * @slot main - main nav items. Should be used with nano-nav-item's\n * @slot icon - nano-nav-item's displayed alongside icon links that come from MyAccount\n * @slot loggedin - nano-nav-item's to display when users are signed in, alongside links from from MyAccount (within the overflow menu panel).\n * @slot about - nano-nav-item's to display with about links that come from MyAccount\n * @slot site - nano-nav-item's to display with site links that come from MyAccount\n * @slot overflow - items to always display in the overflow menu\n * @slot search - when not using myaccount search OR show-search=\"false\" you can utilise the search slot\n * @slot promotion - a free area for any promotional content, displayed within the overflow menu panel\n * @slot logo - when show-logo=\"false\" you can utilise the logo slot\n * @slot - if using search functionality, place a `<nano-search-results />` element in the default slot\n *\n * @part burger - the overflow / burger ui element\n * @part burger-menu - the overflow / burger menu\n * @part burger-actions-bar - the top bar of the overflow / burger menu\n * @part burger-content - the main content area of the overflow / burger menu\n * @part sticker - the `nano-sticker` wrapping the main nav-bar\n * @part bars - the main wrapper around the `main-bar` and `search-bar` nav bars\n * @part main-bar - the main nav menu bar\n * @part logo-link - the link wrapping the logo\n * @part search-bar - the search bar that appears under the main nav menu bar\n */\n@Component({\n tag: 'nano-global-nav',\n styleUrl: 'style/global-nav.scss',\n shadow: true,\n assetsDirs: ['assets'],\n})\nexport class GlobalNav implements ComponentInterface {\n // position and dimension state\n private io: IntersectionObserver;\n private debounceResize: () => {};\n private debounceSetResizingState: () => {};\n private currSize: number = 0;\n private thresholdsGoingUp: boolean = false;\n private THRESHOLDLIMIT = Object.keys(THRESHOLDBREAKS).length;\n\n // menu\n private menuDiv: HTMLElement;\n private menuBtn: HTMLButtonElement;\n private menuWrapDiv: HTMLDivElement;\n private menuContentDiv: HTMLDivElement;\n private menuSelectedItems: NodeListOf<HTMLNanoNavItemElement>;\n\n // search\n private searchBarEl: HTMLDivElement;\n private searchInput: HTMLNanoInputElement;\n private algoliaClient: AlgoliaClient;\n private currentIndex: SearchIndex;\n private autocompleteResults: AlgoliaResults | null;\n private autocompleteEles: Array<HTMLAnchorElement | HTMLButtonElement> = [];\n private currAIndex: number = -1;\n private algoliaSearchResults: AlgoliaMultiResults | null;\n private scopeSearch: AlgoliaMultiResults | null;\n\n // general\n private mainBarDiv: HTMLElement;\n // private barsDiv: HTMLDivElement;\n // private siteContent: HTMLDivElement;\n private userLinkPanel: HTMLDivElement;\n private isLoggedIn: boolean = false;\n\n private myAccData: MyAccountData = null;\n\n // myaccount links\n private aboutNavItms: MyAccountLink[] = [];\n private siteNavItms: MyAccountLink[] = [];\n private loggedInNavItms: MyAccountLink[] = [];\n\n constructor() {\n this.assessSlottedContent = debounce(\n this.assessSlottedContent.bind(this),\n 10\n );\n }\n\n // user profile link\n @State() userProfileUrl: string = '';\n\n // has slot tests\n private mo?: MutationObserver;\n @State() hasLoggedinSlot: boolean = false;\n @State() hasSiteSlot: boolean = false;\n @State() hasPromotionSlot: boolean = false;\n\n // slot item number tests\n @State() aboutSlotLen: number = 0;\n @State() iconSlotLen: number = 0;\n @State() mainSlotLen: number = 0;\n @State() overflowSlotLen: number = 0;\n @State() searchSlotLen: number = 0;\n\n // threshold / sizing\n @State() thresholdReady: boolean = false;\n @State() remoteDataReady: boolean = false;\n @State() ready: boolean = false;\n @State() isResizing: boolean = false;\n @State() intersectRatio: number;\n @State() threshold: number = this.THRESHOLDLIMIT;\n\n // modals state\n @State() modalOpen: boolean = false;\n @State() modalIsOpen: boolean = false;\n @State() searchBarShown: boolean = false;\n @State() scrollingUp: boolean = true;\n @State() showAutocomplete: boolean = false;\n @State() secondaryMenuOpen: HTMLNanoNavItemElement = null;\n @State() userMenuOpen: boolean = false;\n @State() menuFullScreen: boolean = false;\n\n // search\n @State() searchLoading: boolean = false;\n @State() searchValInternal: string = '';\n @State() internalSearchIndeces: Array<SearchIndex> = [];\n\n @Element() private el: HTMLNanoGlobalNavElement;\n\n /**\n * Connect to local, dev, test or prod MyAccount\n * environments to retrieve global nav / sso data.\n * Alternatively, you can use the `ssoDataUrl` prop.\n */\n @Prop() env?: 'local' | 'dev' | 'test' | 'prod' = 'prod';\n\n /**\n * A base url to retrieve global nav / sso data.\n * `nav_bar_data.json` will be appended to this url.\n * An alternative to the pre-defined `env` urls\n */\n @Prop() ssoDataUrl?: string;\n\n /**\n * An alternative to both 'env' and 'ssoDataUrl'.\n * You can directly provide a JSON object of myaccount data.\n * (e.g. https://myaccount.nanoporetech.com/nav_bar_data.json)\n * This is useful for SSR\n */\n @Prop() myAccountData: MyAccountData | null;\n @Watch('myAccountData')\n handleMyAccountData() {\n if (!this.myAccountData) return;\n\n if (!this.myAccountData.user || !this.myAccountData.links) return;\n\n this.myAccData = this.myAccountData;\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n\n this.processMyAccLinks();\n this.processMyAccData();\n this.remoteDataReady = true;\n }\n\n /**\n * Where to take user after SSO login\n */\n @Prop() ssoRedirect: string = encodeURIComponent(window.location.href);\n\n /**\n * Whether to attempt to get global nav / sso data from MyAccount\n */\n @Prop() getMyAccountData: boolean = true;\n\n /**\n * Active MyAccount link sections. By default all will show.\n */\n @Prop() activeMyAccountSections: (\n | 'about'\n | 'loggedin'\n | 'sites'\n | 'icons'\n )[] = null;\n\n /**\n * Whether to show search functionality\n */\n @Prop() showSearch: boolean = true;\n\n /**\n * Whether to show Nanopore logo\n */\n @Prop() showLogo: boolean = true;\n\n /**\n * The link to put on the logo\n */\n @Prop() logoUrl: string = location.protocol + '//' + location.host;\n\n /**\n * An array of Algolia search indexes (and optional display names). Will be automatically populated from MyAccount\n */\n @Prop() searchIndeces: Array<SearchIndex> = [];\n\n /**\n * Logged in user details automatically populated from MyAccount\n */\n @Prop({ mutable: true }) myAccountUser: MyAccountUser = null;\n\n /**\n * An Algolia App ID key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchAppId: string;\n\n /**\n * An Algolia API Key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchApiKey: string;\n\n /**\n * A search value to passed to Algolia to programmatically get or to preload search results\n */\n @Prop({ mutable: true }) searchValue: string = '';\n\n /**\n * Algolia search index to programmatically set or to set an initial index\n */\n @Prop({ mutable: true }) searchIndex: string = 'all_prod_en';\n\n /**\n * MyAccount store cart count.\n */\n @Prop({ mutable: true }) cartCount: number = 0;\n\n /**\n * MyAccount un-read message count.\n */\n @Prop({ mutable: true }) msgCount: number = 0;\n\n /**\n * Url to the Nanopore store cart. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) cartUrl: string = null;\n\n /**\n * Url to the Nanopore message center. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) msgUrl: string = null;\n\n /**\n * Emitted when the global nav is ready.\n */\n @Event() nanoIsReady!: EventEmitter<void>;\n\n /**\n * Emitted when search results are successfully returned from Algolia.\n */\n @Event() nanoSearchResult!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Emitted when algolia returns an error.\n */\n @Event() nanoSearchError!: EventEmitter<AlgoliaNetworkError>;\n\n /**\n * Emitted when search field is cleared.\n */\n @Event() nanoSearchReset!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Submit the search form (a search value must be present)\n */\n @Method()\n async submitSearch() {\n this.onSearchSubmit();\n this.showAutocomplete = false;\n return;\n }\n\n /**\n * Manually open or close the overflow (burger) menu\n * @param openClose - optionally force open (true) or close (false)\n */\n @Method()\n async toggleOverflowMenu(openClose?: boolean) {\n if (openClose === true || (openClose === undefined && !this.modalIsOpen)) {\n this.menuOpen();\n } else {\n this.menuClose(null, true);\n }\n }\n\n @Watch('env')\n @Watch('ssoDataUrl')\n async getMyAccData() {\n if (!!this.myAccData) return;\n\n switch (this.env) {\n case 'prod':\n this.userProfileUrl = 'https://myaccount.nanoporetech.com/';\n case 'local':\n case 'dev':\n case 'test':\n default:\n this.userProfileUrl = 'https://myaccount.nanoporetech.com/';\n break;\n }\n\n if (!this.getMyAccountData || this.myAccData) {\n this.remoteDataReady = true;\n return;\n }\n\n let url = this.ssoDataUrl;\n\n if (!url) {\n switch (this.env) {\n case 'dev':\n url = 'https://myaccount-dev.nanoporetech.com/';\n break;\n case 'test':\n url = 'https://myaccount-test.nanoporetech.com/';\n break;\n default:\n url = 'https://myaccount.nanoporetech.com/';\n break;\n }\n }\n\n const config = { timeout: 5000 };\n\n try {\n if (this.env === 'local') {\n this.myAccData = (await import(\n `./assets/local-my-account.json`\n )) as unknown as MyAccountData;\n } else {\n this.myAccData = await clientFetch(url + 'nav_bar_data.json', config);\n }\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n this.processMyAccLinks();\n this.processMyAccData();\n setTimeout(() => (this.remoteDataReady = true), 300);\n } catch (e) {\n console.error(e);\n this.remoteDataReady = true;\n }\n }\n\n @Watch('searchIndex')\n currentSelectedIndex() {\n if (!this.internalSearchIndeces.length) {\n return;\n }\n if (!this.searchIndex) return this.internalSearchIndeces[0];\n\n const foundIndex = this.internalSearchIndeces.find(\n (index) => index.index === this.searchIndex\n );\n\n if (!foundIndex) {\n this.currentIndex = this.internalSearchIndeces[0];\n console.error('index not found');\n return;\n }\n\n this.currentIndex = foundIndex;\n return foundIndex;\n }\n\n @Watch('searchValInternal')\n changeInternalSearchVal() {\n if (this.searchValInternal !== this.searchValue)\n this.searchValue = this.searchValInternal;\n }\n\n @Watch('searchApiKey')\n @Watch('searchAppId')\n initAlgoliaClient() {\n if (!this.searchAppId || !this.searchApiKey) return;\n\n this.algoliaClient = algoliasearch(this.searchAppId, this.searchApiKey);\n this.addAlgoliaIndeces();\n }\n\n @Watch('searchIndeces')\n addIndeces() {\n this.internalSearchIndeces = [\n ...this.internalSearchIndeces,\n ...this.searchIndeces,\n ];\n }\n\n @Watch('internalSearchIndeces')\n addAlgoliaIndeces() {\n if (!this.algoliaClient || !this.internalSearchIndeces.length) return;\n\n this.internalSearchIndeces.forEach((searchIndex) => {\n searchIndex.alogliaIndex = this.algoliaClient.initIndex(\n searchIndex.index\n );\n });\n if (!this.searchIndex)\n this.searchIndex = this.internalSearchIndeces[0].index;\n }\n\n @Watch('threshold')\n thresholdChange(newThreshold, oldThreshold) {\n if (newThreshold > oldThreshold) {\n // we've resized to larger screen.\n this.thresholdsGoingUp = true;\n this.setResizingState(true);\n }\n }\n\n /**\n * Primary logic for resizing changes.\n * When content doesn't fit - we loop down through break points until it does\n */\n @Watch('intersectRatio')\n ratioChange() {\n if (this.intersectRatio < 1 && this.threshold > 0) {\n // content doesn't fit\n if (this.thresholdsGoingUp) this.setResizingState(true);\n this.threshold--;\n setTimeout(() => this.ratioChange(), 500);\n } else {\n this.thresholdReady = true;\n\n // content now fits so add / remove context classes\n // on nav-items depending on whether they're added to bar or burger.\n\n let menuItems: Array<Element>, barItems: Array<Element>;\n readTask(() => {\n menuItems = [\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"site\"]')),\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"overflow\"]')\n ),\n ];\n barItems = [];\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]')\n )\n );\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.login)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.main)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"main\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"main\"]')\n )\n );\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.about)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"about\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"about\"]')\n )\n );\n });\n\n writeTask(() => {\n menuItems.forEach((item) => {\n item.classList.add('nano-global-nav-menu');\n item.classList.remove('nano-global-nav-bar');\n });\n barItems.forEach((item) => {\n item.classList.remove('nano-global-nav-menu');\n item.classList.add('nano-global-nav-bar');\n });\n });\n }\n }\n\n @Watch('thresholdReady')\n @Watch('remoteDataReady')\n assessReady() {\n if (this.thresholdReady && this.remoteDataReady) {\n this.ready = true;\n }\n }\n\n @Watch('remoteDataReady')\n remoteReady() {\n this.attachIO();\n }\n\n @Watch('ready')\n isReady() {\n this.nanoIsReady.emit();\n }\n\n /**\n * Add / remove events when autocomplete results show / hide.\n */\n @Watch('showAutocomplete')\n setupAutocompleteBlur() {\n this.searchInput.clientWidth; // force reflow\n if (this.showAutocomplete) {\n this.el.shadowRoot.addEventListener('click', this.onAutocompleteBlur);\n } else {\n this.el.shadowRoot.removeEventListener('click', this.onAutocompleteBlur);\n }\n }\n\n @Watch('secondaryMenuOpen')\n closeSearchBar() {\n if (!!this.secondaryMenuOpen && this.searchBarShown) this.searchbarHide();\n }\n\n /**\n * As relevant slotted items change, reset resizing breakpoints\n */\n @Watch('aboutSlotLen')\n @Watch('iconSlotLen')\n @Watch('mainSlotLen')\n @Watch('overflowSlotLen')\n @Watch('searchSlotLen')\n slotChange() {\n this.threshold = this.THRESHOLDLIMIT;\n if (this.ready) this.ratioChange();\n }\n\n // General classes for visuals\n\n private thresholdClasses() {\n const classes = [];\n let i = 0;\n for (i; i < this.threshold; i++) classes.push('threshold-' + (i + 1));\n return classes;\n }\n\n /**\n * provides 'isResizing' - we use this to fade content out on 'breakpoint' increase\n * (when the screen size increases). Otherwise the stepping through of\n * breakpoints to calculate if content currently fits shows on screen (looks ugly)\n */\n private setResizingState = (state: boolean = false) => {\n if (typeof this.debounceSetResizingState === 'undefined') {\n this.debounceSetResizingState = debounce(this.setResizingState, 600);\n }\n if (state) {\n this.isResizing = true;\n this.debounceSetResizingState();\n } else {\n this.isResizing = false;\n this.thresholdsGoingUp = false;\n }\n };\n\n // Global DOM Events\n\n private onWindowResize() {\n if (\n this.threshold < this.THRESHOLDLIMIT &&\n window.innerWidth > this.currSize\n ) {\n this.threshold = this.THRESHOLDLIMIT;\n this.ratioChange();\n }\n this.currSize = window.innerWidth;\n this.searchBarShown = false;\n }\n\n // Burger / Overflow Menu\n\n // listen to nav-item secondary open / close events primarily for resizing the menu\n @Listen('nanoOpen')\n secondaryOpen(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = ev.target;\n\n if (!this.menuSelectedItems) {\n this.menuSelectedItems = this.el.querySelectorAll(\n 'nano-nav-item.selected'\n );\n this.menuSelectedItems.forEach((i) => i.classList.remove('selected'));\n this.menuSelectedItems.forEach((i) => (i.selected = false));\n }\n\n this.menuContentDiv.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n\n setTimeout(() => {\n if (this.secondaryMenuOpen === ev.target && this.menuSelectedItems) {\n this.secondaryMenuOpen = null;\n this.menuContentDiv.style.minHeight = '';\n this.menuSelectedItems.forEach((i) => i.classList.add('selected'));\n this.menuSelectedItems.forEach((i) => (i.selected = true));\n this.menuSelectedItems = null;\n }\n }, 300);\n }\n\n private onMenuBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.modalOpen ? this.menuClose(ev, true) : this.menuOpen();\n break;\n }\n };\n\n private onMenuBtnClick = (ev: MouseEvent) => {\n this.menuClose(ev, true);\n };\n\n private menuOpen = (e?: MouseEvent) => {\n if (e) e.preventDefault();\n\n this.menuDiv.style.display = 'block';\n // need to open menu in stages\n // wait for re-flow after changing display\n // wait for repaint after animate, then focus\n\n this.modalOpen = true;\n this.menuDiv.clientWidth; // force reflow\n\n this.menuWrapDiv.focus({ preventScroll: true });\n if (\n this.threshold < 2 ||\n this.menuWrapDiv.scrollHeight > window.innerHeight\n ) {\n document.body.style.overflow = 'hidden';\n this.menuFullScreen = true;\n } else document.body.style.overflowX = 'hidden';\n\n setTimeout(() => (this.modalIsOpen = true), 300);\n };\n\n private onMenuHidden = () => {\n this.menuDiv.removeEventListener('transitionend', this.onMenuHidden);\n\n document.body.style.overflow = '';\n this.menuDiv.style.display = 'none';\n this.modalIsOpen = false;\n this.menuFullScreen = false;\n\n setTimeout(() => {\n if (document.activeElement === document.body && this.menuBtn)\n this.mainBarDiv.focus({ preventScroll: true });\n }, 50);\n };\n\n @Listen('click', { target: 'body' })\n menuClose(\n ev?: FocusEvent | MouseEvent | KeyboardEvent | TouchEvent,\n force: boolean = false\n ) {\n if (!this.modalIsOpen) return;\n\n if (force) {\n this.modalOpen = false;\n this.menuDiv.addEventListener('transitionend', this.onMenuHidden);\n return;\n }\n\n if (\n !ev\n .composedPath()\n .some(\n (el) =>\n el === this.menuContentDiv ||\n (el as Element).classList?.contains('gn-menu_actions')\n )\n ) {\n requestAnimationFrame(() => {\n if (!!this.secondaryMenuOpen) return;\n\n this.modalOpen = false;\n this.menuDiv.addEventListener('transitionend', this.onMenuHidden);\n });\n }\n }\n\n private subMenuClose = (ev?: MouseEvent) => {\n ev.preventDefault();\n (ev.target as HTMLNanoNavItemElement).closest('nano-nav-item').open = false;\n };\n\n // User profile menu\n\n private onUserBtnClick = (ev: MouseEvent) => {\n ev.preventDefault();\n this.userMenuOpen = !this.userMenuOpen;\n };\n\n private onUserBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.userMenuOpen = !this.userMenuOpen;\n break;\n }\n };\n\n private onUserMenuBlur = (ev: FocusEvent) => {\n if (!ev.relatedTarget) {\n this.userMenuOpen = false;\n return;\n }\n if (!!(ev.relatedTarget as HTMLElement).closest('.user-links-panel'))\n return false;\n this.userMenuOpen = false;\n };\n\n @Watch('userMenuOpen')\n async handleUserMenu() {\n await displayTransition(this.userLinkPanel, {\n className: 'show',\n show: this.userMenuOpen,\n });\n if (this.userMenuOpen) {\n this.userLinkPanel.focus();\n this.userLinkPanel.addEventListener('focusout', this.onUserMenuBlur);\n } else {\n this.userLinkPanel.removeEventListener('focusout', this.onUserMenuBlur);\n this.el.focus();\n }\n }\n\n // Search bar (smaller screens / mobile)\n\n private onSearchBtnClick = (ev: MouseEvent) => {\n ev.preventDefault();\n if (!this.searchBarShown) this.searchbarShow();\n else this.searchbarHide();\n };\n\n private onSearchBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.searchBarShown ? this.searchbarHide() : this.searchbarShow();\n break;\n }\n };\n\n private searchbarShow() {\n this.searchBarShown = true;\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarShown);\n this.searchBarEl.style.display = 'block';\n\n setTimeout(() => {\n const widgetHeight =\n Math.floor(\n this.searchBarEl.querySelector('.search-widget').scrollHeight\n ) - 1;\n this.searchBarEl.style.height = widgetHeight.toString() + 'px';\n }, 50);\n }\n\n private onSearchBarShown = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarShown\n );\n if (this.searchInput) this.searchInput.setFocus();\n this.searchBarEl.style.overflow = 'visible';\n };\n\n private searchbarHide = (ev?: FocusEvent) => {\n if (\n ev &&\n ev.relatedTarget &&\n (ev.relatedTarget as HTMLElement).closest('#global-nav-search-bar')\n )\n return;\n\n this.showAutocomplete = false;\n if (this.searchValInternal.length && ev) return;\n\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarHidden);\n this.searchBarEl.style.overflow = 'hidden';\n this.searchBarEl.style.height = '0px';\n };\n\n private onSearchBarHidden = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarHidden\n );\n this.searchBarEl.style.display = 'none';\n this.searchBarShown = false;\n };\n\n // Algolia search\n\n private autocompleteSnippet(hit: AlgoliaResultHit) {\n const lookFor = ['title']; // , 'body'\n if (hit._snippetResult) {\n const found = lookFor.find(\n (prop) =>\n hit._snippetResult[prop] &&\n hit._snippetResult[prop].matchLevel !== 'none'\n );\n\n if (found) {\n if (found !== 'title')\n return (\n (hit.title.length > 15\n ? hit.title.substring(0, 15) + ' ...'\n : hit.title) +\n ' ' +\n hit._snippetResult[found].value\n );\n else return hit._snippetResult['title'].value;\n }\n }\n return hit.title;\n }\n\n private onSearchInput = (ev: CustomEvent<InputEvent>) => {\n this.searchValInternal = this.searchInput.value;\n\n if (!this.isSearchValSet()) {\n this.searchLoading = false;\n return;\n }\n\n if (ev.detail.type === 'input') {\n this.showAutocomplete = false;\n this.searchLoading = true;\n }\n };\n\n private onSearchChange = async (ev?: CustomEvent<InputChangeEventDetail>) => {\n this.searchValInternal = this.searchValue = ev\n ? ev.detail.value\n : this.searchValInternal;\n this.showAutocomplete = false;\n this.autocompleteResults = null;\n\n if (!this.isSearchValSet()) {\n if (!this.searchValInternal.length) {\n this.nanoSearchReset.emit();\n }\n this.searchLoading = false;\n return;\n }\n if (!this.currentIndex) this.currentSelectedIndex();\n\n try {\n this.autocompleteResults = this.processSearchResults(\n (await this.currentIndex.alogliaIndex.search(this.searchValInternal, {\n attributesToSnippet: ['body:5', 'title:8'],\n hitsPerPage: 5,\n filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years\n })) as any\n ) as AlgoliaResults;\n } catch (e) {\n console.error(e);\n }\n\n this.scopeSearch = null;\n this.scopeSearch = await this.onSearchSubmit(null, false);\n\n this.searchLoading = false;\n this.showAutocompleteResults();\n };\n\n private onSearchSubmit = async (ev?, emit: boolean = true) => {\n if (ev) ev.preventDefault();\n if (!this.isSearchValSet()) return;\n this.searchLoading = true;\n this.algoliaSearchResults = null;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n\n const queries = this.internalSearchIndeces.map((index) => {\n return {\n indexName: index.index,\n query: this.searchValInternal,\n facets: index.filters,\n hitsPerPage: 10,\n filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years\n };\n });\n\n try {\n this.algoliaSearchResults = this.processSearchResults(\n (await this.algoliaClient.search(queries)) as any\n ) as AlgoliaMultiResults;\n } catch (e) {\n this.nanoSearchError.emit(e as AlgoliaNetworkError);\n }\n this.searchLoading = false;\n if (!this.algoliaSearchResults) return;\n\n this.algoliaSearchResults.results.map((result, i) => {\n result.indexName = this.internalSearchIndeces[i].name;\n result.selected =\n this.currentIndex.name === this.internalSearchIndeces[i].name;\n result.domain = this.currentIndex.domain || null;\n result.domains = this.myAccData.domains || null;\n result.allGroup = !!this.internalSearchIndeces[i].allGroup;\n result.filters = this.internalSearchIndeces[i].filters;\n });\n\n if (emit) {\n this.nanoSearchResult.emit({\n results: this.algoliaSearchResults.results,\n client: { apiKey: this.searchApiKey, appId: this.searchAppId },\n });\n this.showAutocomplete = false;\n }\n return this.algoliaSearchResults;\n };\n\n private onSearchIndexChange = async (\n index: CustomEvent<SelectChangeEventDetail> | string\n ) => {\n const ev = index as CustomEvent<SelectChangeEventDetail>;\n let indexStr = index as string;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n\n if (ev.detail && ev.detail.value.length)\n indexStr = ev.detail.value as string;\n if (!indexStr || !indexStr.length) return;\n if (this.currentIndex.index === indexStr) return;\n\n const selectedIndex = this.internalSearchIndeces.find(\n (index) => index.index === indexStr\n );\n if (!selectedIndex || !selectedIndex.alogliaIndex) return;\n\n this.searchIndex = selectedIndex.index;\n if (this.isSearchValSet()) await this.onSearchChange();\n };\n\n private isSearchValSet() {\n if (this.searchValInternal.length < 3) return false;\n return true;\n }\n\n private switchIndexSubmit = async (index: string) => {\n if (this.isSearchValSet()) {\n await this.onSearchIndexChange(index);\n this.onSearchSubmit();\n } else this.onSearchIndexChange(index);\n };\n\n // Autocomplete\n\n @Watch('showAutocomplete')\n resetHitFocus() {\n this.currAIndex = -1;\n }\n\n private onAutocompleteBlur = (ev: MouseEvent) => {\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n if (ev && ev.target && (ev.target as HTMLElement).closest('.search-widget'))\n return;\n this.showAutocomplete = false;\n };\n\n private showAutocompleteResults = () => {\n if (!this.autocompleteResults || !this.autocompleteResults.hits) return;\n this.showAutocomplete = true;\n };\n\n private setActiveElement(\n autocompleteEle: HTMLAnchorElement | HTMLButtonElement\n ) {\n this.autocompleteEles.map((ele) =>\n ele.setAttribute('aria-selected', 'false')\n );\n autocompleteEle.focus({ preventScroll: true });\n autocompleteEle.setAttribute('aria-selected', 'true');\n }\n\n private onAutocompleteInteract = (ev: KeyboardEvent) => {\n // list open, navigate items with arrows\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n let testIndex = this.currAIndex;\n\n switch (ev.key) {\n case 'Tab':\n setTimeout(() => {\n if (\n !this.el.shadowRoot.activeElement ||\n !this.el.shadowRoot.activeElement.closest('.search-widget')\n ) {\n this.showAutocomplete = false;\n return;\n } else {\n const found = this.autocompleteEles.find((ele, i) => {\n if (ele === this.el.shadowRoot.activeElement) {\n this.currAIndex = i;\n return true;\n }\n });\n if (found) this.setActiveElement(found);\n else this.currAIndex = -1;\n }\n });\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n if (ev.key === 'ArrowDown') testIndex++;\n else if (ev.key === 'ArrowUp') testIndex--;\n\n const found = this.autocompleteEles[testIndex];\n if (\n found ||\n testIndex < 0 ||\n testIndex > this.autocompleteEles.length - 1\n )\n ev.preventDefault();\n this.searchInput.clientWidth; // force reflow\n\n if (found) {\n this.setActiveElement(found);\n this.currAIndex = testIndex;\n } else if (testIndex < 0) {\n this.searchInput.setFocus();\n this.currAIndex = -1;\n }\n break;\n case 'Enter':\n case ' ':\n if (this.autocompleteEles[this.currAIndex]) {\n this.autocompleteEles[this.currAIndex].click();\n }\n break;\n }\n };\n\n // Various.\n\n /**\n * Assesses what content is present in which slots\n */\n private assessSlottedContent = () => {\n readTask(() => {\n this.hasSiteSlot = !!this.el.querySelectorAll('[slot=\"site\"]').length;\n this.hasLoggedinSlot =\n !!this.el.querySelectorAll('[slot=\"loggedin\"]').length;\n this.hasPromotionSlot =\n !!this.el.querySelectorAll('[slot=\"promotion\"]').length;\n\n this.aboutSlotLen = this.el.querySelectorAll('[slot=\"about\"]').length;\n this.iconSlotLen = this.el.querySelectorAll('[slot=\"icon\"]').length;\n this.mainSlotLen = this.el.querySelectorAll('[slot=\"main\"]').length;\n this.overflowSlotLen =\n this.el.querySelectorAll('[slot=\"overflow\"]').length;\n this.searchSlotLen = this.el.querySelectorAll('[slot=\"search\"]').length;\n });\n };\n\n /**\n * Attach the IntersectionObserver - from which all threshold / breakpoint logic hinges\n */\n private attachIO() {\n if (this.io) return;\n const root = this.el.shadowRoot.querySelector('.global-nav .main-bar');\n if (\n Build.isBrowser &&\n typeof window !== 'undefined' &&\n (window as any).IntersectionObserver &&\n !!root\n ) {\n const io = (this.io = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n this.intersectRatio = data.slice(-1)[0].intersectionRatio;\n },\n { root, threshold: 1 }\n ));\n io.observe(root.querySelector('.measure-ele'));\n }\n }\n\n // Stencil Lifecycle / Rendering\n\n componentDidLoad() {\n if (Build.isBrowser) {\n this.debounceResize = debounce(this.onWindowResize.bind(this), 300);\n\n window.addEventListener('resize', this.debounceResize);\n this.currSize = window.innerWidth;\n }\n\n this.initAlgoliaClient();\n this.addAlgoliaIndeces();\n if (this.remoteDataReady) this.attachIO();\n }\n\n componentWillLoad() {\n ComponentStore.init(\n this,\n ['searchIndex', 'searchValue'],\n 'url-hash',\n 'gns'\n );\n\n this.assessSlottedContent();\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n if (this.mo) {\n this.mo.disconnect();\n this.mo = undefined;\n }\n if (Build.isBrowser)\n window.removeEventListener('resize', this.debounceResize);\n }\n\n connectedCallback() {\n this.handleMyAccountData();\n this.getMyAccData();\n }\n\n // Render output\n\n private autocompleteList(): VNode {\n let content;\n if (this.showAutocomplete && this.scrollingUp) {\n let currentScopeHits = 0;\n let scopeChangeSuggestions = 0;\n\n const scopeSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index !== this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n const currentSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index === this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n\n if (this.scopeSearch) {\n scopeChangeSuggestions = this.scopeSearch.results.reduce(\n scopeSuggestReducer,\n 0\n );\n currentScopeHits = this.scopeSearch.results.reduce(\n currentSuggestReducer,\n 0\n );\n }\n\n if (\n (this.autocompleteResults && this.autocompleteResults.hits.length) ||\n (scopeChangeSuggestions && !currentScopeHits)\n ) {\n let scopeSuggestions = 0;\n\n content = (\n <div>\n {!currentScopeHits && (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found in{' '}\n <strong>{this.currentIndex.name}</strong>. Try another phrase.\n </div>\n )}\n {this.autocompleteResults && [\n this.autocompleteResults.hits.map((hit, i) => {\n return (\n <a\n role=\"option\"\n ref={(a) => this.autocompleteEles.push(a)}\n tabindex=\"-1\"\n id={'autocomplete-hit-' + i}\n href={hit.url}\n class=\"search-autocomplete-hit\"\n innerHTML={this.autocompleteSnippet(hit)}\n ></a>\n );\n }),\n ]}\n {(!currentScopeHits || this.currentIndex.allGroup) &&\n this.scopeSearch &&\n this.scopeSearch.results && [\n this.scopeSearch.results.map((result, i) => {\n if (\n !result.hits.length ||\n result.index === this.currentIndex.index ||\n scopeSuggestions > 1\n )\n return;\n scopeSuggestions++;\n return (\n <button\n role=\"option\"\n ref={(button) => this.autocompleteEles.push(button)}\n tabindex=\"-1\"\n id={'autocomplete-scope-' + i}\n class=\"search-autocomplete-hit\"\n onClick={() => this.switchIndexSubmit(result.index)}\n onMouseDown={() => this.switchIndexSubmit(result.index)}\n >\n \"{this.searchValInternal}\"{' '}\n <div class=\"search-autocomplete-hit-scope\">\n in {result.indexName}\n </div>\n </button>\n );\n }),\n ]}\n {!!currentScopeHits && (\n <div class=\"search-autocomplete-foot\">\n <button\n role=\"option\"\n class=\"search-autocomplete-submit\"\n ref={(button) => this.autocompleteEles.push(button)}\n id={'autocomplete-foot'}\n onClick={this.onSearchSubmit}\n onMouseDown={this.onSearchSubmit}\n >\n View all results\n </button>\n </div>\n )}\n </div>\n );\n } else if (!currentScopeHits) {\n content = (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found. Try\n another phrase.\n </div>\n );\n }\n }\n\n return (\n <div\n class=\"search-autocomplete\"\n role=\"listbox\"\n id=\"autocomplete-results\"\n aria-expanded={this.showAutocomplete ? 'true' : 'false'}\n hidden={!this.showAutocomplete}\n onKeyDown={this.onAutocompleteInteract}\n >\n {content}\n </div>\n );\n }\n\n private searchWidget(): VNode[] {\n return [\n <form\n class=\"search-inputs\"\n onSubmit={this.onSearchSubmit}\n id=\"global-nav-search\"\n >\n <nano-select\n class=\"search-input\"\n label=\"Which area of content would you like to search?\"\n hideLabel={true}\n showInlineError={false}\n value={this.searchIndex}\n onNanoChange={this.onSearchIndexChange}\n mask={true}\n >\n {this.internalSearchIndeces.map((index) => {\n return (\n <nano-option\n selected={index.index === this.searchIndex}\n value={index.index}\n >\n {index.name || index.index}\n </nano-option>\n );\n })}\n <nano-icon\n name=\"light/chevron-down\"\n class=\"select-input__arrow\"\n slot=\"down-arrow\"\n />\n </nano-select>\n <nano-input\n class=\"search-input\"\n label=\"What would you like to search for?\"\n aria-label=\"What would you like to search for\"\n hideLabel={true}\n showInlineError={false}\n clear-input\n placeholder=\"Search Nanopore\"\n type=\"text\"\n ref={(input) => (this.searchInput = input)}\n onNanoChange={this.onSearchChange}\n onNanoInput={this.onSearchInput}\n onKeyDown={this.onAutocompleteInteract}\n debounce={500}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n this.autocompleteEles[this.currAIndex]\n ? this.autocompleteEles[this.currAIndex].id\n : false\n }\n aria-controls=\"autocomplete-results\"\n onNanoFocus={this.showAutocompleteResults}\n value={this.searchValue}\n role=\"textbox\"\n >\n <button\n class={{\n 'search-icon': true,\n 'search-icon--search': true,\n 'search-icon--show': !!this.searchValue && !this.searchLoading,\n }}\n slot=\"end\"\n onMouseDown={(e) => {\n this.searchValInternal = this.searchInput.value;\n this.onSearchSubmit(e, true);\n }}\n >\n <nano-icon name=\"light/search\"></nano-icon>\n </button>\n <span\n class={{\n 'search-icon': true,\n 'search-icon--loader': true,\n 'search-icon--show': this.searchLoading,\n }}\n slot=\"end\"\n >\n <nano-icon name=\"light/spinner-third\"></nano-icon>\n </span>\n </nano-input>\n <input type=\"submit\" />\n </form>,\n ];\n }\n\n render() {\n this.autocompleteEles = [];\n const isRtl = (this.el.ownerDocument as Document).dir === 'rtl';\n\n const searchWidget = this.searchWidget();\n searchWidget.push(this.autocompleteList());\n\n return (\n <Host\n class={{\n [this.thresholdClasses().join(' ')]: true,\n ready: this.ready,\n 'search-bar-shown': this.searchBarShown && this.scrollingUp,\n 'search-auto-complete-shown':\n this.showAutocomplete && this.scrollingUp,\n 'modal-open': this.modalIsOpen,\n resizing: this.isResizing,\n }}\n dir={isRtl ? 'rtl' : null}\n >\n <div\n class={{\n 'global-nav': true,\n 'scrolling-down': !this.scrollingUp,\n }}\n >\n {/* START BURGER / OVERFLOW MENU */}\n <nav\n id=\"global-nav-menu\"\n class={{\n 'gn-menu': true,\n open: this.modalOpen,\n 'has-promotion': this.hasPromotionSlot,\n 'menu-full-screen': this.menuFullScreen,\n 'secondary-open': !!this.secondaryMenuOpen,\n }}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n ref={(div) => (this.menuDiv = div)}\n part=\"burger\"\n >\n <div\n class=\"gn-menu_wrap\"\n ref={(div) => (this.menuWrapDiv = div)}\n tabindex=\"-1\"\n part=\"burger-menu\"\n >\n <div class=\"gn-menu_actions\" part=\"burger-actions-bar\">\n <button\n class=\"menu-btn icon-btn icon-btn\"\n onMouseDown={this.onMenuBtnClick}\n onKeyDown={this.onMenuBtnKeyDown}\n >\n {this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login && (\n <nano-icon\n name=\"light/times\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n {this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login && (\n <nano-icon\n name=\"light/bars\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n </button>\n\n {this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon name=\"light/bell\"></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon name=\"light/shopping-cart\"></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {this.myAccData && this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register{' '}\n <nano-icon name=\"solid/chevron-right\"></nano-icon>\n </a>\n )}\n </div>\n\n <div\n class=\"content-wrap\"\n ref={(div) => (this.menuContentDiv = div)}\n >\n <div class=\"content\" part=\"burger-content\">\n <nav class=\"nav-links nav-links--main\" role=\"menu\">\n <slot\n name=\"overflow\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.main &&\n !!this.mainSlotLen && (\n <slot\n name=\"main\"\n onSlotchange={this.assessSlottedContent}\n />\n )}\n </nav>\n\n {/* ABOUT AND SITE MENU IN BURGER */}\n {(((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.hasSiteSlot) ||\n !!this.siteNavItms.length) && (\n <div>\n {/* SITES MENU (Always in burger) */}\n {(this.hasSiteSlot || !!this.siteNavItms.length) && [\n (this.threshold >= this.THRESHOLDLIMIT - 2 ||\n this.mainSlotLen < 2) &&\n this.overflowSlotLen < 2 && (\n <div class=\"nav-links-wrap\">\n <h4 class=\"nav-links_title nav-links_title--sites\">\n Sites\n </h4>\n <nav\n class=\"nav-links nav-links--sub nav-links--sites\"\n aria-label=\"Different company site links\"\n >\n <slot\n name=\"site\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </nav>\n </div>\n ),\n ((this.threshold < this.THRESHOLDLIMIT - 2 &&\n this.mainSlotLen >= 2) ||\n this.overflowSlotLen >= 2) && (\n <nav\n class=\"nav-links\"\n aria-label=\"Different company site links\"\n >\n <nano-nav-item\n class=\"nano-global-nav nano-global-nav-menu\"\n closeOnBlur={false}\n >\n Sites\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n ></nano-icon>\n Sites\n </button>\n <div class=\"content--sub\">\n <slot\n name=\"site\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </div>\n </div>\n </div>\n </nano-nav-item>\n </nav>\n ),\n ]}\n </div>\n )}\n </div>\n\n {/* USER PROFILE IN BURGER */}\n {this.isLoggedIn &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login &&\n (this.loggedInNavItms.length || this.hasLoggedinSlot) && (\n <nav class=\"nav-links\" aria-label=\"Your user account links\">\n <nano-nav-item\n class=\"nano-global-nav user-nav nano-global-nav-menu\"\n closeOnBlur={false}\n >\n {this.myAccountUser.name}\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n ></nano-icon>\n {this.myAccountUser.name}\n </button>\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"content--sub\">\n <slot\n name=\"loggedin\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.loggedInNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n </nano-nav-item>\n </div>\n </div>\n </div>\n </nano-nav-item>\n </nav>\n )}\n\n <slot\n name=\"promotion\"\n onSlotchange={this.assessSlottedContent}\n />\n\n {this.myAccData && this.myAccData.urls.logout && (\n <div class=\"login-btn logout-btn\">\n <a href={this.myAccData.urls.logout + this.ssoRedirect}>\n Logout\n </a>\n </div>\n )}\n </div>\n </div>\n </nav>\n {/* END BURGER / OVERFLOW MENU */}\n\n {/* START MAIN NAV BAR */}\n <div class=\"sticker-trigger\" />\n <nano-sticker\n auto-resize=\"false\"\n break-point-max=\"800\"\n quietMode={{ h: 600, w: 800 }}\n part=\"sticker\"\n >\n <div class=\"bars\" part=\"bars\">\n <nav\n part=\"main-bar\"\n class=\"main-bar\"\n aria-label=\"Main site navigation\"\n tabindex=\"-1\"\n ref={(div) => (this.mainBarDiv = div)}\n >\n {(this.hasPromotionSlot ||\n !!this.overflowSlotLen ||\n ((this.myAccData || !!this.iconSlotLen) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon) ||\n (this.isLoggedIn &&\n (!!this.loggedInNavItms.length || this.hasLoggedinSlot) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login) ||\n (!!this.mainSlotLen &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.main) ||\n ((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.about) ||\n this.hasSiteSlot ||\n !!this.siteNavItms.length) && (\n <button\n class=\"menu-btn icon-btn\"\n onMouseDown={this.menuOpen}\n onKeyDown={this.onMenuBtnKeyDown}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n aria-controls=\"global-nav-menu\"\n ref={(btn) => (this.menuBtn = btn)}\n >\n <nano-icon\n name=\"light/bars\"\n aria-label=\"open menu\"\n ></nano-icon>\n </button>\n )}\n\n {this.showLogo && (\n <a href={this.logoUrl} class=\"logo-link\" part=\"logo-link\">\n <img\n src={getAssetPath(`../nano-assets/ont-logo.svg`)}\n alt=\"Oxford Nanopore Technologies Logo\"\n class=\"logo\"\n />\n </a>\n )}\n {!this.showLogo && (\n <div class=\"logo-link\">\n <slot\n name=\"logo\"\n onSlotchange={this.assessSlottedContent}\n />\n </div>\n )}\n\n <div class=\"nav-links nav-links--main\">\n <slot name=\"main\" onSlotchange={this.assessSlottedContent} />\n </div>\n\n {/* search widget displayed in the bar (there is enough space to show it) */}\n {this.mainSlotLen === 0 &&\n this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.search && [\n this.showSearch && !!this.internalSearchIndeces.length && (\n <div\n class=\"search-widget\"\n role=\"combobox\"\n aria-owns=\"autocomplete-results\"\n aria-expanded={\n this.showAutocomplete && this.autocompleteResults\n ? 'true'\n : 'false'\n }\n >\n {searchWidget}\n </div>\n ),\n (!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && (\n <slot\n name=\"search\"\n onSlotchange={this.assessSlottedContent}\n />\n ),\n ]}\n\n {/* Bar Icon buttons */}\n\n {/* Bar search icon button (when not enough to show search in bar) */}\n {(this.mainSlotLen > 0 ||\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.search) &&\n ((this.showSearch && !!this.internalSearchIndeces.length) ||\n !!this.searchSlotLen) && (\n <button\n class={{\n 'icon-btn': true,\n 'search-btn': true,\n 'search-btn--open': this.searchBarShown,\n }}\n aria-controls=\"global-nav-search-bar\"\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n onMouseDown={this.onSearchBtnClick}\n onKeyDown={this.onSearchBtnKeyDown}\n >\n <nano-icon name=\"light/search\"></nano-icon>\n </button>\n )}\n\n {/* Bar cart and notifications */}\n {this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon name=\"light/bell\"></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && !!this.cartCount && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon name=\"light/shopping-cart\"></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {/* Bar about links */}\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.about && (\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"About the company. Links\"\n role=\"menu\"\n >\n <slot\n name=\"about\"\n onSlotchange={this.assessSlottedContent}\n />\n {!!this.aboutNavItms.length && (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-bar\">\n <a\n href={this.aboutNavItms[0].address}\n target={this.aboutNavItms[0].target}\n >\n {this.aboutNavItms[0].title}\n </a>\n </nano-nav-item>\n )}\n </nav>\n )}\n\n {/* Bar login button / User panel */}\n {this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('loggedin')) &&\n this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login && [\n this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register\n </a>\n ),\n this.myAccountUser && (\n <div class=\"user-links\">\n <button\n class={{\n 'icon-btn': true,\n 'user-links-btn': true,\n open: this.userMenuOpen,\n }}\n onMouseDown={this.onUserBtnClick}\n onKeyDown={this.onUserBtnKeyDown}\n >\n {' '}\n {this.myAccountUser.name}\n <nano-icon name=\"solid/caret-down\"></nano-icon>\n </button>\n <div\n class=\"user-links-panel\"\n tabindex=\"-1\"\n ref={(div) => (this.userLinkPanel = div)}\n >\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"user-links-panel-content\">\n {this.loggedInNavItms.map((link) => {\n return (\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n );\n })}\n </div>\n <div class=\"user-links-panel-foot\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n <a\n href={\n this.myAccData.urls.logout + this.ssoRedirect\n }\n >\n Logout\n </a>\n </div>\n </div>\n </div>\n ),\n ]}\n <span class=\"measure-ele\"></span>\n </nav>\n\n {/* Search widget shown in bar underneath main bar when there is not enough space */}\n {(this.mainSlotLen > 0 ||\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.search) && (\n <div\n id=\"global-nav-search-bar\"\n class={{\n 'search-bar': true,\n show: this.searchBarShown,\n }}\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n role=\"region\"\n tabindex=\"-1\"\n ref={(div) => (this.searchBarEl = div)}\n part=\"search-bar\"\n >\n <div class=\"search-widget\">\n {this.showSearch && !!this.internalSearchIndeces.length && (\n <div>{searchWidget}</div>\n )}\n {(!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && (\n <slot\n name=\"search\"\n onSlotchange={this.assessSlottedContent}\n />\n )}\n </div>\n </div>\n )}\n </div>\n </nano-sticker>\n {/* END MAIN NAV BAR */}\n\n {(this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.login ||\n this.menuFullScreen) && (\n <div\n class={{\n mask: true,\n open: this.modalOpen,\n }}\n onClick={this.menuClose}\n onTouchEnd={this.menuClose}\n ></div>\n )}\n </div>\n <div class=\"site-content\">\n <slot />\n </div>\n </Host>\n );\n }\n\n // Data processing\n\n private domainFor(origin: string): string {\n if (!this.myAccData) return '';\n const domain = this.myAccData.domains.find((dm) => dm.origin === origin);\n return domain ? domain.domain : '';\n }\n\n private processSearchResults(results: AlgoliaMultiResults | AlgoliaResults) {\n const multiResults = results as AlgoliaMultiResults;\n const singleResult = results as AlgoliaResults;\n\n if (multiResults.results) {\n multiResults.results.forEach((result, i) => {\n multiResults.results[i] = this.processSearchResults(\n result\n ) as AlgoliaResults;\n });\n return multiResults;\n } else {\n singleResult.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url =\n location.protocol + '//' + this.domainFor(hit.origin) + hit.url;\n });\n return singleResult;\n }\n }\n\n private processMyAccData() {\n if (!this.myAccData || !this.myAccData.search.indeces.length) return;\n\n if (this.myAccData.search.api_key)\n this.searchApiKey = this.myAccData.search.api_key;\n if (this.myAccData.search.app_id)\n this.searchAppId = this.myAccData.search.app_id;\n\n if (this.myAccData.cart.count) this.cartCount = this.myAccData.cart.count;\n if (this.myAccData.notifications.count)\n this.msgCount = this.myAccData.notifications.count;\n\n if (!this.searchAppId || !this.searchApiKey) return;\n this.internalSearchIndeces = [\n ...this.myAccData.search.indeces,\n ...this.searchIndeces,\n ];\n\n if (this.myAccData.urls.cart && !this.cartUrl)\n this.cartUrl = this.myAccData.urls.cart;\n if (this.myAccData.urls.messages && !this.msgUrl)\n this.msgUrl = this.myAccData.urls.messages;\n }\n\n private processMyAccLinks() {\n if (!this.myAccData.links || !this.myAccData.links.length) return;\n\n this.myAccData.links.forEach((link) => {\n switch (link.area) {\n case 'left-side-logged-in':\n case 'left-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('sites')\n )\n break;\n if (this.isLoggedIn && link.area === 'left-side-logged-in')\n this.siteNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'left-side-logged-out')\n this.siteNavItms.push(link);\n break;\n case 'right-side-logged-in':\n case 'right-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('about')\n )\n break;\n if (this.isLoggedIn && link.area === 'right-side-logged-in')\n this.aboutNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'right-side-logged-out')\n this.aboutNavItms.push(link);\n break;\n case 'profile-panel-list':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('loggedin')\n )\n break;\n this.loggedInNavItms.push(link);\n break;\n }\n });\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as s,c as o,h as t,a as n,g as e}from"./p-d6a04b3a.js";import{g as i}from"./p-257432ff.js";import{c as r}from"./p-411bb8f1.js";const a=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block}";const l=class{constructor(t){s(this,t);this.nanoToggle=o(this,"nanoToggle",7);this.itemOpened=undefined;this.color=undefined}onToggleHandler(s){s.stopPropagation();const o=i(this.el,"nano-details")||this.el.querySelectorAll("nano-details");o.forEach(((o,t)=>{if(o!==s.target)o.open=false;else this.itemOpened=t}));this.nanoToggle.emit()}onClosedHandler(s){s.stopPropagation();this.itemOpened=null;this.nanoToggle.emit()}render(){return t(n,{class:Object.assign(Object.assign({},r(this.color)),{[`nano-color-${this.itemOpened}`]:typeof this.itemOpened==="number"})},t("slot",null))}get el(){return e(this)}};l.style=a;export{l as nano_accordion};
5
- //# sourceMappingURL=p-800c4260.entry.js.map
4
+ import{r as s,c as o,h as t,a as n,g as e}from"./p-d6a04b3a.js";import{g as i}from"./p-cdfc507e.js";import{c as r}from"./p-411bb8f1.js";const a=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block}";const l=class{constructor(t){s(this,t);this.nanoToggle=o(this,"nanoToggle",7);this.itemOpened=undefined;this.color=undefined}onToggleHandler(s){s.stopPropagation();const o=i(this.el,"nano-details")||this.el.querySelectorAll("nano-details");o.forEach(((o,t)=>{if(o!==s.target)o.open=false;else this.itemOpened=t}));this.nanoToggle.emit()}onClosedHandler(s){s.stopPropagation();this.itemOpened=null;this.nanoToggle.emit()}render(){return t(n,{class:Object.assign(Object.assign({},r(this.color)),{[`nano-color-${this.itemOpened}`]:typeof this.itemOpened==="number"})},t("slot",null))}get el(){return e(this)}};l.style=a;export{l as nano_accordion};
5
+ //# sourceMappingURL=p-9f60ff14.entry.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as t,h as i,a,g as s}from"./p-d6a04b3a.js";import{g as e,a as o}from"./p-257432ff.js";import{d as r}from"./p-7bff5224.js";const n=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--indicator-transition:var(--nano-transition-fast, 0.3s);--indicator-color:#90c6e7;--indicator-size:0;--indicator-track-color:#e4e6e8;--indicator-track-size:var(--indicator-size);--scroll-btn-color:"currentColor";--fade-size:1.75rem;--fade-transparency:0;--padding:var(--fade-size);position:relative;z-index:var(--nano-layer-index-raised, 5)}:host([orientation=horizontal]){display:block}:host([orientation=vertical]){display:flex}.onav--no-transitions *{transition-duration:0s !important}.onav__scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;transition:var(--nano-transition-medium, 0.5s) ease;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=");-webkit-mask-size:calc(100% + var(--fade-size) * 4);mask-size:calc(100% + var(--fade-size) * 4);-webkit-mask-position:calc(var(--fade-size) * -2);mask-position:calc(var(--fade-size) * -2)}.onav__scroller::-webkit-scrollbar{inline-size:0;block-size:0}.onav__scroller::after{content:" ";line-height:1;flex:0 0 auto;display:block}.onav--has-scroll-controls-start .onav__scroller{-webkit-mask-position:0;mask-position:0;-webkit-mask-size:calc(100% + var(--fade-size) * 2);mask-size:calc(100% + var(--fade-size) * 2)}.onav--has-scroll-controls-end .onav__scroller{-webkit-mask-position:calc(var(--fade-size) * -1);mask-position:calc(var(--fade-size) * -1);-webkit-mask-size:calc(100% + var(--fade-size));mask-size:calc(100% + var(--fade-size))}.onav--has-scroll-controls-start.onav--has-scroll-controls-end .onav__scroller{-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:0;mask-position:0}.onav__items{flex:1 1 auto;position:relative;width:auto;flex-wrap:nowrap;display:flex}.onav__items::before{content:"";background:var(--indicator-track-color);display:block;position:absolute;z-index:1}.onav__active-indicator{position:absolute;z-index:10;transition:var(--indicator-transition) transform ease, var(--indicator-transition) width ease, var(--indicator-transition) height ease}.onav nano-icon-button.onav__scroll-button{--nano-color-base:var(--scroll-btn-color);display:flex;align-items:center;justify-content:center;position:absolute;border:unset;z-index:2;transition:var(--nano-transition-fast, 0.3s) ease opacity;opacity:0;color:var(--scroll-btn-color);pointer-events:none}.onav nano-icon-button.onav__scroll-button:focus{outline:none}.onav nano-icon-button.onav__scroll-button.is-shown{opacity:1;pointer-events:all}.onav nano-icon-button.onav__scroll-button:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}.onav--horizontal .onav__scroller{overflow-x:auto;overflow-y:hidden;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-inline:var(--padding);-webkit-mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)))}.onav--horizontal .onav__scroller::after{padding-inline:0 var(--fade-size);padding-block:0 0}.onav--horizontal.onav--has-scroll-controls .onav__scroller{padding-inline:var(--fade-size) 0;-webkit-padding-before:0;padding-block-start:0;-webkit-padding-after:0;padding-block-end:0}.onav--horizontal .onav__items{flex-direction:row}.onav--horizontal .onav__items::before{content:"";width:100%;height:var(--indicator-track-size);inset-block-end:0}.onav--horizontal .onav__active-indicator{inset-block-end:0;-webkit-border-after:solid var(--indicator-size) var(--indicator-color);border-block-end:solid var(--indicator-size) var(--indicator-color)}.onav--horizontal .onav__scroll-button{inset-block:0}.onav--horizontal .onav__scroll-button--start{inset-inline-start:0}.onav--horizontal .onav__scroll-button--end{inset-inline-end:0}.onav--vertical{width:100%}.onav--vertical .onav__nav{max-height:100%;display:flex}.onav--vertical .onav__scroller{width:100%;overflow-y:auto;overflow-x:hidden;flex-direction:column;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-block:var(--padding);-webkit-mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));padding-inline:0 0;-webkit-padding-before:calc(var(--fade-size) + 12px);padding-block-start:calc(var(--fade-size) + 12px);-webkit-padding-after:var(--fade-size);padding-block-end:var(--fade-size)}.onav--vertical .onav__scroller::after{padding-inline:0 0;padding-block:0 var(--fade-size)}.onav--vertical .onav__items{flex-direction:column;width:-moz-fit-content;width:fit-content}.onav--vertical .onav__items::before{content:"";height:100%;width:var(--indicator-track-size);inset-inline-start:0}.onav--vertical .onav__active-indicator{inset-inline-start:0;-webkit-border-start:solid var(--indicator-size) var(--indicator-color);border-inline-start:solid var(--indicator-size) var(--indicator-color)}.onav--vertical .onav__scroll-button{inset-inline:0}.onav--vertical .onav__scroll-button--start{inset-block-start:0}.onav--vertical .onav__scroll-button--end{inset-block-end:0}';const l=class{watchIsActiveHandler(){this.instantReCalc=true;this.activeItem=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)));setTimeout((()=>this.instantReCalc=false),300)}async syncActiveItem(){this.activeItem=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)))}constructor(i){t(this,i);this.mutationObservers=new WeakMap;this.updateScrollControls=()=>{if(!this.nav)return;this.hasScrollControls=this.nav[this.scrollProp]>this.nav[this.clientDimProp]&&this.nav[this.scrollProp]>this.itemContainer[this.clientDimProp];this.handleScroll()};this.handleScroll=()=>{if(!this.hasScrollControls){this.hideControlStart=this.hideControlEnd=true;return}const t=this.isRtl?this.nav[this.scrollOffset]===0:Math.abs(this.nav[this.clientDimProp]-(this.nav[this.scrollProp]-this.nav[this.scrollOffset]))<2;const i=this.isRtl?Math.abs(this.nav[this.scrollProp]+this.nav[this.scrollOffset]-this.nav[this.clientDimProp])<2:this.nav[this.scrollOffset]===0;if(i){this.hideControlStart=true;this.hideControlEnd=false}else if(t){this.hideControlStart=false;this.hideControlEnd=true}else{this.hideControlEnd=false;this.hideControlStart=false}};this.handleBtnClick=(t=false)=>{const i=this.navDim;let a;if(t)a=this.nav[this.scrollOffset]+i-20;else a=this.nav[this.scrollOffset]-i+20;try{this.nav.scroll({left:this.orientation==="horizontal"?a:0,top:this.orientation==="vertical"?a:0,behavior:"smooth"})}catch(t){this.nav[this.scrollOffset]=a}};this.slotChangeHandler=()=>{if(this.allActiveItems.length<2)return;const t=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)));if(t)this.activeItem=t;this.recalculatePositions();this.allActiveItems.forEach((t=>{if(this.mutationObservers.get(t))return;const i=new MutationObserver((()=>this.syncActiveItemIndicator()));i.observe(t,{characterData:true,childList:true,subtree:true});this.mutationObservers.set(t,i)}))};this.handleClick=t=>{if(this.allActiveItems.length<2)return;const i=t.composedPath().find((t=>this.allActiveItems.includes(t)));if(i)this.activeItem=i};this.handleKeyDown=t=>{if(["Enter"," "].includes(t.key)){const i=t.composedPath().find((t=>this.allActiveItems.includes(t)));if(i)this.activeItem=i}};this.recalculatePositions=()=>{this.updateScrollControls();this.syncActiveItemIndicator();this.scrollToActiveItem()};this.scrollControls=true;this.orientation="horizontal";this.activeHandler=(t,i)=>t.classList.add("active");this.inActiveHandler=(t,i)=>t.classList.remove("active");this.isActiveHandler=(t,i)=>t.classList.contains("active");this.instantReCalc=false;this.hasScrollControls=false;this.hideControlEnd=true;this.hideControlStart=true;this.recalculatePositions=r(this.recalculatePositions.bind(this),80)}get scrollProp(){return this.orientation==="horizontal"?"scrollWidth":"scrollHeight"}get clientDimProp(){return this.orientation==="horizontal"?"clientWidth":"clientHeight"}get scrollOffset(){return this.orientation==="horizontal"?"scrollLeft":"scrollTop"}watchScrollControls(){if(this.hasScrollControls)this.handleScroll();else this.hideControlStart=this.hideControlEnd=true}hideEndBtn(){if(!this.endBtn)return;this.activateBtn(this.endBtn,!this.hideControlEnd)}hideStartBtn(){if(!this.startBtn)return;this.activateBtn(this.startBtn,!this.hideControlStart)}activateBtn(t,i=true){if(!i){t.tabIndex=-1;t.disabled=true;t.classList.remove("is-shown");return}t.tabIndex=0;t.disabled=false;t.classList.add("is-shown")}get allActiveItems(){return this.allItems.filter((t=>!t.disabled||t.classList.contains("disabled")))}get allItems(){return e(this.host,"*",true)}get activeItem(){return this._activeItem}set activeItem(t){if(!t||t===this.activeItem||t.disabled||!this.allActiveItems.includes(t)){return}this._activeItem=t;this.allActiveItems.forEach(((t,i)=>{if(t===this._activeItem)this.activeHandler(t,i);else this.inActiveHandler(t,i)}));this.recalculatePositions()}get navDim(){if(!this.nav)return 0;const t=getComputedStyle(this.nav);let i=this.nav[this.clientDimProp];if(this.orientation==="horizontal"){return i-=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight)}else{return i-=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}}scrollToActiveItem(){if(!this.nav||!this.activeItem)return;setTimeout((()=>{this.activeItem.scrollIntoView({behavior:this.instantReCalc?"auto":"smooth",block:"center",inline:"center"})}),100)}syncActiveItemIndicator(){if(!this.activeItem)return;const t=this.activeItem;const i=t.clientWidth||0;const a=t.clientHeight+2||0;const s=o(t,this.itemContainer);if(!this.activeIndicator)return;const e=s.top;const r=s.left;if(this.instantReCalc)this.activeIndicator.style.transition="none";switch(this.orientation){case"horizontal":this.activeIndicator.style.width=`${i}px`;this.activeIndicator.style.height=null;this.activeIndicator.style.transform=`translateX(${r}px)`;break;case"vertical":this.activeIndicator.style.width=null;this.activeIndicator.style.height=`${a}px`;this.activeIndicator.style.transform=`translateY(${e}px)`;break}setTimeout((()=>this.activeIndicator.style.transition=null),400)}connectedCallback(){this.instantReCalc=true;this.isRtl=this.orientation==="horizontal"&&!!this.host.closest('[dir="rtl"]');if(window["MutationObserver"])this.slotChangeHandler();if(!window["ResizeObserver"])return;if(this.ro){this.ro.disconnect();this.ro=undefined}const t=this.ro=new ResizeObserver(this.recalculatePositions);t.observe(this.host)}componentDidLoad(){this.activeItem=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)));this.instantReCalc=false}disconnectedCallback(){if(this.ro){this.ro.disconnect();this.ro=undefined}}render(){return i(a,{dir:this.isRtl?"rtl":null},i("div",{part:"base",class:{onav:true,[`onav--${this.orientation}`]:true,"onav--has-scroll-controls":this.hasScrollControls,"onav--has-scroll-controls-start":!this.hideControlStart,"onav--has-scroll-controls-end":!this.hideControlEnd,"onav--no-transitions":this.instantReCalc},onClick:this.handleClick,onKeyDown:this.handleKeyDown},i("div",{class:"onav__nav"},this.scrollControls&&i("nano-icon-button",{part:"scroll-button scroll-button-prev",class:{"onav__scroll-button":true,"onav__scroll-button--start":true},ref:t=>this.startBtn=t,onClick:()=>this.handleBtnClick(false),label:"Click to scroll",iconName:this.orientation==="horizontal"?"light/chevron-left":"light/chevron-up"}),i("div",{part:"scroller",ref:t=>this.nav=t,class:"onav__scroller",onScroll:this.handleScroll},i("div",{part:"items",ref:t=>this.itemContainer=t,class:"onav__items"},i("div",{part:"indicator",ref:t=>this.activeIndicator=t,class:"onav__active-indicator"}),i("slot",{onSlotchange:this.slotChangeHandler}))),this.scrollControls&&i("nano-icon-button",{part:"scroll-button scroll-button-next",class:{"onav__scroll-button":true,"onav__scroll-button--end":true},ref:t=>this.endBtn=t,onClick:()=>this.handleBtnClick(true),label:"Click to scroll",iconName:this.orientation==="horizontal"?"light/chevron-right":"light/chevron-down"}))))}get host(){return s(this)}static get watchers(){return{isActiveHandler:["watchIsActiveHandler"],hasScrollControls:["watchScrollControls"],hideControlEnd:["hideEndBtn"],hideControlStart:["hideStartBtn"]}}};l.style=n;export{l as nano_overflow_nav};
5
- //# sourceMappingURL=p-73312f19.entry.js.map
4
+ import{r as t,h as i,a,g as s}from"./p-d6a04b3a.js";import{g as e,a as o}from"./p-cdfc507e.js";import{d as r}from"./p-7bff5224.js";const n=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--indicator-transition:var(--nano-transition-fast, 0.3s);--indicator-color:#90c6e7;--indicator-size:0;--indicator-track-color:#e4e6e8;--indicator-track-size:var(--indicator-size);--scroll-btn-color:"currentColor";--fade-size:1.75rem;--fade-transparency:0;--padding:var(--fade-size);position:relative;z-index:var(--nano-layer-index-raised, 5)}:host([orientation=horizontal]){display:block}:host([orientation=vertical]){display:flex}.onav--no-transitions *{transition-duration:0s !important}.onav__scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;transition:var(--nano-transition-medium, 0.5s) ease;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=");-webkit-mask-size:calc(100% + var(--fade-size) * 4);mask-size:calc(100% + var(--fade-size) * 4);-webkit-mask-position:calc(var(--fade-size) * -2);mask-position:calc(var(--fade-size) * -2)}.onav__scroller::-webkit-scrollbar{inline-size:0;block-size:0}.onav__scroller::after{content:" ";line-height:1;flex:0 0 auto;display:block}.onav--has-scroll-controls-start .onav__scroller{-webkit-mask-position:0;mask-position:0;-webkit-mask-size:calc(100% + var(--fade-size) * 2);mask-size:calc(100% + var(--fade-size) * 2)}.onav--has-scroll-controls-end .onav__scroller{-webkit-mask-position:calc(var(--fade-size) * -1);mask-position:calc(var(--fade-size) * -1);-webkit-mask-size:calc(100% + var(--fade-size));mask-size:calc(100% + var(--fade-size))}.onav--has-scroll-controls-start.onav--has-scroll-controls-end .onav__scroller{-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:0;mask-position:0}.onav__items{flex:1 1 auto;position:relative;width:auto;flex-wrap:nowrap;display:flex}.onav__items::before{content:"";background:var(--indicator-track-color);display:block;position:absolute;z-index:1}.onav__active-indicator{position:absolute;z-index:10;transition:var(--indicator-transition) transform ease, var(--indicator-transition) width ease, var(--indicator-transition) height ease}.onav nano-icon-button.onav__scroll-button{--nano-color-base:var(--scroll-btn-color);display:flex;align-items:center;justify-content:center;position:absolute;border:unset;z-index:2;transition:var(--nano-transition-fast, 0.3s) ease opacity;opacity:0;color:var(--scroll-btn-color);pointer-events:none}.onav nano-icon-button.onav__scroll-button:focus{outline:none}.onav nano-icon-button.onav__scroll-button.is-shown{opacity:1;pointer-events:all}.onav nano-icon-button.onav__scroll-button:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}.onav--horizontal .onav__scroller{overflow-x:auto;overflow-y:hidden;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-inline:var(--padding);-webkit-mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)))}.onav--horizontal .onav__scroller::after{padding-inline:0 var(--fade-size);padding-block:0 0}.onav--horizontal.onav--has-scroll-controls .onav__scroller{padding-inline:var(--fade-size) 0;-webkit-padding-before:0;padding-block-start:0;-webkit-padding-after:0;padding-block-end:0}.onav--horizontal .onav__items{flex-direction:row}.onav--horizontal .onav__items::before{content:"";width:100%;height:var(--indicator-track-size);inset-block-end:0}.onav--horizontal .onav__active-indicator{inset-block-end:0;-webkit-border-after:solid var(--indicator-size) var(--indicator-color);border-block-end:solid var(--indicator-size) var(--indicator-color)}.onav--horizontal .onav__scroll-button{inset-block:0}.onav--horizontal .onav__scroll-button--start{inset-inline-start:0}.onav--horizontal .onav__scroll-button--end{inset-inline-end:0}.onav--vertical{width:100%}.onav--vertical .onav__nav{max-height:100%;display:flex}.onav--vertical .onav__scroller{width:100%;overflow-y:auto;overflow-x:hidden;flex-direction:column;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-block:var(--padding);-webkit-mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));padding-inline:0 0;-webkit-padding-before:calc(var(--fade-size) + 12px);padding-block-start:calc(var(--fade-size) + 12px);-webkit-padding-after:var(--fade-size);padding-block-end:var(--fade-size)}.onav--vertical .onav__scroller::after{padding-inline:0 0;padding-block:0 var(--fade-size)}.onav--vertical .onav__items{flex-direction:column;width:-moz-fit-content;width:fit-content}.onav--vertical .onav__items::before{content:"";height:100%;width:var(--indicator-track-size);inset-inline-start:0}.onav--vertical .onav__active-indicator{inset-inline-start:0;-webkit-border-start:solid var(--indicator-size) var(--indicator-color);border-inline-start:solid var(--indicator-size) var(--indicator-color)}.onav--vertical .onav__scroll-button{inset-inline:0}.onav--vertical .onav__scroll-button--start{inset-block-start:0}.onav--vertical .onav__scroll-button--end{inset-block-end:0}';const l=class{watchIsActiveHandler(){this.instantReCalc=true;this.activeItem=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)));setTimeout((()=>this.instantReCalc=false),300)}async syncActiveItem(){this.activeItem=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)))}constructor(i){t(this,i);this.mutationObservers=new WeakMap;this.updateScrollControls=()=>{if(!this.nav)return;this.hasScrollControls=this.nav[this.scrollProp]>this.nav[this.clientDimProp]&&this.nav[this.scrollProp]>this.itemContainer[this.clientDimProp];this.handleScroll()};this.handleScroll=()=>{if(!this.hasScrollControls){this.hideControlStart=this.hideControlEnd=true;return}const t=this.isRtl?this.nav[this.scrollOffset]===0:Math.abs(this.nav[this.clientDimProp]-(this.nav[this.scrollProp]-this.nav[this.scrollOffset]))<2;const i=this.isRtl?Math.abs(this.nav[this.scrollProp]+this.nav[this.scrollOffset]-this.nav[this.clientDimProp])<2:this.nav[this.scrollOffset]===0;if(i){this.hideControlStart=true;this.hideControlEnd=false}else if(t){this.hideControlStart=false;this.hideControlEnd=true}else{this.hideControlEnd=false;this.hideControlStart=false}};this.handleBtnClick=(t=false)=>{const i=this.navDim;let a;if(t)a=this.nav[this.scrollOffset]+i-20;else a=this.nav[this.scrollOffset]-i+20;try{this.nav.scroll({left:this.orientation==="horizontal"?a:0,top:this.orientation==="vertical"?a:0,behavior:"smooth"})}catch(t){this.nav[this.scrollOffset]=a}};this.slotChangeHandler=()=>{if(this.allActiveItems.length<2)return;const t=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)));if(t)this.activeItem=t;this.recalculatePositions();this.allActiveItems.forEach((t=>{if(this.mutationObservers.get(t))return;const i=new MutationObserver((()=>this.syncActiveItemIndicator()));i.observe(t,{characterData:true,childList:true,subtree:true});this.mutationObservers.set(t,i)}))};this.handleClick=t=>{if(this.allActiveItems.length<2)return;const i=t.composedPath().find((t=>this.allActiveItems.includes(t)));if(i)this.activeItem=i};this.handleKeyDown=t=>{if(["Enter"," "].includes(t.key)){const i=t.composedPath().find((t=>this.allActiveItems.includes(t)));if(i)this.activeItem=i}};this.recalculatePositions=()=>{this.updateScrollControls();this.syncActiveItemIndicator();this.scrollToActiveItem()};this.scrollControls=true;this.orientation="horizontal";this.activeHandler=(t,i)=>t.classList.add("active");this.inActiveHandler=(t,i)=>t.classList.remove("active");this.isActiveHandler=(t,i)=>t.classList.contains("active");this.instantReCalc=false;this.hasScrollControls=false;this.hideControlEnd=true;this.hideControlStart=true;this.recalculatePositions=r(this.recalculatePositions.bind(this),80)}get scrollProp(){return this.orientation==="horizontal"?"scrollWidth":"scrollHeight"}get clientDimProp(){return this.orientation==="horizontal"?"clientWidth":"clientHeight"}get scrollOffset(){return this.orientation==="horizontal"?"scrollLeft":"scrollTop"}watchScrollControls(){if(this.hasScrollControls)this.handleScroll();else this.hideControlStart=this.hideControlEnd=true}hideEndBtn(){if(!this.endBtn)return;this.activateBtn(this.endBtn,!this.hideControlEnd)}hideStartBtn(){if(!this.startBtn)return;this.activateBtn(this.startBtn,!this.hideControlStart)}activateBtn(t,i=true){if(!i){t.tabIndex=-1;t.disabled=true;t.classList.remove("is-shown");return}t.tabIndex=0;t.disabled=false;t.classList.add("is-shown")}get allActiveItems(){return this.allItems.filter((t=>!t.disabled||t.classList.contains("disabled")))}get allItems(){return e(this.host,"*",true)}get activeItem(){return this._activeItem}set activeItem(t){if(!t||t===this.activeItem||t.disabled||!this.allActiveItems.includes(t)){return}this._activeItem=t;this.allActiveItems.forEach(((t,i)=>{if(t===this._activeItem)this.activeHandler(t,i);else this.inActiveHandler(t,i)}));this.recalculatePositions()}get navDim(){if(!this.nav)return 0;const t=getComputedStyle(this.nav);let i=this.nav[this.clientDimProp];if(this.orientation==="horizontal"){return i-=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight)}else{return i-=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}}scrollToActiveItem(){if(!this.nav||!this.activeItem)return;setTimeout((()=>{this.activeItem.scrollIntoView({behavior:this.instantReCalc?"auto":"smooth",block:"center",inline:"center"})}),100)}syncActiveItemIndicator(){if(!this.activeItem)return;const t=this.activeItem;const i=t.clientWidth||0;const a=t.clientHeight+2||0;const s=o(t,this.itemContainer);if(!this.activeIndicator)return;const e=s.top;const r=s.left;if(this.instantReCalc)this.activeIndicator.style.transition="none";switch(this.orientation){case"horizontal":this.activeIndicator.style.width=`${i}px`;this.activeIndicator.style.height=null;this.activeIndicator.style.transform=`translateX(${r}px)`;break;case"vertical":this.activeIndicator.style.width=null;this.activeIndicator.style.height=`${a}px`;this.activeIndicator.style.transform=`translateY(${e}px)`;break}setTimeout((()=>this.activeIndicator.style.transition=null),400)}connectedCallback(){this.instantReCalc=true;this.isRtl=this.orientation==="horizontal"&&!!this.host.closest('[dir="rtl"]');if(window["MutationObserver"])this.slotChangeHandler();if(!window["ResizeObserver"])return;if(this.ro){this.ro.disconnect();this.ro=undefined}const t=this.ro=new ResizeObserver(this.recalculatePositions);t.observe(this.host)}componentDidLoad(){this.activeItem=this.allActiveItems.find(((t,i)=>this.isActiveHandler(t,i)));this.instantReCalc=false}disconnectedCallback(){if(this.ro){this.ro.disconnect();this.ro=undefined}}render(){return i(a,{dir:this.isRtl?"rtl":null},i("div",{part:"base",class:{onav:true,[`onav--${this.orientation}`]:true,"onav--has-scroll-controls":this.hasScrollControls,"onav--has-scroll-controls-start":!this.hideControlStart,"onav--has-scroll-controls-end":!this.hideControlEnd,"onav--no-transitions":this.instantReCalc},onClick:this.handleClick,onKeyDown:this.handleKeyDown},i("div",{class:"onav__nav"},this.scrollControls&&i("nano-icon-button",{part:"scroll-button scroll-button-prev",class:{"onav__scroll-button":true,"onav__scroll-button--start":true},ref:t=>this.startBtn=t,onClick:()=>this.handleBtnClick(false),label:"Click to scroll",iconName:this.orientation==="horizontal"?"light/chevron-left":"light/chevron-up"}),i("div",{part:"scroller",ref:t=>this.nav=t,class:"onav__scroller",onScroll:this.handleScroll},i("div",{part:"items",ref:t=>this.itemContainer=t,class:"onav__items"},i("div",{part:"indicator",ref:t=>this.activeIndicator=t,class:"onav__active-indicator"}),i("slot",{onSlotchange:this.slotChangeHandler}))),this.scrollControls&&i("nano-icon-button",{part:"scroll-button scroll-button-next",class:{"onav__scroll-button":true,"onav__scroll-button--end":true},ref:t=>this.endBtn=t,onClick:()=>this.handleBtnClick(true),label:"Click to scroll",iconName:this.orientation==="horizontal"?"light/chevron-right":"light/chevron-down"}))))}get host(){return s(this)}static get watchers(){return{isActiveHandler:["watchIsActiveHandler"],hasScrollControls:["watchScrollControls"],hideControlEnd:["hideEndBtn"],hideControlStart:["hideStartBtn"]}}};l.style=n;export{l as nano_overflow_nav};
5
+ //# sourceMappingURL=p-a225e976.entry.js.map
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ import{a as t}from"./p-cdfc507e.js";const o=new Set;function c(t){o.add(t);document.body.classList.add("nano-scroll-lock")}function s(t){o.delete(t);if(o.size===0){document.body.classList.remove("nano-scroll-lock")}}function n(t,o,c=false){if(!c){try{t.scrollTo({left:o,behavior:"smooth"})}catch(c){t.scrollLeft=o}return}try{t.scrollTo({top:o,behavior:"smooth"})}catch(c){t.scrollTop=o}}function e(o,c,s="vertical",e="start"){const i=t(o,c);const r=i.top+c.scrollTop;const a=i.left+c.scrollLeft;const f=c.scrollLeft;const l=c.scrollLeft+c.offsetWidth;const u=c.scrollTop;const h=c.scrollTop+c.offsetHeight;if(s==="horizontal"||s==="both"){if(e==="start"){if(a<f)n(c,a);else if(a+o.clientWidth>l)n(c,a-c.offsetWidth+o.clientWidth)}else{n(c,c.scrollLeft+i.left-(c.offsetWidth/2+o.offsetWidth/2))}}if(s==="vertical"||s==="both"){if(e==="start"){if(r<u)n(c,r,true);else if(r+o.clientHeight>h){n(c,r-c.offsetHeight+o.clientHeight,true)}}else{n(c,c.scrollTop+i.top-(c.offsetHeight/2+o.offsetHeight/2),true)}}}export{c as l,e as s,s as u};
5
+ //# sourceMappingURL=p-b27b56d3.js.map
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ const n=(n,e)=>{const s=Object.assign({className:"",show:true,showDisplay:"block"},e);return new Promise((e=>{const t=i=>{if((i.target===n||i.composedPath().some((n=>n===i.target)))&&(!s.transitionProp||s.transitionProp.includes(i.propertyName))){e("shown");n.removeEventListener("transitionend",t)}};const i=t=>{if((t.target===n||t.composedPath().some((n=>n===t.target)))&&(!s.transitionProp||s.transitionProp.includes(t.propertyName))){n.style.display="none";n.dataset.displayTransition="false";e("hidden");n.removeEventListener("transitionend",i)}};if(s.show){n.addEventListener("transitionend",t);n.style.display=s.showDisplay;n.dataset.displayTransition="true";requestAnimationFrame((()=>n.classList.add(s.className)))}else{n.addEventListener("transitionend",i);n.classList.remove(s.className)}}))};export{n as d};
5
+ //# sourceMappingURL=p-c3e8e3f9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["displayTransition","el","options","opts","Object","assign","className","show","showDisplay","Promise","resolve","showCb","e","target","composedPath","some","transitionProp","includes","propertyName","removeEventListener","hideCb","style","display","dataset","addEventListener","requestAnimationFrame","classList","add","remove"],"sources":["./src/utils/transitions.ts"],"sourcesContent":["/**\n * Quality of life for transition handling.\n * Adds / removes transitionend events. Resolves on complete\n */\nexport const transitionDone = (\n el: HTMLElement\n): Promise<'shown' | 'hidden'> => {\n return new Promise((resolve) => {\n const callback = () => {\n el.removeEventListener('transitionend', callback);\n resolve;\n };\n el.addEventListener('transitionend', callback);\n // ??\n });\n};\n\n/**\n * handles hiding and showing elements properly (with display),\n * along with transitions, so they are no longer viewable in the dom.\n * - OnHide remove show class, listen for transition end, then display: none on finish\n * - OnShow, display block on start then add a show class\n * @param el\n * @param options\n * @returns a promise of resolving as either 'show' or 'hidden'\n */\nexport const displayTransition = (\n el: HTMLElement,\n options?: {\n className?: string;\n show?: boolean;\n showDisplay?: string;\n transitionProp?: string[];\n }\n): Promise<'shown' | 'hidden'> => {\n const opts = {\n className: '',\n show: true,\n showDisplay: 'block',\n ...options,\n };\n\n return new Promise((resolve) => {\n const showCb = (e: TransitionEvent) => {\n if (\n (e.target === el || e.composedPath().some((el) => el === e.target)) &&\n (!opts.transitionProp || opts.transitionProp.includes(e.propertyName))\n ) {\n resolve('shown');\n el.removeEventListener('transitionend', showCb);\n }\n };\n\n const hideCb = (e: TransitionEvent) => {\n if (\n (e.target === el || e.composedPath().some((el) => el === e.target)) &&\n (!opts.transitionProp || opts.transitionProp.includes(e.propertyName))\n ) {\n el.style.display = 'none';\n el.dataset.displayTransition = 'false';\n resolve('hidden');\n el.removeEventListener('transitionend', hideCb);\n }\n };\n\n if (opts.show) {\n el.addEventListener('transitionend', showCb);\n el.style.display = opts.showDisplay;\n el.dataset.displayTransition = 'true';\n requestAnimationFrame(() => el.classList.add(opts.className));\n } else {\n el.addEventListener('transitionend', hideCb);\n el.classList.remove(opts.className);\n }\n });\n};\n"],"mappings":";;;MA0BaA,EAAoB,CAC/BC,EACAC,KAOA,MAAMC,EAAIC,OAAAC,OAAA,CACRC,UAAW,GACXC,KAAM,KACNC,YAAa,SACVN,GAGL,OAAO,IAAIO,SAASC,IAClB,MAAMC,EAAUC,IACd,IACGA,EAAEC,SAAWZ,GAAMW,EAAEE,eAAeC,MAAMd,GAAOA,IAAOW,EAAEC,aACzDV,EAAKa,gBAAkBb,EAAKa,eAAeC,SAASL,EAAEM,eACxD,CACAR,EAAQ,SACRT,EAAGkB,oBAAoB,gBAAiBR,E,GAI5C,MAAMS,EAAUR,IACd,IACGA,EAAEC,SAAWZ,GAAMW,EAAEE,eAAeC,MAAMd,GAAOA,IAAOW,EAAEC,aACzDV,EAAKa,gBAAkBb,EAAKa,eAAeC,SAASL,EAAEM,eACxD,CACAjB,EAAGoB,MAAMC,QAAU,OACnBrB,EAAGsB,QAAQvB,kBAAoB,QAC/BU,EAAQ,UACRT,EAAGkB,oBAAoB,gBAAiBC,E,GAI5C,GAAIjB,EAAKI,KAAM,CACbN,EAAGuB,iBAAiB,gBAAiBb,GACrCV,EAAGoB,MAAMC,QAAUnB,EAAKK,YACxBP,EAAGsB,QAAQvB,kBAAoB,OAC/ByB,uBAAsB,IAAMxB,EAAGyB,UAAUC,IAAIxB,EAAKG,Y,KAC7C,CACLL,EAAGuB,iBAAiB,gBAAiBJ,GACrCnB,EAAGyB,UAAUE,OAAOzB,EAAKG,U,IAE3B,S"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as t,c as i,w as s,h as e,a as n,g as o}from"./p-d6a04b3a.js";import{g as a}from"./p-74a7fc4f.js";import{d as h}from"./p-7bff5224.js";import{g as r}from"./p-257432ff.js";import{g as l}from"./p-dc565459.js";const c=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--padding-start:var(--nano-spacing-xlarge, 24px);--padding-end:var(--nano-spacing-xlarge, 24px);--font-size:0.8em;--color:#b5aea7;color:var(--color)}.dlist--isfiltered ::slotted(*:not(nano-option):not([slot=no-result]):not([slot=list-top]):not([slot=list-bottom])){display:none !important}.dlist__dropdown{--min-width:100%;--overflow:auto}.dlist__status{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.dlist__menu{--padding-top:inherit;--padding-bottom:inherit;--padding-start:inherit;--padding-end:inherit;--font-size:inherit}";function d(t){let i;if(t.id){i=document.querySelector(`label[for='${t.id}']`)}if(!i){i=t.closest("label")}return i}let p=0;const u=class{get allOptEles(){return this._allOptEles}set allOptEles(t){var i;this._allOptEles=t;if((i=this.connectedInput)===null||i===void 0?void 0:i.value)return;t.forEach((t=>{if(t.selected&&!this.selected.includes(t.value)){this.changeInputValue(t)}}))}constructor(s){t(this,s);this.nanoSelect=i(this,"nanoSelect",7);this.nanoDeselect=i(this,"nanoDeselect",7);this.nanoOptionsUpdated=i(this,"nanoOptionsUpdated",7);this.isNanoInput=false;this.typeToSelect="";this.listId=`nano-datalist-${p++}`;this.isFiltered=false;this.shouldFocus=false;this._allOptEles=[];this._dropDownConfig={skidding:-1};this.optSelected=t=>{t.stopPropagation();this.changeInputValue(t.detail);requestAnimationFrame((()=>this.inputChange()));if(this.type!=="selctMulti")this.shouldOpen=false};this.handleShow=async()=>{if(this.shouldFocus){this.shouldFocus=false;this.listBox.setFocus()}else if(this.type==="select")this.listBox.showActiveElement()};this.handleHide=()=>{this.open=false;const t=a();if(t.closest(this.host.tagName.toLowerCase())){this.connectedInput.select()}};this.inputClick=()=>{this.shouldOpen=true;this.manageDropdownDisplay()};this.inputKeydown=t=>{const i=["Shift","ArrowRight","ArrowLeft","Escape","Enter","Tab"];if(i.includes(t.key)){if(t.key==="Tab")this.shouldOpen=false;return}if(this.type==="select"&&!["ArrowDown","ArrowUp"].includes(t.key)&&(t.key!==" "||this.typeToSelectTimeout)){if(t.key===" "||/^[a-z0-9]+$/i.test(t.key)){clearTimeout(this.typeToSelectTimeout);this.typeToSelectTimeout=window.setTimeout((()=>{this.typeToSelect="";this.typeToSelectTimeout=0}),750);this.typeToSelect+=t.key;this.setOptStartsWith()}return}this.shouldOpen=true;this.manageDropdownDisplay();if(["ArrowDown","ArrowUp"].includes(t.key)){t.preventDefault();this.shouldFocus=true}};this.optionKeyDown=t=>{const i=["Shift","ArrowUp","ArrowDown","Escape","Enter","Tab","Space","PageUp","PageDown","Home","End"," "];if(i.includes(t.key)){if(t.key==="Escape")this.connectedInput.focus();return}const s=["Delete","Backspace"];if(this.type!=="select"&&(!this.exactMatch||s.includes(t.key))){this.connectedInput.focus()}};this.actvOptEles=[];this.connectedInput=undefined;this.inputLabel=undefined;this.hasNoResult=undefined;this.shouldOpen=undefined;this.canOpen=true;this.optionIds=[];this.selected=[];this.options=[];this.input=undefined;this.type="input";this.open=false;this.disableFilter=false;this.disabled=false;this.inputChange=h(this.inputChange.bind(this),50)}get dropDownConfig(){return this._dropDownConfig}set dropDownConfig(t){this._dropDownConfig=Object.assign(Object.assign({},this._dropDownConfig),t)}get activeOptions(){return this.allOptEles}openWatcher(){s((()=>{this.nanoDropdown.open=this.open;if(this.connectedInput)this.connectedInput.setAttribute("aria-expanded",this.open.toString())}))}async watchInputChange(){let t;if(t=this.host.closest("nano-input")){this.isNanoInput=true;this.connectedInput=await t.getInputElement()}else if(this.input&&typeof this.input==="string"&&(t=document.querySelector(this.input))){this.isNanoInput=false;this.connectedInput=t}else if(typeof this.input==="object"){this.connectedInput=this.input}}manageSlotChangeListener(){var t;if(!this.host)return;if((!this.options||!this.options.length)&&!this.mo){{const t=this.mo=new MutationObserver((()=>this.processSlottedContent()));t.observe(this.host,{childList:true,subtree:true})}this.processSlottedContent();return}if((t=this.options)===null||t===void 0?void 0:t.length){if(!!this.mo){this.mo.disconnect();this.mo=undefined}const t=this.host.querySelectorAll('[slot="internal-opts"]');s((()=>{var i;if(t===null||t===void 0?void 0:t.length)t.forEach((t=>t.remove()));this.allOptEles=this.options.flatMap(((t,i)=>{if(t.value||t.label){const s=Object.assign(document.createElement("nano-option"),{label:t.label,value:t.value,ariaPosinset:i,ariaSetsize:this.options.length,selected:t.selected,id:this.listId+"-option-"+i,textContent:t.label?t.label:t.value,slot:"internal-opts"});this.host.append(s);return s}}));if(((i=this.connectedInput)===null||i===void 0?void 0:i.value.length)&&this.type!=="select"){this.inputChange()}else{this.actvOptEles=[...this.allOptEles]}}))}}watchTypeChange(){if(!this.connectedInput)return;let t={closeOnSelect:false};let i="both";let s=false;switch(this.type){case"input":t={closeOnSelect:true};break;case"select":i="list";s=true;t={closeOnSelect:true,placement:"center"};break}if(!this.isNanoInput){t.tetherTo=this.connectedInput}this.dropDownConfig=Object.assign(Object.assign({},this.dropDownConfig),t);this.connectedInput.setAttribute("aria-autocomplete",i);this.connectedInput.readOnly=s}manageInputEvents(t,i){var e;if(!!i){const t=i.closest("nano-input");if(t){t.removeEventListener("nanoChange",this.inputChange)}this.removeEventListeners(i);this.inputLabel=null;s((()=>{i.removeAttribute("role");i.removeAttribute("aria-expanded");i.removeAttribute("aria-controls");i.removeAttribute("aria-owns");i.removeAttribute("aria-haspopup");i.removeAttribute("aria-autocomplete");i.removeAttribute("autocomplete")}))}if(!!t){const i=t.closest("nano-input");if(i){i.addEventListener("nanoChange",this.inputChange)}t.addEventListener("change",this.inputChange);t.addEventListener("click",this.inputClick);t.addEventListener("keydown",this.inputKeydown);t.addEventListener("input",this.inputChange);this.listId=this.host.id||this.listId;this.inputLabel=((e=t===null||t===void 0?void 0:t.labels)===null||e===void 0?void 0:e.item(0))||d(t);s((()=>{this.host.id=this.listId;t.setAttribute("role","combobox");t.setAttribute("aria-expanded","false");t.setAttribute("aria-controls",this.listId);t.setAttribute("aria-owns",this.listId);t.setAttribute("aria-haspopup","listbox");t.setAttribute("autocomplete","off")}))}}watchActvOptChange(){var t;let i=0;const e=((t=this.connectedInput)===null||t===void 0?void 0:t.value)||"";const n=[];s((()=>{this.allOptEles.forEach(((t,s)=>{if(this.actvOptEles.includes(t)){i++;t.setAttribute("aria-posinset",i+"");t.setAttribute("aria-setsize",this.actvOptEles.length+"");t.hidden=false;this.isSelected(t,e)}else{t.removeAttribute("aria-posinset");t.removeAttribute("aria-setsize");t.hidden=true;t.selected=false}t.id=this.listId+"-option-"+s;n.push(t.id)}));this.optionIds=n}))}manageCanOpen(){if(this.actvOptEles.length||this.hasNoResult)this.canOpen=true;else this.canOpen=false}manageDropdownDisplay(){if(this.shouldOpen&&this.canOpen&&!this.disabled)this.open=true;if(!this.shouldOpen||!this.canOpen)this.open=false;this.openWatcher()}fireActiveOptsEvent(){this.nanoOptionsUpdated.emit(this.actvOptEles)}isSelected(t,i){if(i===t.value||this.selected.includes(t.value)){t.selected=true}else t.selected=false}get dropwdownOpen(){if(!this.nanoDropdown||!this.open)return false;return true}get exactMatch(){return this.allOptEles.find((t=>this.connectedInput.value===t.value))}changeInputValue(t){var i;let s;if(this.selected.includes(t.value)){this.selected=this.selected.filter((i=>i!==t.value));s=this.nanoDeselect.emit(t)}else{this.selected=[...this.selected];s=this.nanoSelect.emit(t)}if(!s.defaultPrevented){if(this.connectedInput)this.connectedInput.value=t.value;const s=new window.Event("change");(i=this.connectedInput)===null||i===void 0?void 0:i.dispatchEvent(s)}}setOptStartsWith(){const t=t=>t.toLowerCase().substring(0,this.typeToSelect.length)===this.typeToSelect;const i=this.allOptEles.find((i=>i.value.trim().length>0&&!i.disabled&&(t(i.textContent)||t(i.value)||t(i.label)||t(i.filterMeta))));if(i)this.changeInputValue(i)}removeEventListeners(t){const i=t.closest("nano-input");if(i){i.removeEventListener("nanoChange",this.inputChange)}t.removeEventListener("change",this.inputChange);t.removeEventListener("click",this.inputClick);t.removeEventListener("keydown",this.inputKeydown);t.removeEventListener("input",this.inputChange)}processSlottedContent(){requestAnimationFrame((()=>{var t;this.allOptEles=Array.from(this.host.querySelectorAll("nano-option"));this.hasNoResult=!!this.host.querySelector('[slot="no-result"]');if(((t=this.connectedInput)===null||t===void 0?void 0:t.value.length)&&this.type!=="select"){this.inputChange()}else this.actvOptEles=this.allOptEles}))}inputChange(){if(this.disableFilter){this.actvOptEles=this.allOptEles;return}const t=this.connectedInput.value;const i=t.trim().toLowerCase();let s=false;const e=[];const n=t=>t.toLowerCase().indexOf(i)>-1;this.allOptEles.forEach((i=>{if((t===i.value||t===i.label)&&this.type!=="selctMulti"){i.selected=true;s=true}else this.isSelected(i,t)}));this.allOptEles.forEach((t=>{if(!i.length||s){e.push(t)}else if(t.value.trim().length>0&&!t.disabled&&(n(t.textContent)||n(t.value)||n(t.label)||n(t.filterMeta))){e.push(t)}}));this.isFiltered=i.length&&!s;this.actvOptEles=e}connectedCallback(){this.watchInputChange()}componentDidLoad(){this.manageSlotChangeListener();this.openWatcher()}componentDidRender(){setTimeout((()=>{if(!this.connectedInput)console.warn("no `nano-input` found. `nano-datalist` should be nested within an `nano-input` or linked via `input` prop",this.host)}),500)}disconnectedCallback(){if(!!this.mo){this.mo.disconnect();this.mo=undefined}if(this.connectedInput)this.removeEventListeners(this.connectedInput)}render(){return e(n,{role:this.actvOptEles.length?"listbox":undefined,"aria-owns":this.optionIds.length?this.optionIds.join(" "):undefined,"aria-label":this.optionIds.length?"Select options from the list below":undefined},e("nano-dropdown",Object.assign({},this.dropDownConfig,{ref:t=>this.nanoDropdown=t,dialogTitle:"Select options from the list below",class:{dlist__dropdown:true,"dlist--isfiltered":this.isFiltered},onNanoAfterShow:this.handleShow,onNanoAfterHide:this.handleHide,role:"group"}),e("nano-menu",{hidden:!this.actvOptEles.length,type:"listbox",label:this.inputLabel?this.inputLabel.textContent:undefined,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen},tabIndex:-1,onNanoSelect:this.optSelected,onKeyDown:this.optionKeyDown,ref:t=>this.listBox=t,role:"list"},e("slot",{name:"list-top"}),!this.options.length&&e("slot",null),!!this.options.length&&e("slot",{name:"internal-opts"}),e("slot",{name:"list-bottom"})),e("nano-menu",{type:"listbox",label:"No results found",hidden:!!this.actvOptEles.length,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen}},e("slot",{name:"no-result"})),!!this.actvOptEles&&e("div",{class:"dlist__status"},this.actvOptEles.length," result",this.actvOptEles.length>1?"s":""," available.")))}get host(){return o(this)}static get watchers(){return{open:["openWatcher"],input:["watchInputChange"],options:["manageSlotChangeListener"],type:["watchTypeChange"],connectedInput:["watchTypeChange","manageInputEvents"],selected:["watchActvOptChange"],actvOptEles:["watchActvOptChange","manageCanOpen","fireActiveOptsEvent"],hasNoResult:["manageCanOpen"],shouldOpen:["manageDropdownDisplay"],canOpen:["manageDropdownDisplay"]}}};u.style=c;const f=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--padding-start:var(--nano-spacing-medium, 16px);--padding-end:var(--nano-spacing-medium, 16px);--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--secondary-padding-top:0;--secondary-padding-bottom:0;--bg-color-hover:#f2f7f9;--bg-color-focus:#f2f7f9;--bg-color-selected:#f2f7f9;--color-hover:#007495;--color-selected:#007495;--color-focus:#007495;--focus-outline:none;--font-size:0.9em;display:block}.menu{font-size:var(--font-size, 0.9em);overscroll-behavior:none;min-width:var(--width);position:relative}.menu:focus{outline:none}::slotted(*:not(nano-nav-item):not(nano-option):not(hr):not(slot)){padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom);display:block}";const g=class{constructor(s){t(this,s);this.nanoFocus=i(this,"nanoFocus",7);this.nanoBlur=i(this,"nanoBlur",7);this.nanoSelect=i(this,"nanoSelect",7);this.ignoreMouseEvents=false;this.typeToSelect="";this._hasFocus=false;this.handleFocus=()=>{this.setActiveFocusItem(this.selectedItem||this.getItems[0]);this._hasFocus=true;this.nanoFocus.emit()};this.handleClick=t=>{const i=t.target;const s=i.closest("nano-nav-item");if(s&&!s.disabled){this.nanoSelect.emit(s)}};this.handleKeyDown=t=>{clearTimeout(this.ignoreMouseTimeout);this.ignoreMouseTimeout=setTimeout((()=>this.ignoreMouseEvents=false),500);this.ignoreMouseEvents=true;switch(t.key){case" ":if(this.activeItem)this.activeItem.click();break;case"ArrowDown":case"ArrowUp":case"PageDown":case"PageUp":case"Home":case"End":const i=this.getItems;const s=this.activeItem;let e=i.indexOf(s);if(i.length){t.preventDefault();if(t.key==="ArrowDown"){e++}else if(t.key==="ArrowUp"){e--}else if(t.key==="Home"||t.key==="PageUp"){e=0}else if(t.key==="End"||t.key==="PageDown"){e=i.length-1}if(e<0)e=i.length-1;if(e>i.length-1)e=0;this.setActiveFocusItem(i[e]);if(i[e])i[e].scrollIntoView({block:"nearest"});return}break}if(t.key===" "||/^[a-z0-9]+$/i.test(t.key)){clearTimeout(this.typeToSelectTimeout);this.typeToSelectTimeout=setTimeout((()=>this.typeToSelect=""),750);this.typeToSelect+=t.key;const i=this.getItems;for(const t of i){const i=t.shadowRoot.querySelector("slot:not([name])");const s=l(i).toLowerCase().trim();if(s.substring(0,this.typeToSelect.length)===this.typeToSelect){this.setActiveFocusItem(t);break}}}};this.handleMouseOver=t=>{const i=t.target;const s=i.closest("nano-nav-item")||i.closest("nano-option");if(s&&!this.ignoreMouseEvents){this.setActiveFocusItem(s)}};this.type="menu";this.label=undefined}get hasFocus(){return this._hasFocus}async setFocus(){var t;if((t=this.menu)===null||t===void 0?void 0:t.focus)this.menu.focus({preventScroll:true})}async removeFocus(){var t;if((t=this.menu)===null||t===void 0?void 0:t.blur)this.menu.blur()}async showActiveElement(){if(this.selectedItem)this.selectedItem.scrollIntoView({block:"nearest"})}async resetActiveItem(){this.getItems.filter((t=>t.tagName.toLowerCase()==="nano-option")).map((t=>t.setAttribute("tabindex","-1")))}get getItems(){let t;const i=this.el.querySelectorAll("nano-nav-item.secondary-open");if(i.length){const s=i[i.length-1];t=Array.from(s.querySelectorAll("nano-nav-item, nano-option"))}else{t=r(this.el,"nano-nav-item, nano-option","slot")}return t.filter((t=>!t.disabled&&!t.hidden))}get activeItem(){const t=a();return this.getItems.find((i=>i.getAttribute("tabindex")==="0"||i===t||i.classList.contains("has-focus")))}get selectedItem(){return this.getItems.find((t=>t.selected))}async setActiveFocusItem(t,i=true){const s=this.getItems;const e=!t||t.disabled?s.find((t=>t.selected))||s[0]:t;s.filter((t=>t.tagName.toLowerCase()==="nano-option")).map((t=>t.setAttribute("tabindex",t===e?"0":"-1")));if(!i)return;if(e){e.setFocus?e.setFocus():e.focus()}else this.menu.focus()}handleBlur(t){if(!this.hasFocus)return;const i=t;let s;if(i.key){if(i.key!=="Tab")return;s=a()&&a().closest(this.el.tagName.toLowerCase())===this.el}else s=!!t.composedPath().find((t=>t===this.el));if(!s){this.resetActiveItem();this._hasFocus=false;this.nanoBlur.emit()}}componentDidLoad(){{r(this.el,":not(nano-nav-item):not(nano-option):not([role])",true).forEach((t=>t.setAttribute("role","none")))}}render(){return e(n,{role:this.type==="menu"?"menu":"group"},e("div",{onClick:this.handleClick,onKeyDown:this.handleKeyDown,onMouseOver:this.handleMouseOver,onFocus:this.handleFocus,"aria-label":this.label?this.label:undefined,ref:t=>this.menu=t,part:"base",class:{menu:true,["menu--"+this.type]:true,"menu--has-focus":this.hasFocus},tabIndex:-1,role:"group"},e("slot",null)))}get el(){return o(this)}};g.style=f;const m=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--bg:none;--bg-selected:var(--nano-select-opt-bg, #f2f7f9);--bg-focus:var(--nano-color-base, var(--nano-color-primary-tint, #2689a5));--bg-disabled:none;--color:var(--input-text-color, var(--nano-input-text-color, #4a4a4a));--color-selected:var(--nano-color-base, var(--nano-color-primary, #007495));--color-focus:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--color-disabled:#b5aea7;--opt-icon-size:1.6em;display:block;color:var(--color);overflow:hidden;font-size:14px;font-size:clamp(12px, .9em, 16px)}:host(:focus){outline:none}.option{position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;align-items:stretch;width:100%;background:var(--bg);padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom)}:host(:focus) .option:not(.option--disabled),:host .option.option--selected{outline:none;background:var(--bg-selected);color:var(--color-selected)}:host(:focus) .option:not(.option--disabled){background:var(--bg-focus);color:var(--color-focus)}.option.option--disabled{outline:none;color:var(--color-disabled);cursor:not-allowed;background:var(--bg-disabled)}.option.option--novalue{font-style:italic;opacity:0.7}.option__label{flex:1 1 auto;display:flex;align-items:center}.option__start{flex:0 0 auto;display:flex;align-items:center}.option__start ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__start ::slotted(:last-child){-webkit-margin-end:0.5em;margin-inline-end:0.5em}.option__end{flex:0 0 auto;display:flex;align-items:center}.option__end ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__end ::slotted(:first-child){-webkit-margin-start:0.5em;margin-inline-start:0.5em}.option__check{visibility:hidden;display:flex;position:absolute;inset-inline-start:0.6em;inset-block-start:calc(50% - 0.6em);align-items:center;font-size:0.9em}.option--selected:not(.option--novalue) .option__check{visibility:visible}";let b=0;const v=class{constructor(s){t(this,s);this.nanoSelect=i(this,"nanoSelect",7);this.optId=`nano-option-${b++}`;this.hasFocus=false;this.value="";this.label="";this.selected=false;this.disabled=false;this.filterMeta="";this.handleClick=h(this.handleClick.bind(this),5)}valueChanged(){if(!this.value||!this.value.length)this.value=this.labelContent}labelChanged(){if(!this.label||!this.label.length)this.label=this.labelContent.length?this.labelContent:this.value}handleKeyDown(t){if(t.key!==" "&&t.key!=="Enter")return;t.preventDefault();this.nanoSelect.emit(this.host)}handleClick(){if(this.disabled)return;this.nanoSelect.emit(this.host)}get labelContent(){return r(this.host,"*:not([slot])",false).map((t=>t.textContent)).join(" ").trim()}componentWillLoad(){this.valueChanged();this.labelChanged()}render(){return e(n,{role:"option","aria-selected":this.selected?"true":"false","aria-disabled":this.disabled?"true":"false"},e("div",{onMouseDown:this.handleClick,id:this.optId,class:{option:true,"option--selected":this.selected,"option--disabled":this.disabled,"option--novalue":!this.value}},e("div",{part:"check-icon",class:"option__check"},e("slot",{name:"check-icon"},e("nano-icon",{name:"light/check","aria-hidden":"true"}))),e("div",{part:"start",class:"option__start"},e("slot",{name:"start"})),e("div",{part:"label",class:"option__label"},e("slot",null,this.label||this.value)),e("div",{part:"end",class:"option__end"},e("slot",{name:"end"}))))}get host(){return o(this)}static get watchers(){return{value:["valueChanged"],label:["labelChanged"]}}};v.style=m;export{u as nano_datalist,g as nano_menu,v as nano_option};
5
- //# sourceMappingURL=p-18e0d957.entry.js.map
4
+ import{r as t,c as i,w as s,h as e,a as n,g as o}from"./p-d6a04b3a.js";import{g as a}from"./p-74a7fc4f.js";import{d as h}from"./p-7bff5224.js";import{g as r}from"./p-cdfc507e.js";import{g as l}from"./p-dc565459.js";const c=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--padding-start:var(--nano-spacing-xlarge, 24px);--padding-end:var(--nano-spacing-xlarge, 24px);--font-size:0.8em;--color:#b5aea7;color:var(--color)}.dlist--isfiltered ::slotted(*:not(nano-option):not([slot=no-result]):not([slot=list-top]):not([slot=list-bottom])){display:none !important}.dlist__dropdown{--min-width:100%;--overflow:auto}.dlist__status{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.dlist__menu{--padding-top:inherit;--padding-bottom:inherit;--padding-start:inherit;--padding-end:inherit;--font-size:inherit}";function d(t){let i;if(t.id){i=document.querySelector(`label[for='${t.id}']`)}if(!i){i=t.closest("label")}return i}let p=0;const u=class{get allOptEles(){return this._allOptEles}set allOptEles(t){var i;this._allOptEles=t;if((i=this.connectedInput)===null||i===void 0?void 0:i.value)return;t.forEach((t=>{if(t.selected&&!this.selected.includes(t.value)){this.changeInputValue(t)}}))}constructor(s){t(this,s);this.nanoSelect=i(this,"nanoSelect",7);this.nanoDeselect=i(this,"nanoDeselect",7);this.nanoOptionsUpdated=i(this,"nanoOptionsUpdated",7);this.isNanoInput=false;this.typeToSelect="";this.listId=`nano-datalist-${p++}`;this.isFiltered=false;this.shouldFocus=false;this._allOptEles=[];this._dropDownConfig={skidding:-1};this.optSelected=t=>{t.stopPropagation();this.changeInputValue(t.detail);requestAnimationFrame((()=>this.inputChange()));if(this.type!=="selctMulti")this.shouldOpen=false};this.handleShow=async()=>{if(this.shouldFocus){this.shouldFocus=false;this.listBox.setFocus()}else if(this.type==="select")this.listBox.showActiveElement()};this.handleHide=()=>{this.open=false;const t=a();if(t.closest(this.host.tagName.toLowerCase())){this.connectedInput.select()}};this.inputClick=()=>{this.shouldOpen=true;this.manageDropdownDisplay()};this.inputKeydown=t=>{const i=["Shift","ArrowRight","ArrowLeft","Escape","Enter","Tab"];if(i.includes(t.key)){if(t.key==="Tab")this.shouldOpen=false;return}if(this.type==="select"&&!["ArrowDown","ArrowUp"].includes(t.key)&&(t.key!==" "||this.typeToSelectTimeout)){if(t.key===" "||/^[a-z0-9]+$/i.test(t.key)){clearTimeout(this.typeToSelectTimeout);this.typeToSelectTimeout=window.setTimeout((()=>{this.typeToSelect="";this.typeToSelectTimeout=0}),750);this.typeToSelect+=t.key;this.setOptStartsWith()}return}this.shouldOpen=true;this.manageDropdownDisplay();if(["ArrowDown","ArrowUp"].includes(t.key)){t.preventDefault();this.shouldFocus=true}};this.optionKeyDown=t=>{const i=["Shift","ArrowUp","ArrowDown","Escape","Enter","Tab","Space","PageUp","PageDown","Home","End"," "];if(i.includes(t.key)){if(t.key==="Escape")this.connectedInput.focus();return}const s=["Delete","Backspace"];if(this.type!=="select"&&(!this.exactMatch||s.includes(t.key))){this.connectedInput.focus()}};this.actvOptEles=[];this.connectedInput=undefined;this.inputLabel=undefined;this.hasNoResult=undefined;this.shouldOpen=undefined;this.canOpen=true;this.optionIds=[];this.selected=[];this.options=[];this.input=undefined;this.type="input";this.open=false;this.disableFilter=false;this.disabled=false;this.inputChange=h(this.inputChange.bind(this),50)}get dropDownConfig(){return this._dropDownConfig}set dropDownConfig(t){this._dropDownConfig=Object.assign(Object.assign({},this._dropDownConfig),t)}get activeOptions(){return this.allOptEles}openWatcher(){s((()=>{this.nanoDropdown.open=this.open;if(this.connectedInput)this.connectedInput.setAttribute("aria-expanded",this.open.toString())}))}async watchInputChange(){let t;if(t=this.host.closest("nano-input")){this.isNanoInput=true;this.connectedInput=await t.getInputElement()}else if(this.input&&typeof this.input==="string"&&(t=document.querySelector(this.input))){this.isNanoInput=false;this.connectedInput=t}else if(typeof this.input==="object"){this.connectedInput=this.input}}manageSlotChangeListener(){var t;if(!this.host)return;if((!this.options||!this.options.length)&&!this.mo){{const t=this.mo=new MutationObserver((()=>this.processSlottedContent()));t.observe(this.host,{childList:true,subtree:true})}this.processSlottedContent();return}if((t=this.options)===null||t===void 0?void 0:t.length){if(!!this.mo){this.mo.disconnect();this.mo=undefined}const t=this.host.querySelectorAll('[slot="internal-opts"]');s((()=>{var i;if(t===null||t===void 0?void 0:t.length)t.forEach((t=>t.remove()));this.allOptEles=this.options.flatMap(((t,i)=>{if(t.value||t.label){const s=Object.assign(document.createElement("nano-option"),{label:t.label,value:t.value,ariaPosinset:i,ariaSetsize:this.options.length,selected:t.selected,id:this.listId+"-option-"+i,textContent:t.label?t.label:t.value,slot:"internal-opts"});this.host.append(s);return s}}));if(((i=this.connectedInput)===null||i===void 0?void 0:i.value.length)&&this.type!=="select"){this.inputChange()}else{this.actvOptEles=[...this.allOptEles]}}))}}watchTypeChange(){if(!this.connectedInput)return;let t={closeOnSelect:false};let i="both";let s=false;switch(this.type){case"input":t={closeOnSelect:true};break;case"select":i="list";s=true;t={closeOnSelect:true,placement:"center"};break}if(!this.isNanoInput){t.tetherTo=this.connectedInput}this.dropDownConfig=Object.assign(Object.assign({},this.dropDownConfig),t);this.connectedInput.setAttribute("aria-autocomplete",i);this.connectedInput.readOnly=s}manageInputEvents(t,i){var e;if(!!i){const t=i.closest("nano-input");if(t){t.removeEventListener("nanoChange",this.inputChange)}this.removeEventListeners(i);this.inputLabel=null;s((()=>{i.removeAttribute("role");i.removeAttribute("aria-expanded");i.removeAttribute("aria-controls");i.removeAttribute("aria-owns");i.removeAttribute("aria-haspopup");i.removeAttribute("aria-autocomplete");i.removeAttribute("autocomplete")}))}if(!!t){const i=t.closest("nano-input");if(i){i.addEventListener("nanoChange",this.inputChange)}t.addEventListener("change",this.inputChange);t.addEventListener("click",this.inputClick);t.addEventListener("keydown",this.inputKeydown);t.addEventListener("input",this.inputChange);this.listId=this.host.id||this.listId;this.inputLabel=((e=t===null||t===void 0?void 0:t.labels)===null||e===void 0?void 0:e.item(0))||d(t);s((()=>{this.host.id=this.listId;t.setAttribute("role","combobox");t.setAttribute("aria-expanded","false");t.setAttribute("aria-controls",this.listId);t.setAttribute("aria-owns",this.listId);t.setAttribute("aria-haspopup","listbox");t.setAttribute("autocomplete","off")}))}}watchActvOptChange(){var t;let i=0;const e=((t=this.connectedInput)===null||t===void 0?void 0:t.value)||"";const n=[];s((()=>{this.allOptEles.forEach(((t,s)=>{if(this.actvOptEles.includes(t)){i++;t.setAttribute("aria-posinset",i+"");t.setAttribute("aria-setsize",this.actvOptEles.length+"");t.hidden=false;this.isSelected(t,e)}else{t.removeAttribute("aria-posinset");t.removeAttribute("aria-setsize");t.hidden=true;t.selected=false}t.id=this.listId+"-option-"+s;n.push(t.id)}));this.optionIds=n}))}manageCanOpen(){if(this.actvOptEles.length||this.hasNoResult)this.canOpen=true;else this.canOpen=false}manageDropdownDisplay(){if(this.shouldOpen&&this.canOpen&&!this.disabled)this.open=true;if(!this.shouldOpen||!this.canOpen)this.open=false;this.openWatcher()}fireActiveOptsEvent(){this.nanoOptionsUpdated.emit(this.actvOptEles)}isSelected(t,i){if(i===t.value||this.selected.includes(t.value)){t.selected=true}else t.selected=false}get dropwdownOpen(){if(!this.nanoDropdown||!this.open)return false;return true}get exactMatch(){return this.allOptEles.find((t=>this.connectedInput.value===t.value))}changeInputValue(t){var i;let s;if(this.selected.includes(t.value)){this.selected=this.selected.filter((i=>i!==t.value));s=this.nanoDeselect.emit(t)}else{this.selected=[...this.selected];s=this.nanoSelect.emit(t)}if(!s.defaultPrevented){if(this.connectedInput)this.connectedInput.value=t.value;const s=new window.Event("change");(i=this.connectedInput)===null||i===void 0?void 0:i.dispatchEvent(s)}}setOptStartsWith(){const t=t=>t.toLowerCase().substring(0,this.typeToSelect.length)===this.typeToSelect;const i=this.allOptEles.find((i=>i.value.trim().length>0&&!i.disabled&&(t(i.textContent)||t(i.value)||t(i.label)||t(i.filterMeta))));if(i)this.changeInputValue(i)}removeEventListeners(t){const i=t.closest("nano-input");if(i){i.removeEventListener("nanoChange",this.inputChange)}t.removeEventListener("change",this.inputChange);t.removeEventListener("click",this.inputClick);t.removeEventListener("keydown",this.inputKeydown);t.removeEventListener("input",this.inputChange)}processSlottedContent(){requestAnimationFrame((()=>{var t;this.allOptEles=Array.from(this.host.querySelectorAll("nano-option"));this.hasNoResult=!!this.host.querySelector('[slot="no-result"]');if(((t=this.connectedInput)===null||t===void 0?void 0:t.value.length)&&this.type!=="select"){this.inputChange()}else this.actvOptEles=this.allOptEles}))}inputChange(){if(this.disableFilter){this.actvOptEles=this.allOptEles;return}const t=this.connectedInput.value;const i=t.trim().toLowerCase();let s=false;const e=[];const n=t=>t.toLowerCase().indexOf(i)>-1;this.allOptEles.forEach((i=>{if((t===i.value||t===i.label)&&this.type!=="selctMulti"){i.selected=true;s=true}else this.isSelected(i,t)}));this.allOptEles.forEach((t=>{if(!i.length||s){e.push(t)}else if(t.value.trim().length>0&&!t.disabled&&(n(t.textContent)||n(t.value)||n(t.label)||n(t.filterMeta))){e.push(t)}}));this.isFiltered=i.length&&!s;this.actvOptEles=e}connectedCallback(){this.watchInputChange()}componentDidLoad(){this.manageSlotChangeListener();this.openWatcher()}componentDidRender(){setTimeout((()=>{if(!this.connectedInput)console.warn("no `nano-input` found. `nano-datalist` should be nested within an `nano-input` or linked via `input` prop",this.host)}),500)}disconnectedCallback(){if(!!this.mo){this.mo.disconnect();this.mo=undefined}if(this.connectedInput)this.removeEventListeners(this.connectedInput)}render(){return e(n,{role:this.actvOptEles.length?"listbox":undefined,"aria-owns":this.optionIds.length?this.optionIds.join(" "):undefined,"aria-label":this.optionIds.length?"Select options from the list below":undefined},e("nano-dropdown",Object.assign({},this.dropDownConfig,{ref:t=>this.nanoDropdown=t,dialogTitle:"Select options from the list below",class:{dlist__dropdown:true,"dlist--isfiltered":this.isFiltered},onNanoAfterShow:this.handleShow,onNanoAfterHide:this.handleHide,role:"group"}),e("nano-menu",{hidden:!this.actvOptEles.length,type:"listbox",label:this.inputLabel?this.inputLabel.textContent:undefined,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen},tabIndex:-1,onNanoSelect:this.optSelected,onKeyDown:this.optionKeyDown,ref:t=>this.listBox=t,role:"list"},e("slot",{name:"list-top"}),!this.options.length&&e("slot",null),!!this.options.length&&e("slot",{name:"internal-opts"}),e("slot",{name:"list-bottom"})),e("nano-menu",{type:"listbox",label:"No results found",hidden:!!this.actvOptEles.length,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen}},e("slot",{name:"no-result"})),!!this.actvOptEles&&e("div",{class:"dlist__status"},this.actvOptEles.length," result",this.actvOptEles.length>1?"s":""," available.")))}get host(){return o(this)}static get watchers(){return{open:["openWatcher"],input:["watchInputChange"],options:["manageSlotChangeListener"],type:["watchTypeChange"],connectedInput:["watchTypeChange","manageInputEvents"],selected:["watchActvOptChange"],actvOptEles:["watchActvOptChange","manageCanOpen","fireActiveOptsEvent"],hasNoResult:["manageCanOpen"],shouldOpen:["manageDropdownDisplay"],canOpen:["manageDropdownDisplay"]}}};u.style=c;const f=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--padding-start:var(--nano-spacing-medium, 16px);--padding-end:var(--nano-spacing-medium, 16px);--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--secondary-padding-top:0;--secondary-padding-bottom:0;--bg-color-hover:#f2f7f9;--bg-color-focus:#f2f7f9;--bg-color-selected:#f2f7f9;--color-hover:#007495;--color-selected:#007495;--color-focus:#007495;--focus-outline:none;--font-size:0.9em;display:block}.menu{font-size:var(--font-size, 0.9em);overscroll-behavior:none;min-width:var(--width);position:relative}.menu:focus{outline:none}::slotted(*:not(nano-nav-item):not(nano-option):not(hr):not(slot)){padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom);display:block}";const g=class{constructor(s){t(this,s);this.nanoFocus=i(this,"nanoFocus",7);this.nanoBlur=i(this,"nanoBlur",7);this.nanoSelect=i(this,"nanoSelect",7);this.ignoreMouseEvents=false;this.typeToSelect="";this._hasFocus=false;this.handleFocus=()=>{this.setActiveFocusItem(this.selectedItem||this.getItems[0]);this._hasFocus=true;this.nanoFocus.emit()};this.handleClick=t=>{const i=t.target;const s=i.closest("nano-nav-item");if(s&&!s.disabled){this.nanoSelect.emit(s)}};this.handleKeyDown=t=>{clearTimeout(this.ignoreMouseTimeout);this.ignoreMouseTimeout=setTimeout((()=>this.ignoreMouseEvents=false),500);this.ignoreMouseEvents=true;switch(t.key){case" ":if(this.activeItem)this.activeItem.click();break;case"ArrowDown":case"ArrowUp":case"PageDown":case"PageUp":case"Home":case"End":const i=this.getItems;const s=this.activeItem;let e=i.indexOf(s);if(i.length){t.preventDefault();if(t.key==="ArrowDown"){e++}else if(t.key==="ArrowUp"){e--}else if(t.key==="Home"||t.key==="PageUp"){e=0}else if(t.key==="End"||t.key==="PageDown"){e=i.length-1}if(e<0)e=i.length-1;if(e>i.length-1)e=0;this.setActiveFocusItem(i[e]);if(i[e])i[e].scrollIntoView({block:"nearest"});return}break}if(t.key===" "||/^[a-z0-9]+$/i.test(t.key)){clearTimeout(this.typeToSelectTimeout);this.typeToSelectTimeout=setTimeout((()=>this.typeToSelect=""),750);this.typeToSelect+=t.key;const i=this.getItems;for(const t of i){const i=t.shadowRoot.querySelector("slot:not([name])");const s=l(i).toLowerCase().trim();if(s.substring(0,this.typeToSelect.length)===this.typeToSelect){this.setActiveFocusItem(t);break}}}};this.handleMouseOver=t=>{const i=t.target;const s=i.closest("nano-nav-item")||i.closest("nano-option");if(s&&!this.ignoreMouseEvents){this.setActiveFocusItem(s)}};this.type="menu";this.label=undefined}get hasFocus(){return this._hasFocus}async setFocus(){var t;if((t=this.menu)===null||t===void 0?void 0:t.focus)this.menu.focus({preventScroll:true})}async removeFocus(){var t;if((t=this.menu)===null||t===void 0?void 0:t.blur)this.menu.blur()}async showActiveElement(){if(this.selectedItem)this.selectedItem.scrollIntoView({block:"nearest"})}async resetActiveItem(){this.getItems.filter((t=>t.tagName.toLowerCase()==="nano-option")).map((t=>t.setAttribute("tabindex","-1")))}get getItems(){let t;const i=this.el.querySelectorAll("nano-nav-item.secondary-open");if(i.length){const s=i[i.length-1];t=Array.from(s.querySelectorAll("nano-nav-item, nano-option"))}else{t=r(this.el,"nano-nav-item, nano-option","slot")}return t.filter((t=>!t.disabled&&!t.hidden))}get activeItem(){const t=a();return this.getItems.find((i=>i.getAttribute("tabindex")==="0"||i===t||i.classList.contains("has-focus")))}get selectedItem(){return this.getItems.find((t=>t.selected))}async setActiveFocusItem(t,i=true){const s=this.getItems;const e=!t||t.disabled?s.find((t=>t.selected))||s[0]:t;s.filter((t=>t.tagName.toLowerCase()==="nano-option")).map((t=>t.setAttribute("tabindex",t===e?"0":"-1")));if(!i)return;if(e){e.setFocus?e.setFocus():e.focus()}else this.menu.focus()}handleBlur(t){if(!this.hasFocus)return;const i=t;let s;if(i.key){if(i.key!=="Tab")return;s=a()&&a().closest(this.el.tagName.toLowerCase())===this.el}else s=!!t.composedPath().find((t=>t===this.el));if(!s){this.resetActiveItem();this._hasFocus=false;this.nanoBlur.emit()}}componentDidLoad(){{r(this.el,":not(nano-nav-item):not(nano-option):not([role])",true).forEach((t=>t.setAttribute("role","none")))}}render(){return e(n,{role:this.type==="menu"?"menu":"group"},e("div",{onClick:this.handleClick,onKeyDown:this.handleKeyDown,onMouseOver:this.handleMouseOver,onFocus:this.handleFocus,"aria-label":this.label?this.label:undefined,ref:t=>this.menu=t,part:"base",class:{menu:true,["menu--"+this.type]:true,"menu--has-focus":this.hasFocus},tabIndex:-1,role:"group"},e("slot",null)))}get el(){return o(this)}};g.style=f;const m=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--bg:none;--bg-selected:var(--nano-select-opt-bg, #f2f7f9);--bg-focus:var(--nano-color-base, var(--nano-color-primary-tint, #2689a5));--bg-disabled:none;--color:var(--input-text-color, var(--nano-input-text-color, #4a4a4a));--color-selected:var(--nano-color-base, var(--nano-color-primary, #007495));--color-focus:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--color-disabled:#b5aea7;--opt-icon-size:1.6em;display:block;color:var(--color);overflow:hidden;font-size:14px;font-size:clamp(12px, .9em, 16px)}:host(:focus){outline:none}.option{position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;align-items:stretch;width:100%;background:var(--bg);padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom)}:host(:focus) .option:not(.option--disabled),:host .option.option--selected{outline:none;background:var(--bg-selected);color:var(--color-selected)}:host(:focus) .option:not(.option--disabled){background:var(--bg-focus);color:var(--color-focus)}.option.option--disabled{outline:none;color:var(--color-disabled);cursor:not-allowed;background:var(--bg-disabled)}.option.option--novalue{font-style:italic;opacity:0.7}.option__label{flex:1 1 auto;display:flex;align-items:center}.option__start{flex:0 0 auto;display:flex;align-items:center}.option__start ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__start ::slotted(:last-child){-webkit-margin-end:0.5em;margin-inline-end:0.5em}.option__end{flex:0 0 auto;display:flex;align-items:center}.option__end ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__end ::slotted(:first-child){-webkit-margin-start:0.5em;margin-inline-start:0.5em}.option__check{visibility:hidden;display:flex;position:absolute;inset-inline-start:0.6em;inset-block-start:calc(50% - 0.6em);align-items:center;font-size:0.9em}.option--selected:not(.option--novalue) .option__check{visibility:visible}";let b=0;const v=class{constructor(s){t(this,s);this.nanoSelect=i(this,"nanoSelect",7);this.optId=`nano-option-${b++}`;this.hasFocus=false;this.value="";this.label="";this.selected=false;this.disabled=false;this.filterMeta="";this.handleClick=h(this.handleClick.bind(this),5)}valueChanged(){if(!this.value||!this.value.length)this.value=this.labelContent}labelChanged(){if(!this.label||!this.label.length)this.label=this.labelContent.length?this.labelContent:this.value}handleKeyDown(t){if(t.key!==" "&&t.key!=="Enter")return;t.preventDefault();this.nanoSelect.emit(this.host)}handleClick(){if(this.disabled)return;this.nanoSelect.emit(this.host)}get labelContent(){return r(this.host,"*:not([slot])",false).map((t=>t.textContent)).join(" ").trim()}componentWillLoad(){this.valueChanged();this.labelChanged()}render(){return e(n,{role:"option","aria-selected":this.selected?"true":"false","aria-disabled":this.disabled?"true":"false"},e("div",{onMouseDown:this.handleClick,id:this.optId,class:{option:true,"option--selected":this.selected,"option--disabled":this.disabled,"option--novalue":!this.value}},e("div",{part:"check-icon",class:"option__check"},e("slot",{name:"check-icon"},e("nano-icon",{name:"light/check","aria-hidden":"true"}))),e("div",{part:"start",class:"option__start"},e("slot",{name:"start"})),e("div",{part:"label",class:"option__label"},e("slot",null,this.label||this.value)),e("div",{part:"end",class:"option__end"},e("slot",{name:"end"}))))}get host(){return o(this)}static get watchers(){return{value:["valueChanged"],label:["labelChanged"]}}};v.style=m;export{u as nano_datalist,g as nano_menu,v as nano_option};
5
+ //# sourceMappingURL=p-c80336b2.entry.js.map
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ var r="top";var t="bottom";var e="right";var n="left";var a="auto";var i=[r,t,e,n];var o="start";var f="end";var v="clippingParents";var u="viewport";var s="popper";var c="reference";var l=i.reduce((function(r,t){return r.concat([t+"-"+o,t+"-"+f])}),[]);var d=[].concat(i,[a]).reduce((function(r,t){return r.concat([t,t+"-"+o,t+"-"+f])}),[]);var p="beforeRead";var h="read";var b="afterRead";var m="beforeMain";var y="main";var x="afterMain";var w="beforeWrite";var O="write";var g="afterWrite";var j=[p,h,b,m,y,x,w,O,g];function A(r){return r?(r.nodeName||"").toLowerCase():null}function k(r){if(r==null){return window}if(r.toString()!=="[object Window]"){var t=r.ownerDocument;return t?t.defaultView||window:window}return r}function M(r){var t=k(r).Element;return r instanceof t||r instanceof Element}function q(r){var t=k(r).HTMLElement;return r instanceof t||r instanceof HTMLElement}function E(r){if(typeof ShadowRoot==="undefined"){return false}var t=k(r).ShadowRoot;return r instanceof t||r instanceof ShadowRoot}function P(r){var t=r.state;Object.keys(t.elements).forEach((function(r){var e=t.styles[r]||{};var n=t.attributes[r]||{};var a=t.elements[r];if(!q(a)||!A(a)){return}Object.assign(a.style,e);Object.keys(n).forEach((function(r){var t=n[r];if(t===false){a.removeAttribute(r)}else{a.setAttribute(r,t===true?"":t)}}))}))}function S(r){var t=r.state;var e={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,e.popper);t.styles=e;if(t.elements.arrow){Object.assign(t.elements.arrow.style,e.arrow)}return function(){Object.keys(t.elements).forEach((function(r){var n=t.elements[r];var a=t.attributes[r]||{};var i=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:e[r]);var o=i.reduce((function(r,t){r[t]="";return r}),{});if(!q(n)||!A(n)){return}Object.assign(n.style,o);Object.keys(a).forEach((function(r){n.removeAttribute(r)}))}))}}const W={name:"applyStyles",enabled:true,phase:"write",fn:P,effect:S,requires:["computeStyles"]};function B(r){return r.split("-")[0]}var T=Math.max;var R=Math.min;var H=Math.round;function L(){var r=navigator.userAgentData;if(r!=null&&r.brands&&Array.isArray(r.brands)){return r.brands.map((function(r){return r.brand+"/"+r.version})).join(" ")}return navigator.userAgent}function F(){return!/^((?!chrome|android).)*safari/i.test(L())}function I(r,t,e){if(t===void 0){t=false}if(e===void 0){e=false}var n=r.getBoundingClientRect();var a=1;var i=1;if(t&&q(r)){a=r.offsetWidth>0?H(n.width)/r.offsetWidth||1:1;i=r.offsetHeight>0?H(n.height)/r.offsetHeight||1:1}var o=M(r)?k(r):window,f=o.visualViewport;var v=!F()&&e;var u=(n.left+(v&&f?f.offsetLeft:0))/a;var s=(n.top+(v&&f?f.offsetTop:0))/i;var c=n.width/a;var l=n.height/i;return{width:c,height:l,top:s,right:u+c,bottom:s+l,left:u,x:u,y:s}}function C(r){var t=I(r);var e=r.offsetWidth;var n=r.offsetHeight;if(Math.abs(t.width-e)<=1){e=t.width}if(Math.abs(t.height-n)<=1){n=t.height}return{x:r.offsetLeft,y:r.offsetTop,width:e,height:n}}function z(r,t){var e=t.getRootNode&&t.getRootNode();if(r.contains(t)){return true}else if(e&&E(e)){var n=t;do{if(n&&r.isSameNode(n)){return true}n=n.parentNode||n.host}while(n)}return false}function D(r){return k(r).getComputedStyle(r)}function U(r){return["table","td","th"].indexOf(A(r))>=0}function V(r){return((M(r)?r.ownerDocument:r.document)||window.document).documentElement}function $(r){if(A(r)==="html"){return r}return r.assignedSlot||r.parentNode||(E(r)?r.host:null)||V(r)}function _(r){if(!q(r)||D(r).position==="fixed"){return null}return r.offsetParent}function G(r){var t=/firefox/i.test(L());var e=/Trident/i.test(L());if(e&&q(r)){var n=D(r);if(n.position==="fixed"){return null}}var a=$(r);if(E(a)){a=a.host}while(q(a)&&["html","body"].indexOf(A(a))<0){var i=D(a);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none"){return a}else{a=a.parentNode}}return null}function J(r){var t=k(r);var e=_(r);while(e&&U(e)&&D(e).position==="static"){e=_(e)}if(e&&(A(e)==="html"||A(e)==="body"&&D(e).position==="static")){return t}return e||G(r)||t}function K(r){return["top","bottom"].indexOf(r)>=0?"x":"y"}function N(r,t,e){return T(r,R(t,e))}function Q(r,t,e){var n=N(r,t,e);return n>e?e:n}function X(){return{top:0,right:0,bottom:0,left:0}}function Y(r){return Object.assign({},X(),r)}function Z(r,t){return t.reduce((function(t,e){t[e]=r;return t}),{})}var rr=function r(t,e){t=typeof t==="function"?t(Object.assign({},e.rects,{placement:e.placement})):t;return Y(typeof t!=="number"?t:Z(t,i))};function tr(a){var i;var o=a.state,f=a.name,v=a.options;var u=o.elements.arrow;var s=o.modifiersData.popperOffsets;var c=B(o.placement);var l=K(c);var d=[n,e].indexOf(c)>=0;var p=d?"height":"width";if(!u||!s){return}var h=rr(v.padding,o);var b=C(u);var m=l==="y"?r:n;var y=l==="y"?t:e;var x=o.rects.reference[p]+o.rects.reference[l]-s[l]-o.rects.popper[p];var w=s[l]-o.rects.reference[l];var O=J(u);var g=O?l==="y"?O.clientHeight||0:O.clientWidth||0:0;var j=x/2-w/2;var A=h[m];var k=g-b[p]-h[y];var M=g/2-b[p]/2+j;var q=N(A,M,k);var E=l;o.modifiersData[f]=(i={},i[E]=q,i.centerOffset=q-M,i)}function er(r){var t=r.state,e=r.options;var n=e.element,a=n===void 0?"[data-popper-arrow]":n;if(a==null){return}if(typeof a==="string"){a=t.elements.popper.querySelector(a);if(!a){return}}if(!z(t.elements.popper,a)){return}t.elements.arrow=a}const nr={name:"arrow",enabled:true,phase:"main",fn:tr,effect:er,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ar(r){return r.split("-")[1]}var ir={top:"auto",right:"auto",bottom:"auto",left:"auto"};function or(r,t){var e=r.x,n=r.y;var a=t.devicePixelRatio||1;return{x:H(e*a)/a||0,y:H(n*a)/a||0}}function fr(a){var i;var o=a.popper,v=a.popperRect,u=a.placement,s=a.variation,c=a.offsets,l=a.position,d=a.gpuAcceleration,p=a.adaptive,h=a.roundOffsets,b=a.isFixed;var m=c.x,y=m===void 0?0:m,x=c.y,w=x===void 0?0:x;var O=typeof h==="function"?h({x:y,y:w}):{x:y,y:w};y=O.x;w=O.y;var g=c.hasOwnProperty("x");var j=c.hasOwnProperty("y");var A=n;var M=r;var q=window;if(p){var E=J(o);var P="clientHeight";var S="clientWidth";if(E===k(o)){E=V(o);if(D(E).position!=="static"&&l==="absolute"){P="scrollHeight";S="scrollWidth"}}E=E;if(u===r||(u===n||u===e)&&s===f){M=t;var W=b&&E===q&&q.visualViewport?q.visualViewport.height:E[P];w-=W-v.height;w*=d?1:-1}if(u===n||(u===r||u===t)&&s===f){A=e;var B=b&&E===q&&q.visualViewport?q.visualViewport.width:E[S];y-=B-v.width;y*=d?1:-1}}var T=Object.assign({position:l},p&&ir);var R=h===true?or({x:y,y:w},k(o)):{x:y,y:w};y=R.x;w=R.y;if(d){var H;return Object.assign({},T,(H={},H[M]=j?"0":"",H[A]=g?"0":"",H.transform=(q.devicePixelRatio||1)<=1?"translate("+y+"px, "+w+"px)":"translate3d("+y+"px, "+w+"px, 0)",H))}return Object.assign({},T,(i={},i[M]=j?w+"px":"",i[A]=g?y+"px":"",i.transform="",i))}function vr(r){var t=r.state,e=r.options;var n=e.gpuAcceleration,a=n===void 0?true:n,i=e.adaptive,o=i===void 0?true:i,f=e.roundOffsets,v=f===void 0?true:f;var u={placement:B(t.placement),variation:ar(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:a,isFixed:t.options.strategy==="fixed"};if(t.modifiersData.popperOffsets!=null){t.styles.popper=Object.assign({},t.styles.popper,fr(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:v})))}if(t.modifiersData.arrow!=null){t.styles.arrow=Object.assign({},t.styles.arrow,fr(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:false,roundOffsets:v})))}t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const ur={name:"computeStyles",enabled:true,phase:"beforeWrite",fn:vr,data:{}};var sr={passive:true};function cr(r){var t=r.state,e=r.instance,n=r.options;var a=n.scroll,i=a===void 0?true:a,o=n.resize,f=o===void 0?true:o;var v=k(t.elements.popper);var u=[].concat(t.scrollParents.reference,t.scrollParents.popper);if(i){u.forEach((function(r){r.addEventListener("scroll",e.update,sr)}))}if(f){v.addEventListener("resize",e.update,sr)}return function(){if(i){u.forEach((function(r){r.removeEventListener("scroll",e.update,sr)}))}if(f){v.removeEventListener("resize",e.update,sr)}}}const lr={name:"eventListeners",enabled:true,phase:"write",fn:function r(){},effect:cr,data:{}};var dr={left:"right",right:"left",bottom:"top",top:"bottom"};function pr(r){return r.replace(/left|right|bottom|top/g,(function(r){return dr[r]}))}var hr={start:"end",end:"start"};function br(r){return r.replace(/start|end/g,(function(r){return hr[r]}))}function mr(r){var t=k(r);var e=t.pageXOffset;var n=t.pageYOffset;return{scrollLeft:e,scrollTop:n}}function yr(r){return I(V(r)).left+mr(r).scrollLeft}function xr(r,t){var e=k(r);var n=V(r);var a=e.visualViewport;var i=n.clientWidth;var o=n.clientHeight;var f=0;var v=0;if(a){i=a.width;o=a.height;var u=F();if(u||!u&&t==="fixed"){f=a.offsetLeft;v=a.offsetTop}}return{width:i,height:o,x:f+yr(r),y:v}}function wr(r){var t;var e=V(r);var n=mr(r);var a=(t=r.ownerDocument)==null?void 0:t.body;var i=T(e.scrollWidth,e.clientWidth,a?a.scrollWidth:0,a?a.clientWidth:0);var o=T(e.scrollHeight,e.clientHeight,a?a.scrollHeight:0,a?a.clientHeight:0);var f=-n.scrollLeft+yr(r);var v=-n.scrollTop;if(D(a||e).direction==="rtl"){f+=T(e.clientWidth,a?a.clientWidth:0)-i}return{width:i,height:o,x:f,y:v}}function Or(r){var t=D(r),e=t.overflow,n=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(e+a+n)}function gr(r){if(["html","body","#document"].indexOf(A(r))>=0){return r.ownerDocument.body}if(q(r)&&Or(r)){return r}return gr($(r))}function jr(r,t){var e;if(t===void 0){t=[]}var n=gr(r);var a=n===((e=r.ownerDocument)==null?void 0:e.body);var i=k(n);var o=a?[i].concat(i.visualViewport||[],Or(n)?n:[]):n;var f=t.concat(o);return a?f:f.concat(jr($(o)))}function Ar(r){return Object.assign({},r,{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height})}function kr(r,t){var e=I(r,false,t==="fixed");e.top=e.top+r.clientTop;e.left=e.left+r.clientLeft;e.bottom=e.top+r.clientHeight;e.right=e.left+r.clientWidth;e.width=r.clientWidth;e.height=r.clientHeight;e.x=e.left;e.y=e.top;return e}function Mr(r,t,e){return t===u?Ar(xr(r,e)):M(t)?kr(t,e):Ar(wr(V(r)))}function qr(r){var t=jr($(r));var e=["absolute","fixed"].indexOf(D(r).position)>=0;var n=e&&q(r)?J(r):r;if(!M(n)){return[]}return t.filter((function(r){return M(r)&&z(r,n)&&A(r)!=="body"}))}function Er(r,t,e,n){var a=t==="clippingParents"?qr(r):[].concat(t);var i=[].concat(a,[e]);var o=i[0];var f=i.reduce((function(t,e){var a=Mr(r,e,n);t.top=T(a.top,t.top);t.right=R(a.right,t.right);t.bottom=R(a.bottom,t.bottom);t.left=T(a.left,t.left);return t}),Mr(r,o,n));f.width=f.right-f.left;f.height=f.bottom-f.top;f.x=f.left;f.y=f.top;return f}function Pr(a){var i=a.reference,v=a.element,u=a.placement;var s=u?B(u):null;var c=u?ar(u):null;var l=i.x+i.width/2-v.width/2;var d=i.y+i.height/2-v.height/2;var p;switch(s){case r:p={x:l,y:i.y-v.height};break;case t:p={x:l,y:i.y+i.height};break;case e:p={x:i.x+i.width,y:d};break;case n:p={x:i.x-v.width,y:d};break;default:p={x:i.x,y:i.y}}var h=s?K(s):null;if(h!=null){var b=h==="y"?"height":"width";switch(c){case o:p[h]=p[h]-(i[b]/2-v[b]/2);break;case f:p[h]=p[h]+(i[b]/2-v[b]/2);break}}return p}function Sr(n,a){if(a===void 0){a={}}var o=a,f=o.placement,l=f===void 0?n.placement:f,d=o.strategy,p=d===void 0?n.strategy:d,h=o.boundary,b=h===void 0?v:h,m=o.rootBoundary,y=m===void 0?u:m,x=o.elementContext,w=x===void 0?s:x,O=o.altBoundary,g=O===void 0?false:O,j=o.padding,A=j===void 0?0:j;var k=Y(typeof A!=="number"?A:Z(A,i));var q=w===s?c:s;var E=n.rects.popper;var P=n.elements[g?q:w];var S=Er(M(P)?P:P.contextElement||V(n.elements.popper),b,y,p);var W=I(n.elements.reference);var B=Pr({reference:W,element:E,strategy:"absolute",placement:l});var T=Ar(Object.assign({},E,B));var R=w===s?T:W;var H={top:S.top-R.top+k.top,bottom:R.bottom-S.bottom+k.bottom,left:S.left-R.left+k.left,right:R.right-S.right+k.right};var L=n.modifiersData.offset;if(w===s&&L){var F=L[l];Object.keys(H).forEach((function(n){var a=[e,t].indexOf(n)>=0?1:-1;var i=[r,t].indexOf(n)>=0?"y":"x";H[n]+=F[i]*a}))}return H}function Wr(r,t){if(t===void 0){t={}}var e=t,n=e.placement,a=e.boundary,o=e.rootBoundary,f=e.padding,v=e.flipVariations,u=e.allowedAutoPlacements,s=u===void 0?d:u;var c=ar(n);var p=c?v?l:l.filter((function(r){return ar(r)===c})):i;var h=p.filter((function(r){return s.indexOf(r)>=0}));if(h.length===0){h=p}var b=h.reduce((function(t,e){t[e]=Sr(r,{placement:e,boundary:a,rootBoundary:o,padding:f})[B(e)];return t}),{});return Object.keys(b).sort((function(r,t){return b[r]-b[t]}))}function Br(r){if(B(r)===a){return[]}var t=pr(r);return[br(r),t,br(t)]}function Tr(i){var f=i.state,v=i.options,u=i.name;if(f.modifiersData[u]._skip){return}var s=v.mainAxis,c=s===void 0?true:s,l=v.altAxis,d=l===void 0?true:l,p=v.fallbackPlacements,h=v.padding,b=v.boundary,m=v.rootBoundary,y=v.altBoundary,x=v.flipVariations,w=x===void 0?true:x,O=v.allowedAutoPlacements;var g=f.options.placement;var j=B(g);var A=j===g;var k=p||(A||!w?[pr(g)]:Br(g));var M=[g].concat(k).reduce((function(r,t){return r.concat(B(t)===a?Wr(f,{placement:t,boundary:b,rootBoundary:m,padding:h,flipVariations:w,allowedAutoPlacements:O}):t)}),[]);var q=f.rects.reference;var E=f.rects.popper;var P=new Map;var S=true;var W=M[0];for(var T=0;T<M.length;T++){var R=M[T];var H=B(R);var L=ar(R)===o;var F=[r,t].indexOf(H)>=0;var I=F?"width":"height";var C=Sr(f,{placement:R,boundary:b,rootBoundary:m,altBoundary:y,padding:h});var z=F?L?e:n:L?t:r;if(q[I]>E[I]){z=pr(z)}var D=pr(z);var U=[];if(c){U.push(C[H]<=0)}if(d){U.push(C[z]<=0,C[D]<=0)}if(U.every((function(r){return r}))){W=R;S=false;break}P.set(R,U)}if(S){var V=w?3:1;var $=function r(t){var e=M.find((function(r){var e=P.get(r);if(e){return e.slice(0,t).every((function(r){return r}))}}));if(e){W=e;return"break"}};for(var _=V;_>0;_--){var G=$(_);if(G==="break")break}}if(f.placement!==W){f.modifiersData[u]._skip=true;f.placement=W;f.reset=true}}const Rr={name:"flip",enabled:true,phase:"main",fn:Tr,requiresIfExists:["offset"],data:{_skip:false}};function Hr(r,t,e){if(e===void 0){e={x:0,y:0}}return{top:r.top-t.height-e.y,right:r.right-t.width+e.x,bottom:r.bottom-t.height+e.y,left:r.left-t.width-e.x}}function Lr(a){return[r,e,t,n].some((function(r){return a[r]>=0}))}function Fr(r){var t=r.state,e=r.name;var n=t.rects.reference;var a=t.rects.popper;var i=t.modifiersData.preventOverflow;var o=Sr(t,{elementContext:"reference"});var f=Sr(t,{altBoundary:true});var v=Hr(o,n);var u=Hr(f,a,i);var s=Lr(v);var c=Lr(u);t.modifiersData[e]={referenceClippingOffsets:v,popperEscapeOffsets:u,isReferenceHidden:s,hasPopperEscaped:c};t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":s,"data-popper-escaped":c})}const Ir={name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:Fr};function Cr(t,a,i){var o=B(t);var f=[n,r].indexOf(o)>=0?-1:1;var v=typeof i==="function"?i(Object.assign({},a,{placement:t})):i,u=v[0],s=v[1];u=u||0;s=(s||0)*f;return[n,e].indexOf(o)>=0?{x:s,y:u}:{x:u,y:s}}function zr(r){var t=r.state,e=r.options,n=r.name;var a=e.offset,i=a===void 0?[0,0]:a;var o=d.reduce((function(r,e){r[e]=Cr(e,t.rects,i);return r}),{});var f=o[t.placement],v=f.x,u=f.y;if(t.modifiersData.popperOffsets!=null){t.modifiersData.popperOffsets.x+=v;t.modifiersData.popperOffsets.y+=u}t.modifiersData[n]=o}const Dr={name:"offset",enabled:true,phase:"main",requires:["popperOffsets"],fn:zr};function Ur(r){var t=r.state,e=r.name;t.modifiersData[e]=Pr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Vr={name:"popperOffsets",enabled:true,phase:"read",fn:Ur,data:{}};function $r(r){return r==="x"?"y":"x"}function _r(a){var i=a.state,f=a.options,v=a.name;var u=f.mainAxis,s=u===void 0?true:u,c=f.altAxis,l=c===void 0?false:c,d=f.boundary,p=f.rootBoundary,h=f.altBoundary,b=f.padding,m=f.tether,y=m===void 0?true:m,x=f.tetherOffset,w=x===void 0?0:x;var O=Sr(i,{boundary:d,rootBoundary:p,padding:b,altBoundary:h});var g=B(i.placement);var j=ar(i.placement);var A=!j;var k=K(g);var M=$r(k);var q=i.modifiersData.popperOffsets;var E=i.rects.reference;var P=i.rects.popper;var S=typeof w==="function"?w(Object.assign({},i.rects,{placement:i.placement})):w;var W=typeof S==="number"?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S);var H=i.modifiersData.offset?i.modifiersData.offset[i.placement]:null;var L={x:0,y:0};if(!q){return}if(s){var F;var I=k==="y"?r:n;var z=k==="y"?t:e;var D=k==="y"?"height":"width";var U=q[k];var V=U+O[I];var $=U-O[z];var _=y?-P[D]/2:0;var G=j===o?E[D]:P[D];var Y=j===o?-P[D]:-E[D];var Z=i.elements.arrow;var rr=y&&Z?C(Z):{width:0,height:0};var tr=i.modifiersData["arrow#persistent"]?i.modifiersData["arrow#persistent"].padding:X();var er=tr[I];var nr=tr[z];var ir=N(0,E[D],rr[D]);var or=A?E[D]/2-_-ir-er-W.mainAxis:G-ir-er-W.mainAxis;var fr=A?-E[D]/2+_+ir+nr+W.mainAxis:Y+ir+nr+W.mainAxis;var vr=i.elements.arrow&&J(i.elements.arrow);var ur=vr?k==="y"?vr.clientTop||0:vr.clientLeft||0:0;var sr=(F=H==null?void 0:H[k])!=null?F:0;var cr=U+or-sr-ur;var lr=U+fr-sr;var dr=N(y?R(V,cr):V,U,y?T($,lr):$);q[k]=dr;L[k]=dr-U}if(l){var pr;var hr=k==="x"?r:n;var br=k==="x"?t:e;var mr=q[M];var yr=M==="y"?"height":"width";var xr=mr+O[hr];var wr=mr-O[br];var Or=[r,n].indexOf(g)!==-1;var gr=(pr=H==null?void 0:H[M])!=null?pr:0;var jr=Or?xr:mr-E[yr]-P[yr]-gr+W.altAxis;var Ar=Or?mr+E[yr]+P[yr]-gr-W.altAxis:wr;var kr=y&&Or?Q(jr,mr,Ar):N(y?jr:xr,mr,y?Ar:wr);q[M]=kr;L[M]=kr-mr}i.modifiersData[v]=L}const Gr={name:"preventOverflow",enabled:true,phase:"main",fn:_r,requiresIfExists:["offset"]};function Jr(r){return{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}}function Kr(r){if(r===k(r)||!q(r)){return mr(r)}else{return Jr(r)}}function Nr(r){var t=r.getBoundingClientRect();var e=H(t.width)/r.offsetWidth||1;var n=H(t.height)/r.offsetHeight||1;return e!==1||n!==1}function Qr(r,t,e){if(e===void 0){e=false}var n=q(t);var a=q(t)&&Nr(t);var i=V(t);var o=I(r,a,e);var f={scrollLeft:0,scrollTop:0};var v={x:0,y:0};if(n||!n&&!e){if(A(t)!=="body"||Or(i)){f=Kr(t)}if(q(t)){v=I(t,true);v.x+=t.clientLeft;v.y+=t.clientTop}else if(i){v.x=yr(i)}}return{x:o.left+f.scrollLeft-v.x,y:o.top+f.scrollTop-v.y,width:o.width,height:o.height}}function Xr(r){var t=new Map;var e=new Set;var n=[];r.forEach((function(r){t.set(r.name,r)}));function a(r){e.add(r.name);var i=[].concat(r.requires||[],r.requiresIfExists||[]);i.forEach((function(r){if(!e.has(r)){var n=t.get(r);if(n){a(n)}}}));n.push(r)}r.forEach((function(r){if(!e.has(r.name)){a(r)}}));return n}function Yr(r){var t=Xr(r);return j.reduce((function(r,e){return r.concat(t.filter((function(r){return r.phase===e})))}),[])}function Zr(r){var t;return function(){if(!t){t=new Promise((function(e){Promise.resolve().then((function(){t=undefined;e(r())}))}))}return t}}function rt(r){var t=r.reduce((function(r,t){var e=r[t.name];r[t.name]=e?Object.assign({},e,t,{options:Object.assign({},e.options,t.options),data:Object.assign({},e.data,t.data)}):t;return r}),{});return Object.keys(t).map((function(r){return t[r]}))}var tt={placement:"bottom",modifiers:[],strategy:"absolute"};function et(){for(var r=arguments.length,t=new Array(r),e=0;e<r;e++){t[e]=arguments[e]}return!t.some((function(r){return!(r&&typeof r.getBoundingClientRect==="function")}))}function nt(r){if(r===void 0){r={}}var t=r,e=t.defaultModifiers,n=e===void 0?[]:e,a=t.defaultOptions,i=a===void 0?tt:a;return function r(t,e,a){if(a===void 0){a=i}var o={placement:"bottom",orderedModifiers:[],options:Object.assign({},tt,i),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}};var f=[];var v=false;var u={state:o,setOptions:function r(a){var f=typeof a==="function"?a(o.options):a;c();o.options=Object.assign({},i,o.options,f);o.scrollParents={reference:M(t)?jr(t):t.contextElement?jr(t.contextElement):[],popper:jr(e)};var v=Yr(rt([].concat(n,o.options.modifiers)));o.orderedModifiers=v.filter((function(r){return r.enabled}));s();return u.update()},forceUpdate:function r(){if(v){return}var t=o.elements,e=t.reference,n=t.popper;if(!et(e,n)){return}o.rects={reference:Qr(e,J(n),o.options.strategy==="fixed"),popper:C(n)};o.reset=false;o.placement=o.options.placement;o.orderedModifiers.forEach((function(r){return o.modifiersData[r.name]=Object.assign({},r.data)}));for(var a=0;a<o.orderedModifiers.length;a++){if(o.reset===true){o.reset=false;a=-1;continue}var i=o.orderedModifiers[a],f=i.fn,s=i.options,c=s===void 0?{}:s,l=i.name;if(typeof f==="function"){o=f({state:o,options:c,name:l,instance:u})||o}}},update:Zr((function(){return new Promise((function(r){u.forceUpdate();r(o)}))})),destroy:function r(){c();v=true}};if(!et(t,e)){return u}u.setOptions(a).then((function(r){if(!v&&a.onFirstUpdate){a.onFirstUpdate(r)}}));function s(){o.orderedModifiers.forEach((function(r){var t=r.name,e=r.options,n=e===void 0?{}:e,a=r.effect;if(typeof a==="function"){var i=a({state:o,name:t,instance:u,options:n});var v=function r(){};f.push(i||v)}}))}function c(){f.forEach((function(r){return r()}));f=[]}return u}}var at=[lr,Vr,ur,W,Dr,Rr,Gr,nr,Ir];var it=nt({defaultModifiers:at});class ot{constructor(r,t,e){this.handleTransitionEnd=this.handleTransitionEnd.bind(this);this.anchor=r;this.popover=t;this.options=Object.assign({skidding:0,distance:0,placement:"bottom-start",strategy:"absolute",transitionElement:this.popover,visibleClass:"popover-visible",onAfterShow:()=>{},onAfterHide:()=>{},onTransitionEnd:()=>{}},e);this.popover.hidden=true;this.popover.classList.remove(this.options.visibleClass);this.popover.addEventListener("transitionend",this.handleTransitionEnd)}handleTransitionEnd(r){const t=r.target;if(t===this.options.transitionElement){this.options.onTransitionEnd.call(this,r);if(this.isVisible===false&&!this.popover.hidden){this.popover.hidden=true;this.popover.classList.remove(this.options.visibleClass);this.options.onAfterHide.call(this)}}}destroy(){this.popover.removeEventListener("transitionend",this.handleTransitionEnd);if(this.popper){this.popper.destroy();this.popper=null}}show(){this.isVisible=true;this.popover.hidden=false;requestAnimationFrame((()=>this.popover.classList.add(this.options.visibleClass)));if(this.popper){this.popper.destroy()}const r=this.options.placement.includes("center")?"top":this.options.placement;this.popper=it(this.anchor,this.popover,{placement:r,strategy:this.options.strategy,modifiers:[{name:"sameWidth",enabled:true,fn:({state:r})=>{r.styles.popper.minWidth=`${r.rects.reference.width}px`},phase:"beforeWrite",requires:["computeStyles"]},{name:"flip",options:{boundary:"viewport"}},{name:"offset",options:{padding:5,offset:({reference:r})=>{if(this.options.placement!=="center")return[this.options.skidding,this.options.distance];return[this.options.skidding,(r.height+1)*-1]}}}]});this.popover.addEventListener("transitionend",(()=>this.options.onAfterShow.call(this)),{once:true});requestAnimationFrame((()=>this.popper.update()))}hide(){this.isVisible=false;this.popover.classList.remove(this.options.visibleClass)}setOptions(r){this.options=Object.assign(this.options,r);this.isVisible?this.popover.classList.add(this.options.visibleClass):this.popover.classList.remove(this.options.visibleClass);const t=this.options.placement.includes("center")?"top":this.options.placement;if(this.popper){this.popper.setOptions({placement:t,strategy:this.options.strategy});requestAnimationFrame((()=>this.popper.update()))}}}export{ot as P};
5
+ //# sourceMappingURL=p-cd1fd454.js.map