@nanoporetech-digital/components 1.15.4 → 1.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/{algoliasearch.umd-da1e6f0c.js → algoliasearch.umd-0ccd70ce.js} +3 -3
  3. package/dist/cjs/{algoliasearch.umd-da1e6f0c.js.map → algoliasearch.umd-0ccd70ce.js.map} +1 -1
  4. package/dist/cjs/{component-store-1aa64afb.js → component-store-bda9b645.js} +107 -36
  5. package/dist/cjs/component-store-bda9b645.js.map +1 -0
  6. package/dist/cjs/nano-algolia-filter.cjs.entry.js +1 -1
  7. package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
  8. package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
  9. package/dist/cjs/nano-date-picker_2.cjs.entry.js +1 -1
  10. package/dist/cjs/nano-dialog.cjs.entry.js +1 -1
  11. package/dist/cjs/nano-global-nav.cjs.entry.js +4 -2
  12. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nano-global-search-results.cjs.entry.js +3 -2
  14. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-nav-item_2.cjs.entry.js +1 -1
  16. package/dist/cjs/nano-slides.cjs.entry.js +7 -6
  17. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
  19. package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
  20. package/dist/cjs/{popover-04a39914.js → popover-d033efa2.js} +29 -10
  21. package/dist/cjs/popover-d033efa2.js.map +1 -0
  22. package/dist/collection/components/accordion/accordion.js +1 -1
  23. package/dist/collection/components/alert/alert.js +1 -1
  24. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  25. package/dist/collection/components/algolia/algolia-input.js +5 -5
  26. package/dist/collection/components/algolia/algolia-results.js +1 -1
  27. package/dist/collection/components/algolia/algolia.js +6 -6
  28. package/dist/collection/components/checkbox/checkbox-group.js +2 -2
  29. package/dist/collection/components/checkbox/checkbox.js +3 -3
  30. package/dist/collection/components/date-input/date-input.js +7 -7
  31. package/dist/collection/components/date-picker/date-picker.js +5 -5
  32. package/dist/collection/components/details/details.js +1 -1
  33. package/dist/collection/components/dialog/dialog.js +1 -1
  34. package/dist/collection/components/file-upload/file-upload.js +4 -4
  35. package/dist/collection/components/global-nav/global-nav.js +6 -4
  36. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  37. package/dist/collection/components/global-search-results/global-search-results.js +3 -2
  38. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  39. package/dist/collection/components/grid/grid-item.js +1 -1
  40. package/dist/collection/components/icon/icon.js +1 -1
  41. package/dist/collection/components/input/input.js +5 -5
  42. package/dist/collection/components/nav-item/nav-item.js +4 -4
  43. package/dist/collection/components/range/range.js +4 -4
  44. package/dist/collection/components/resize-observe/resize-observe.js +1 -1
  45. package/dist/collection/components/select/select.js +5 -5
  46. package/dist/collection/components/slides/slides.js +7 -7
  47. package/dist/collection/components/tabs/tab-group.js +2 -2
  48. package/dist/collection/utils/testing/index.js +3 -2
  49. package/dist/collection/utils/testing/index.js.map +1 -1
  50. package/dist/custom-elements/index.js +147 -54
  51. package/dist/custom-elements/index.js.map +1 -1
  52. package/dist/esm/{algoliasearch.umd-1bf96913.js → algoliasearch.umd-8e5aff52.js} +3 -3
  53. package/dist/esm/{algoliasearch.umd-1bf96913.js.map → algoliasearch.umd-8e5aff52.js.map} +1 -1
  54. package/dist/esm/{component-store-f0e6cb24.js → component-store-08f430dd.js} +107 -36
  55. package/dist/esm/component-store-08f430dd.js.map +1 -0
  56. package/dist/esm/nano-algolia-filter.entry.js +1 -1
  57. package/dist/esm/nano-algolia-input.entry.js +2 -2
  58. package/dist/esm/nano-algolia.entry.js +2 -2
  59. package/dist/esm/nano-date-picker_2.entry.js +1 -1
  60. package/dist/esm/nano-dialog.entry.js +1 -1
  61. package/dist/esm/nano-global-nav.entry.js +4 -2
  62. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  63. package/dist/esm/nano-global-search-results.entry.js +3 -2
  64. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  65. package/dist/esm/nano-nav-item_2.entry.js +1 -1
  66. package/dist/esm/nano-slides.entry.js +7 -6
  67. package/dist/esm/nano-slides.entry.js.map +1 -1
  68. package/dist/esm/nano-tab-group.entry.js +1 -1
  69. package/dist/esm/nano-tooltip.entry.js +1 -1
  70. package/dist/esm/{popover-9169205e.js → popover-2c7b2326.js} +29 -10
  71. package/dist/esm/popover-2c7b2326.js.map +1 -0
  72. package/dist/esm-es5/{algoliasearch.umd-1bf96913.js → algoliasearch.umd-8e5aff52.js} +3 -3
  73. package/dist/esm-es5/{algoliasearch.umd-1bf96913.js.map → algoliasearch.umd-8e5aff52.js.map} +1 -1
  74. package/dist/esm-es5/component-store-08f430dd.js +5 -0
  75. package/dist/esm-es5/component-store-08f430dd.js.map +1 -0
  76. package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
  77. package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
  78. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  79. package/dist/esm-es5/nano-date-picker_2.entry.js +1 -1
  80. package/dist/esm-es5/nano-dialog.entry.js +1 -1
  81. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  82. package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
  83. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  84. package/dist/esm-es5/nano-global-search-results.entry.js.map +1 -1
  85. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  86. package/dist/esm-es5/nano-slides.entry.js +3 -3
  87. package/dist/esm-es5/nano-slides.entry.js.map +1 -1
  88. package/dist/esm-es5/nano-tab-group.entry.js +1 -1
  89. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  90. package/dist/esm-es5/popover-2c7b2326.js +5 -0
  91. package/dist/esm-es5/popover-2c7b2326.js.map +1 -0
  92. package/dist/nano-components/nano-components.esm.js +1 -1
  93. package/dist/nano-components/{p-89dc184e.system.entry.js → p-014f62dc.system.entry.js} +2 -2
  94. package/dist/nano-components/{p-89dc184e.system.entry.js.map → p-014f62dc.system.entry.js.map} +0 -0
  95. package/dist/nano-components/{p-beee3c85.system.entry.js → p-03104b3a.system.entry.js} +2 -2
  96. package/dist/nano-components/{p-beee3c85.system.entry.js.map → p-03104b3a.system.entry.js.map} +0 -0
  97. package/dist/nano-components/{p-26dcb670.system.entry.js → p-12ad4144.system.entry.js} +2 -2
  98. package/dist/nano-components/{p-26dcb670.system.entry.js.map → p-12ad4144.system.entry.js.map} +0 -0
  99. package/dist/nano-components/{p-7b0c0c51.entry.js → p-2bf707e3.entry.js} +4 -4
  100. package/dist/nano-components/{p-7b0c0c51.entry.js.map → p-2bf707e3.entry.js.map} +1 -1
  101. package/dist/nano-components/{p-22a51b34.system.entry.js → p-2c34907c.system.entry.js} +2 -2
  102. package/dist/nano-components/{p-22a51b34.system.entry.js.map → p-2c34907c.system.entry.js.map} +0 -0
  103. package/dist/nano-components/p-2df9e977.system.entry.js +5 -0
  104. package/dist/nano-components/p-2df9e977.system.entry.js.map +1 -0
  105. package/dist/nano-components/{p-dbbf7b9d.system.entry.js → p-31ade697.system.entry.js} +2 -2
  106. package/dist/nano-components/{p-dbbf7b9d.system.entry.js.map → p-31ade697.system.entry.js.map} +0 -0
  107. package/dist/nano-components/{p-81248be1.entry.js → p-3d1328a2.entry.js} +2 -2
  108. package/dist/nano-components/{p-81248be1.entry.js.map → p-3d1328a2.entry.js.map} +0 -0
  109. package/dist/nano-components/p-3f00179c.js +5 -0
  110. package/dist/nano-components/p-3f00179c.js.map +1 -0
  111. package/dist/nano-components/{p-78c2b685.entry.js → p-457864f2.entry.js} +2 -2
  112. package/dist/nano-components/{p-78c2b685.entry.js.map → p-457864f2.entry.js.map} +0 -0
  113. package/dist/nano-components/{p-b499e206.system.entry.js → p-568b607c.system.entry.js} +2 -2
  114. package/dist/nano-components/{p-b499e206.system.entry.js.map → p-568b607c.system.entry.js.map} +0 -0
  115. package/dist/nano-components/{p-7dc55b56.system.entry.js → p-5dbb9fb7.system.entry.js} +4 -4
  116. package/dist/nano-components/{p-7dc55b56.system.entry.js.map → p-5dbb9fb7.system.entry.js.map} +1 -1
  117. package/dist/nano-components/p-7154bfd9.system.js +1 -1
  118. package/dist/nano-components/p-71b5ba7f.system.js +5 -0
  119. package/dist/nano-components/p-71b5ba7f.system.js.map +1 -0
  120. package/dist/nano-components/{p-6e2cc669.entry.js → p-75f1499e.entry.js} +2 -2
  121. package/dist/nano-components/{p-6e2cc669.entry.js.map → p-75f1499e.entry.js.map} +0 -0
  122. package/dist/nano-components/p-7dd28543.js +5 -0
  123. package/dist/nano-components/p-7dd28543.js.map +1 -0
  124. package/dist/nano-components/{p-d79e5a9b.entry.js → p-8387377a.entry.js} +2 -2
  125. package/dist/nano-components/{p-d79e5a9b.entry.js.map → p-8387377a.entry.js.map} +0 -0
  126. package/dist/nano-components/{p-3bbdfb96.js → p-8757b4eb.js} +3 -3
  127. package/dist/nano-components/{p-3bbdfb96.js.map → p-8757b4eb.js.map} +1 -1
  128. package/dist/nano-components/{p-a32b6a4a.entry.js → p-95c8e898.entry.js} +2 -2
  129. package/dist/nano-components/{p-a32b6a4a.entry.js.map → p-95c8e898.entry.js.map} +0 -0
  130. package/dist/nano-components/{p-5e8e5fc0.system.entry.js → p-9d38cc3e.system.entry.js} +2 -2
  131. package/dist/nano-components/{p-5e8e5fc0.system.entry.js.map → p-9d38cc3e.system.entry.js.map} +0 -0
  132. package/dist/nano-components/{p-25c9fb70.system.js → p-a16651a6.system.js} +3 -3
  133. package/dist/nano-components/{p-25c9fb70.system.js.map → p-a16651a6.system.js.map} +1 -1
  134. package/dist/nano-components/{p-d82e941d.system.entry.js → p-b15362c6.system.entry.js} +2 -2
  135. package/dist/nano-components/p-b15362c6.system.entry.js.map +1 -0
  136. package/dist/nano-components/{p-80573547.entry.js → p-b198296f.entry.js} +2 -2
  137. package/dist/nano-components/{p-80573547.entry.js.map → p-b198296f.entry.js.map} +0 -0
  138. package/dist/nano-components/p-d31761c8.system.js +5 -0
  139. package/dist/nano-components/p-d31761c8.system.js.map +1 -0
  140. package/dist/nano-components/{p-4948b950.entry.js → p-d6d1a8c2.entry.js} +2 -2
  141. package/dist/nano-components/{p-4948b950.entry.js.map → p-d6d1a8c2.entry.js.map} +0 -0
  142. package/dist/nano-components/{p-fb75dd54.entry.js → p-d99e661e.entry.js} +2 -2
  143. package/dist/nano-components/p-d99e661e.entry.js.map +1 -0
  144. package/dist/nano-components/{p-43d1b037.entry.js → p-e53a485b.entry.js} +2 -2
  145. package/dist/nano-components/{p-43d1b037.entry.js.map → p-e53a485b.entry.js.map} +0 -0
  146. package/dist/nano-components/p-e669e7d5.entry.js +5 -0
  147. package/dist/nano-components/p-e669e7d5.entry.js.map +1 -0
  148. package/dist/nano-components/{p-980231d8.system.entry.js → p-f4b06615.system.entry.js} +2 -2
  149. package/dist/nano-components/{p-980231d8.system.entry.js.map → p-f4b06615.system.entry.js.map} +0 -0
  150. package/dist/types/utils/testing/index.d.ts +3 -1
  151. package/docs-json.json +1 -1
  152. package/package.json +4 -4
  153. package/dist/cjs/component-store-1aa64afb.js.map +0 -1
  154. package/dist/cjs/popover-04a39914.js.map +0 -1
  155. package/dist/esm/component-store-f0e6cb24.js.map +0 -1
  156. package/dist/esm/popover-9169205e.js.map +0 -1
  157. package/dist/esm-es5/component-store-f0e6cb24.js +0 -5
  158. package/dist/esm-es5/component-store-f0e6cb24.js.map +0 -1
  159. package/dist/esm-es5/popover-9169205e.js +0 -5
  160. package/dist/esm-es5/popover-9169205e.js.map +0 -1
  161. package/dist/nano-components/p-0c6ab963.system.js +0 -5
  162. package/dist/nano-components/p-0c6ab963.system.js.map +0 -1
  163. package/dist/nano-components/p-42498146.js +0 -5
  164. package/dist/nano-components/p-42498146.js.map +0 -1
  165. package/dist/nano-components/p-4ee6f8e7.entry.js +0 -5
  166. package/dist/nano-components/p-4ee6f8e7.entry.js.map +0 -1
  167. package/dist/nano-components/p-8766e262.js +0 -5
  168. package/dist/nano-components/p-8766e262.js.map +0 -1
  169. package/dist/nano-components/p-d82e941d.system.entry.js.map +0 -1
  170. package/dist/nano-components/p-f1f2a010.system.entry.js +0 -5
  171. package/dist/nano-components/p-f1f2a010.system.entry.js.map +0 -1
  172. package/dist/nano-components/p-f65a1ff4.system.js +0 -5
  173. package/dist/nano-components/p-f65a1ff4.system.js.map +0 -1
  174. package/dist/nano-components/p-fb75dd54.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"global-search-results.js","sourceRoot":"","sources":["../../../src/components/global-search-results/global-search-results.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Host,\n Element,\n State,\n ComponentInterface,\n Watch,\n Listen,\n} from '@stencil/core';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport { AloliaSearchResultDetail } from '../../interface';\nimport { SearchIndex } from '../../interface';\n\n/**\n * Nanopore Global Search results component\n * to be used in conjunction with [Globla-Nav](/story/nano-compounds-global-nav).\n * A shortcut / helper which combines algolia components.\n * There should only be one <nano-global-search-results> per page\n * and should be a direct child of <nano-global-nav>\n */\n@Component({\n tag: 'nano-global-search-results',\n styleUrl: 'global-search-results.scss',\n shadow: true,\n})\nexport class GlobalSearchResults implements ComponentInterface {\n private algoliaResultsEle: HTMLNanoAlgoliaResultsElement;\n private filtersDiv: HTMLElement;\n private openFilterBtn: HTMLButtonElement;\n private ro: ResizeObserver;\n\n @State() algoliaEle: HTMLNanoAlgoliaElement;\n @State() currentWidth: number;\n @State() apiKey: string;\n @State() appId: string;\n @State() index: SearchIndex;\n\n @Element() private el: HTMLNanoGlobalSearchResultsElement;\n\n @Watch('algoliaEle')\n @Watch('apiKey')\n @Watch('appId')\n handleAlgoliaCredsChange() {\n if (!this.apiKey || !this.appId || !this.algoliaEle) return;\n this.algoliaEle.apiKey = this.apiKey;\n this.algoliaEle.appId = this.appId;\n }\n\n @Watch('algoliaEle')\n @Watch('index')\n handleAlgoliaIndexChange() {\n if (!this.index || !this.algoliaEle) return;\n this.algoliaEle.searchIndex = this.index;\n }\n\n @Listen('nanoSearchReset', { target: 'body' })\n handleGlobalNavReset(e: CustomEvent & { target: HTMLElement }) {\n if (e.target.tagName !== 'NANO-GLOBAL-NAV') return;\n this.algoliaResultsEle = null;\n this.goback();\n }\n\n @Listen('nanoSearchResult', { target: 'body' })\n handleGlobalNavSearch(e: CustomEvent & { target: HTMLElement }) {\n if (e.target.tagName !== 'NANO-GLOBAL-NAV') return;\n const {\n detail: { results, client },\n } = e as { detail: AloliaSearchResultDetail };\n const result = results.find((result) => result.selected);\n\n this.apiKey = client.apiKey;\n this.appId = client.appId;\n this.index = {\n name: result.indexName,\n index: result.index,\n domain: result.domain,\n filters: result.filters,\n };\n this.algoliaEle.query = result.query;\n }\n\n @Listen('nanoChange')\n handleReorder(e: CustomEvent & { target: HTMLNanoSelectElement }) {\n if (\n e\n .composedPath()\n .find(\n (ele: HTMLElement) =>\n ele.classList && ele.classList.contains('indexchange')\n ) &&\n !!this.algoliaResultsEle\n ) {\n this.changeOrder(e);\n }\n }\n\n @Listen('nanoResultsShown')\n attachListeners(e: CustomEvent & { target: HTMLElement }) {\n if (\n !e\n .composedPath()\n .find((ele: HTMLElement) => ele.id && ele.id === 'main-search')\n )\n return;\n\n this.algoliaResultsEle = this.algoliaEle.querySelector(\n '#main-search-results'\n );\n\n // add results listeners\n this.attachResultListeners();\n\n this.algoliaEle.querySelectorAll('.filters-reset').forEach((item) => {\n item.addEventListener('click', () => {\n this.removeAllFilters();\n });\n });\n\n this.algoliaEle.querySelectorAll('.close-filters').forEach((item) => {\n item.addEventListener('click', () => {\n this.closefilters();\n });\n });\n\n let filterWrap = this.algoliaEle.querySelector('.filters-wrap');\n if (filterWrap) {\n filterWrap.addEventListener('click', (e) => {\n e.stopPropagation();\n });\n }\n\n this.filtersDiv = this.algoliaEle.querySelector('#main-search-filters');\n }\n\n @Listen('nanoNewResults', { target: 'body' })\n attachResultListeners(e?: CustomEvent & { target: HTMLElement }) {\n if (e && e.composedPath().find((el) => el === this.algoliaEle)) {\n this.algoliaResultsEle = this.algoliaEle.querySelector(\n 'nano-algolia-results'\n );\n }\n if (!this.algoliaResultsEle) return;\n let resultEle = this.algoliaResultsEle;\n\n resultEle.querySelectorAll('.remove-filter').forEach((item) => {\n item.addEventListener('click', (clickEv: MouseEvent) => {\n let filter = clickEv.target as HTMLElement;\n this.removeFilter(filter.dataset.filter, filter.dataset.filterVal);\n });\n });\n\n resultEle.querySelectorAll('.back-btn').forEach((item) => {\n item.addEventListener('click', () => {\n this.goback();\n });\n });\n\n resultEle.querySelectorAll('.topbar__show-filters').forEach((item) => {\n this.openFilterBtn = item as HTMLButtonElement;\n item.addEventListener('click', () => {\n this.filtersDiv.tabIndex = -1;\n this.filtersDiv.classList.add('show');\n this.filtersDiv.setAttribute('aria-expanded', 'true');\n document.body.style.overflow = 'hidden';\n setTimeout(() => this.filtersDiv.focus(), 20);\n });\n });\n }\n\n private changeOrder(ev) {\n this.algoliaEle.replicaIndex = ev.detail.value;\n }\n\n private goback() {\n this.removeAllFilters();\n this.algoliaEle.showResults = false;\n this.algoliaEle.query = '';\n }\n\n private removeFilter(facet, filter) {\n this.algoliaEle.removeFilters(facet, filter);\n }\n\n private removeAllFilters() {\n this.algoliaEle.removeFilters();\n }\n\n private closefilters() {\n if (!this.filtersDiv) return;\n this.filtersDiv.tabIndex = null;\n this.filtersDiv.classList.remove('show');\n this.filtersDiv.setAttribute('aria-expanded', 'false');\n document.body.style.overflow = '';\n setTimeout(() => this.openFilterBtn.focus(), 20);\n }\n\n componentDidLoad() {\n this.ro = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (!entry.contentRect.width) return;\n this.currentWidth = entry.contentRect.width;\n }\n });\n this.ro.observe(this.el);\n this.algoliaEle.filters = [\n 'created > ' + Math.floor((Date.now() - 63115200000) / 1000),\n ]; // only get last 2 years\n }\n\n render() {\n return (\n <Host\n class={{ small: this.currentWidth < 577 }}\n dir={(this.el.ownerDocument as Document).dir === 'rtl' ? 'rtl' : false}\n >\n <nano-algolia\n store-id=\"searchq\"\n store-method=\"url-hash-push\"\n class=\"main-search__wrap sc-nano-global-search-results\"\n ref={(ele) => (this.algoliaEle = ele)}\n infinite-scroll\n id=\"main-search\"\n >\n <script type=\"text/template\" slot=\"template\">\n {`<div class=\"main-search sc-nano-global-search-results\">\n <nano-algolia-results id=\"main-search-results\" class=\"main-search__results sc-nano-global-search-results\">\n <script type=\"text/template\" slot=\"start-template\">\n <div class=\"sc-nano-global-search-results main-search__topbar topbar\">\n <button class=\"sc-nano-global-search-results topbar__bkbtn back-btn icon-button\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/chevron-left\" size=\"small\"></nano-icon>\n </button>\n <div>\n <em class=\"sc-nano-global-search-results topbar__query\">'{{ it.query }}' - </em> <strong>{{ it.totalHitsWithFilters }}</strong> Results\n </div>\n\n <div class=\"sc-nano-global-search-results topbar__filtering\">\n {{ @if (it.results.length) }}\n\n {{ @if (it.indexName === 'All') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"all_prod_en\">Sort by: Most relevant</option>\n <option value=\"all_prod_en_date_desc\">Sort by: Newest</option>\n <option value=\"all_prod_en_date_asc\">Sort by: Oldest</option>\n <option value=\"all_prod_en_activity_date_desc\">Sort by: Recent activity</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'www') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"cws_english_en\">Sort by: Most relevant</option>\n <option value=\"cws_english_en_date_desc\">Sort by: Newest</option>\n <option value=\"cws_english_en_date_asc\">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Resources') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"cws_english_resources_en\">Sort by: Most relevant</option>\n <option value=\"cws_english_resources_en_featured_desc\">Sort by: Newest</option>\n <option value=\"cws_english_resources_en_featured_asc\">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Store') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"store_prod\">Sort by: Most relevant</option>\n <option value=\"store_prod_date_desc\">Sort by: Newest</option>\n <option value=\"store_prod_date_asc\">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Community') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--community indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"community_prod\">Sort by: Most relevant</option>\n <option value=\"community_prod_date_desc\">Sort by: Newest</option>\n <option value=\"community_prod_date_asc\">Sort by: Oldest</option>\n <option value=\"community_prod_activity_date_desc\">Sort by: Recent activity</option>\n </nano-select>\n {{ /if }}\n {{ /if }}\n\n <button class=\"sc-nano-global-search-results topbar__show-filters filters-title\" aria-controls=\"main-search-filters\">\n {{ @if (it.appliedFilters && it.appliedFilters.length > 0) }}\n <span class=\"sc-nano-global-search-results topbar__filter-count\">\n {{ (it.appliedFilters.reduce(function(a, b) { return a + (b.values ? b.values.length : 0) }, 0)) }}\n </span>\n {{ /if }}\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/filter\"></nano-icon>\n </button>\n </div>\n </div>\n\n {{ @if (it.results.length) }}\n <div class=\"sc-nano-global-search-results main-search__applied-filters\">\n {{ @if (it.appliedFilters) }}\n {{ @each(it.appliedFilters) => filterObj }}\n {{ @each(filterObj.values) => filterVal }}\n <span class=\"sc-nano-global-search-results main-search__applied-filter\">\n {{ filterVal | public_name }}\n <button class=\"sc-nano-global-search-results icon-button remove-filter\" data-filter=\"{{ filterObj.name }}\" data-filter-val=\"{{ filterVal }}\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </span>\n {{ /each }}\n {{ /each }}\n {{ #else }}\n <span class=\"sc-nano-global-search-results main-search__applied-nofilter\">&nbsp;</span>\n {{ /if }}\n </div>\n {{ /if }}\n </script>\n\n <script type=\"text/template\" slot=\"result-template\">\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n <li class=\"sc-nano-global-search-results\">\n <a class=\"sc-nano-global-search-results result\" href=\"{{ result.url | abs_url(it, result) }}\">\n <h4 class=\"sc-nano-global-search-results result__title\" data-icon-set=\"{{(iconSet = false)}}\">\n {{ @if (!it.legacy) }}\n\n {{ @if (result.type === 'faq' || result.type === 'faqs') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/question-circle\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'comment') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/comment\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'protocol') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/clipboard-list\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'publication') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/file-chart-line\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'poster' || result.type === 'lc_poster') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/presentation\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'post') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/comments\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'news_item') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/newspaper\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'event') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/calendar\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'talk' || result.type === 'lc_lightning_talk' || result.type === 'ncm_plenary_talk' || result.type === 'ncm_lightning_talk') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/keynote\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'video') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/video\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'data_release') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/analytics\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'job_vacancy') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/ballot-check\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'tool') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/wrench\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'literature') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/book\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'community_info') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/users\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'article') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/file-alt\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'provider') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/handshake\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'apps') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/vials\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'white_paper') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/file-pdf\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'Nanopore Store') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/shopping-cart\"></nano-icon>\n {{ /if }}\n\n {{ @if (!result.type || !iconSet) }}\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/file\"></nano-icon>\n {{ /if }}\n {{ /if }}\n {{ result.title | safe }}\n </h4>\n {{ @if (result.body) }}\n <div class=\"sc-nano-global-search-results result__body\">{{ result.body | safe | trim_to(200) }}</div>\n {{ /if }}\n {{ @if (result.updated) }}\n <div class=\"sc-nano-global-search-results result__date\">Last Updated: {{ result.updated | date_short }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class=\"sc-nano-global-search-results result__date\">Added: {{ result.created | date_short }}</div>\n {{ /if }}\n {{ /if }}\n </a>\n </li>\n {{ /each }}\n {{ /if }}\n </script>\n\n <div slot=\"start-output\"></div>\n <ul slot=\"result-output\" class=\"sc-nano-global-search-results\"></ul>\n </nano-algolia-results>\n\n {{ @if(Object.keys(it.origFilters).length) }}\n <div class=\"sc-nano-global-search-results main-search__filters filters close-filters\" id=\"main-search-filters\">\n <div class=\"sc-nano-global-search-results filters-wrap\">\n {{ @if(it.totalHits) }}\n <div class=\"sc-nano-global-search-results filters-header\">\n <strong class=\"sc-nano-global-search-results filters-title\">Filters</strong>\n <button class=\"sc-nano-global-search-results filters-reset\">Reset</button>\n <button class=\"sc-nano-global-search-results filters__close-filters close-filters icon-button\" aria-controls=\"main-search-filters\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </div>\n {{ /if }}\n\n <div>\n {{ @if(it.origFilters['type']) }}\n <nano-details class=\"sc-nano-global-search-results\" open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Type</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf1\" store-method=\"url-hash-push\" filter-name=\"type\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"type-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"type-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['channel']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Channels</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf2\" store-method=\"url-hash-push\" filter-name=\"channel\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"channel-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"channel-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['authors']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Authors</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf3\" store-method=\"url-hash-push\" filter-name=\"authors\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"authors-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"authors-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['categories_without_path']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Category</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf4\" store-method=\"url-hash-push\" filter-name=\"categories_without_path\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n {{ @if(!filter.match(/publication/)) }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"cwp-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"cwp-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /if }}\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['tags']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Tags</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf5\" store-method=\"url-hash-push\" filter-name=\"tags\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"tags-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"tags-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n </div>\n </div>\n </div>\n {{ /if }}\n </div>`}\n </script>\n <div slot=\"output\"></div>\n <slot />\n </nano-algolia>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"global-search-results.js","sourceRoot":"","sources":["../../../src/components/global-search-results/global-search-results.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Host,\n Element,\n State,\n ComponentInterface,\n Watch,\n Listen,\n} from '@stencil/core';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport { AloliaSearchResultDetail } from '../../interface';\nimport { SearchIndex } from '../../interface';\nimport { raf } from '../../utils';\n\n/**\n * Nanopore Global Search results component\n * to be used in conjunction with [Globla-Nav](/story/nano-compounds-global-nav).\n * A shortcut / helper which combines algolia components.\n * There should only be one <nano-global-search-results> per page\n * and should be a direct child of <nano-global-nav>\n */\n@Component({\n tag: 'nano-global-search-results',\n styleUrl: 'global-search-results.scss',\n shadow: true,\n})\nexport class GlobalSearchResults implements ComponentInterface {\n private algoliaResultsEle: HTMLNanoAlgoliaResultsElement;\n private filtersDiv: HTMLElement;\n private openFilterBtn: HTMLButtonElement;\n private ro: ResizeObserver;\n\n @State() algoliaEle: HTMLNanoAlgoliaElement;\n @State() currentWidth: number;\n @State() apiKey: string;\n @State() appId: string;\n @State() index: SearchIndex;\n\n @Element() private el: HTMLNanoGlobalSearchResultsElement;\n\n @Watch('algoliaEle')\n @Watch('apiKey')\n @Watch('appId')\n handleAlgoliaCredsChange() {\n if (!this.apiKey || !this.appId || !this.algoliaEle) return;\n this.algoliaEle.apiKey = this.apiKey;\n this.algoliaEle.appId = this.appId;\n }\n\n @Watch('algoliaEle')\n @Watch('index')\n handleAlgoliaIndexChange() {\n if (!this.index || !this.algoliaEle) return;\n this.algoliaEle.searchIndex = this.index;\n }\n\n @Listen('nanoSearchReset', { target: 'body' })\n handleGlobalNavReset(e: CustomEvent & { target: HTMLElement }) {\n if (e.target.tagName !== 'NANO-GLOBAL-NAV') return;\n this.algoliaResultsEle = null;\n this.goback();\n }\n\n @Listen('nanoSearchResult', { target: 'body' })\n handleGlobalNavSearch(e: CustomEvent & { target: HTMLElement }) {\n if (e.target.tagName !== 'NANO-GLOBAL-NAV') return;\n const {\n detail: { results, client },\n } = e as { detail: AloliaSearchResultDetail };\n const result = results.find((result) => result.selected);\n\n this.apiKey = client.apiKey;\n this.appId = client.appId;\n this.index = {\n name: result.indexName,\n index: result.index,\n domain: result.domain,\n filters: result.filters,\n };\n this.algoliaEle.query = result.query;\n }\n\n @Listen('nanoChange')\n handleReorder(e: CustomEvent & { target: HTMLNanoSelectElement }) {\n if (\n e\n .composedPath()\n .find(\n (ele: HTMLElement) =>\n ele.classList && ele.classList.contains('indexchange')\n ) &&\n !!this.algoliaResultsEle\n ) {\n this.changeOrder(e);\n }\n }\n\n @Listen('nanoResultsShown')\n attachListeners(e: CustomEvent & { target: HTMLElement }) {\n if (\n !e\n .composedPath()\n .find((ele: HTMLElement) => ele.id && ele.id === 'main-search')\n )\n return;\n\n this.algoliaResultsEle = this.algoliaEle.querySelector(\n '#main-search-results'\n );\n\n // add results listeners\n this.attachResultListeners();\n\n this.algoliaEle.querySelectorAll('.filters-reset').forEach((item) => {\n item.addEventListener('click', () => {\n this.removeAllFilters();\n });\n });\n\n this.algoliaEle.querySelectorAll('.close-filters').forEach((item) => {\n item.addEventListener('click', () => {\n this.closefilters();\n });\n });\n\n let filterWrap = this.algoliaEle.querySelector('.filters-wrap');\n if (filterWrap) {\n filterWrap.addEventListener('click', (e) => {\n e.stopPropagation();\n });\n }\n\n this.filtersDiv = this.algoliaEle.querySelector('#main-search-filters');\n }\n\n @Listen('nanoNewResults', { target: 'body' })\n attachResultListeners(e?: CustomEvent & { target: HTMLElement }) {\n if (e && e.composedPath().find((el) => el === this.algoliaEle)) {\n this.algoliaResultsEle = this.algoliaEle.querySelector(\n 'nano-algolia-results'\n );\n }\n if (!this.algoliaResultsEle) return;\n let resultEle = this.algoliaResultsEle;\n\n resultEle.querySelectorAll('.remove-filter').forEach((item) => {\n item.addEventListener('click', (clickEv: MouseEvent) => {\n let filter = clickEv.target as HTMLElement;\n this.removeFilter(filter.dataset.filter, filter.dataset.filterVal);\n });\n });\n\n resultEle.querySelectorAll('.back-btn').forEach((item) => {\n item.addEventListener('click', () => {\n this.goback();\n });\n });\n\n resultEle.querySelectorAll('.topbar__show-filters').forEach((item) => {\n this.openFilterBtn = item as HTMLButtonElement;\n item.addEventListener('click', () => {\n this.filtersDiv.tabIndex = -1;\n this.filtersDiv.classList.add('show');\n this.filtersDiv.setAttribute('aria-expanded', 'true');\n document.body.style.overflow = 'hidden';\n setTimeout(() => this.filtersDiv.focus(), 20);\n });\n });\n }\n\n private changeOrder(ev) {\n this.algoliaEle.replicaIndex = ev.detail.value;\n }\n\n private goback() {\n this.removeAllFilters();\n this.algoliaEle.showResults = false;\n this.algoliaEle.query = '';\n }\n\n private removeFilter(facet, filter) {\n this.algoliaEle.removeFilters(facet, filter);\n }\n\n private removeAllFilters() {\n this.algoliaEle.removeFilters();\n }\n\n private closefilters() {\n if (!this.filtersDiv) return;\n this.filtersDiv.tabIndex = null;\n this.filtersDiv.classList.remove('show');\n this.filtersDiv.setAttribute('aria-expanded', 'false');\n document.body.style.overflow = '';\n setTimeout(() => this.openFilterBtn.focus(), 20);\n }\n\n componentDidLoad() {\n this.ro = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (!entry.contentRect.width) return;\n this.currentWidth = entry.contentRect.width;\n }\n });\n this.ro.observe(this.el);\n this.algoliaEle.filters = [\n 'created > ' + Math.floor((Date.now() - 63115200000) / 1000),\n ]; // only get last 2 years\n }\n\n render() {\n return (\n <Host\n class={{ small: this.currentWidth < 577 }}\n dir={(this.el.ownerDocument as Document).dir === 'rtl' ? 'rtl' : false}\n >\n <nano-algolia\n store-id=\"searchq\"\n store-method=\"url-hash-push\"\n class=\"main-search__wrap sc-nano-global-search-results\"\n ref={(ele) => raf(() => (this.algoliaEle = ele))}\n id=\"main-search\"\n >\n <script type=\"text/template\" slot=\"template\">\n {`<div class=\"main-search sc-nano-global-search-results\">\n <nano-algolia-results id=\"main-search-results\" class=\"main-search__results sc-nano-global-search-results\" infinite-scroll>\n <script type=\"text/template\" slot=\"start-template\">\n <div class=\"sc-nano-global-search-results main-search__topbar topbar\">\n <button class=\"sc-nano-global-search-results topbar__bkbtn back-btn icon-button\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/chevron-left\" size=\"small\"></nano-icon>\n </button>\n <div>\n <em class=\"sc-nano-global-search-results topbar__query\">'{{ it.query }}' - </em> <strong>{{ it.totalHitsWithFilters }}</strong> Results\n </div>\n\n <div class=\"sc-nano-global-search-results topbar__filtering\">\n {{ @if (it.results.length) }}\n\n {{ @if (it.indexName === 'All') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"all_prod_en\">Sort by: Most relevant</option>\n <option value=\"all_prod_en_date_desc\">Sort by: Newest</option>\n <option value=\"all_prod_en_date_asc\">Sort by: Oldest</option>\n <option value=\"all_prod_en_activity_date_desc\">Sort by: Recent activity</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'www') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"cws_english_en\">Sort by: Most relevant</option>\n <option value=\"cws_english_en_date_desc\">Sort by: Newest</option>\n <option value=\"cws_english_en_date_asc\">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Resources') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"cws_english_resources_en\">Sort by: Most relevant</option>\n <option value=\"cws_english_resources_en_featured_desc\">Sort by: Newest</option>\n <option value=\"cws_english_resources_en_featured_asc\">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Store') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"store_prod\">Sort by: Most relevant</option>\n <option value=\"store_prod_date_desc\">Sort by: Newest</option>\n <option value=\"store_prod_date_asc\">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Community') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--community indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <option value=\"community_prod\">Sort by: Most relevant</option>\n <option value=\"community_prod_date_desc\">Sort by: Newest</option>\n <option value=\"community_prod_date_asc\">Sort by: Oldest</option>\n <option value=\"community_prod_activity_date_desc\">Sort by: Recent activity</option>\n </nano-select>\n {{ /if }}\n {{ /if }}\n\n <button class=\"sc-nano-global-search-results topbar__show-filters filters-title\" aria-controls=\"main-search-filters\">\n {{ @if (it.appliedFilters && it.appliedFilters.length > 0) }}\n <span class=\"sc-nano-global-search-results topbar__filter-count\">\n {{ (it.appliedFilters.reduce(function(a, b) { return a + (b.values ? b.values.length : 0) }, 0)) }}\n </span>\n {{ /if }}\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/filter\"></nano-icon>\n </button>\n </div>\n </div>\n\n {{ @if (it.results.length) }}\n <div class=\"sc-nano-global-search-results main-search__applied-filters\">\n {{ @if (it.appliedFilters) }}\n {{ @each(it.appliedFilters) => filterObj }}\n {{ @each(filterObj.values) => filterVal }}\n <span class=\"sc-nano-global-search-results main-search__applied-filter\">\n {{ filterVal | public_name }}\n <button class=\"sc-nano-global-search-results icon-button remove-filter\" data-filter=\"{{ filterObj.name }}\" data-filter-val=\"{{ filterVal }}\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </span>\n {{ /each }}\n {{ /each }}\n {{ #else }}\n <span class=\"sc-nano-global-search-results main-search__applied-nofilter\">&nbsp;</span>\n {{ /if }}\n </div>\n {{ /if }}\n </script>\n\n <script type=\"text/template\" slot=\"result-template\">\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n <li class=\"sc-nano-global-search-results\">\n <a class=\"sc-nano-global-search-results result\" href=\"{{ result.url | abs_url(it, result) }}\">\n <h4 class=\"sc-nano-global-search-results result__title\" data-icon-set=\"{{(iconSet = false)}}\">\n {{ @if (!it.legacy) }}\n\n {{ @if (result.type === 'faq' || result.type === 'faqs') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/question-circle\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'comment') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/comment\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'protocol') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/clipboard-list\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'publication') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/file-chart-line\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'poster' || result.type === 'lc_poster') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/presentation\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'post') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/comments\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'news_item') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/newspaper\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'event') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/calendar\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'talk' || result.type === 'lc_lightning_talk' || result.type === 'ncm_plenary_talk' || result.type === 'ncm_lightning_talk') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/keynote\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'video') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/video\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'data_release') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/analytics\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'job_vacancy') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/ballot-check\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'tool') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/wrench\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'literature') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/book\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'community_info') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/users\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'article') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/file-alt\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'provider') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/handshake\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'apps') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/vials\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'white_paper') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/file-pdf\"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'Nanopore Store') }}\n <nano-icon data-icon-set=\"{{(iconSet = true)}}\" class=\"sc-nano-global-search-results\" name=\"light/shopping-cart\"></nano-icon>\n {{ /if }}\n\n {{ @if (!result.type || !iconSet) }}\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/file\"></nano-icon>\n {{ /if }}\n {{ /if }}\n {{ result.title | safe }}\n </h4>\n {{ @if (result.body) }}\n <div class=\"sc-nano-global-search-results result__body\">{{ result.body | safe | trim_to(200) }}</div>\n {{ /if }}\n {{ @if (result.updated) }}\n <div class=\"sc-nano-global-search-results result__date\">Last Updated: {{ result.updated | date_short }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class=\"sc-nano-global-search-results result__date\">Added: {{ result.created | date_short }}</div>\n {{ /if }}\n {{ /if }}\n </a>\n </li>\n {{ /each }}\n {{ /if }}\n </script>\n\n <div slot=\"start-output\"></div>\n <ul slot=\"result-output\" class=\"sc-nano-global-search-results\"></ul>\n </nano-algolia-results>\n\n {{ @if(Object.keys(it.origFilters).length) }}\n <div class=\"sc-nano-global-search-results main-search__filters filters close-filters\" id=\"main-search-filters\">\n <div class=\"sc-nano-global-search-results filters-wrap\">\n {{ @if(it.totalHits) }}\n <div class=\"sc-nano-global-search-results filters-header\">\n <strong class=\"sc-nano-global-search-results filters-title\">Filters</strong>\n <button class=\"sc-nano-global-search-results filters-reset\">Reset</button>\n <button class=\"sc-nano-global-search-results filters__close-filters close-filters icon-button\" aria-controls=\"main-search-filters\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </div>\n {{ /if }}\n\n <div>\n {{ @if(it.origFilters['type']) }}\n <nano-details class=\"sc-nano-global-search-results\" open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Type</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf1\" store-method=\"url-hash-push\" filter-name=\"type\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"type-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"type-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['channel']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Channels</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf2\" store-method=\"url-hash-push\" filter-name=\"channel\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"channel-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"channel-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['authors']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Authors</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf3\" store-method=\"url-hash-push\" filter-name=\"authors\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"authors-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"authors-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['categories_without_path']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Category</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf4\" store-method=\"url-hash-push\" filter-name=\"categories_without_path\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n {{ @if(!filter.match(/publication/)) }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"cwp-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"cwp-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /if }}\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['tags']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Tags</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf5\" store-method=\"url-hash-push\" filter-name=\"tags\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"tags-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"tags-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n </div>\n </div>\n </div>\n {{ /if }}\n </div>`}\n </script>\n <div slot=\"output\"></div>\n <slot />\n </nano-algolia>\n </Host>\n );\n }\n}\n"]}
@@ -124,7 +124,7 @@ export class GridItem {
124
124
  },
125
125
  "GridSizes": {
126
126
  "location": "import",
127
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
127
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
128
128
  }
129
129
  },
130
130
  "return": "Promise<void>"
@@ -116,7 +116,7 @@ export class Icon {
116
116
  "references": {
117
117
  "Color": {
118
118
  "location": "import",
119
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
119
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
120
120
  }
121
121
  }
122
122
  },
@@ -440,7 +440,7 @@ export class Input {
440
440
  "references": {
441
441
  "Color": {
442
442
  "location": "import",
443
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
443
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
444
444
  }
445
445
  }
446
446
  },
@@ -1011,7 +1011,7 @@ export class Input {
1011
1011
  "references": {
1012
1012
  "TextFieldTypes": {
1013
1013
  "location": "import",
1014
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1014
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1015
1015
  }
1016
1016
  }
1017
1017
  },
@@ -1170,7 +1170,7 @@ export class Input {
1170
1170
  "references": {
1171
1171
  "InputChangeEventDetail": {
1172
1172
  "location": "import",
1173
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1173
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1174
1174
  }
1175
1175
  }
1176
1176
  }
@@ -1259,7 +1259,7 @@ export class Input {
1259
1259
  "references": {
1260
1260
  "ControlValidityEventDetail": {
1261
1261
  "location": "import",
1262
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1262
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1263
1263
  }
1264
1264
  }
1265
1265
  }
@@ -1281,7 +1281,7 @@ export class Input {
1281
1281
  },
1282
1282
  "ControlValidity": {
1283
1283
  "location": "import",
1284
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1284
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1285
1285
  }
1286
1286
  },
1287
1287
  "return": "Promise<ControlValidity>"
@@ -488,7 +488,7 @@ export class NavItem {
488
488
  "references": {
489
489
  "NavItemEventDetail": {
490
490
  "location": "import",
491
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
491
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
492
492
  }
493
493
  }
494
494
  }
@@ -508,7 +508,7 @@ export class NavItem {
508
508
  "references": {
509
509
  "NavItemEventDetail": {
510
510
  "location": "import",
511
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
511
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
512
512
  }
513
513
  }
514
514
  }
@@ -528,7 +528,7 @@ export class NavItem {
528
528
  "references": {
529
529
  "NavItemEventDetail": {
530
530
  "location": "import",
531
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
531
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
532
532
  }
533
533
  }
534
534
  }
@@ -548,7 +548,7 @@ export class NavItem {
548
548
  "references": {
549
549
  "NavItemEventDetail": {
550
550
  "location": "import",
551
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
551
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
552
552
  }
553
553
  }
554
554
  }
@@ -370,7 +370,7 @@ export class Range {
370
370
  "references": {
371
371
  "Color": {
372
372
  "location": "import",
373
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
373
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
374
374
  }
375
375
  }
376
376
  },
@@ -594,7 +594,7 @@ export class Range {
594
594
  "references": {
595
595
  "RangeValue": {
596
596
  "location": "import",
597
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
597
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
598
598
  }
599
599
  }
600
600
  },
@@ -632,7 +632,7 @@ export class Range {
632
632
  "references": {
633
633
  "RangeChangeEventDetail": {
634
634
  "location": "import",
635
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
635
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
636
636
  }
637
637
  }
638
638
  }
@@ -655,7 +655,7 @@ export class Range {
655
655
  "references": {
656
656
  "StyleEventDetail": {
657
657
  "location": "import",
658
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
658
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
659
659
  }
660
660
  }
661
661
  }
@@ -176,7 +176,7 @@ export class ResizeObserve {
176
176
  "references": {
177
177
  "ResizeStateChangeEventDetail": {
178
178
  "location": "import",
179
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
179
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
180
180
  }
181
181
  }
182
182
  }
@@ -873,7 +873,7 @@ export class Select {
873
873
  "references": {
874
874
  "Color": {
875
875
  "location": "import",
876
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
876
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
877
877
  }
878
878
  }
879
879
  },
@@ -1377,7 +1377,7 @@ export class Select {
1377
1377
  "references": {
1378
1378
  "SelectChangeEventDetail": {
1379
1379
  "location": "import",
1380
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1380
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1381
1381
  }
1382
1382
  }
1383
1383
  }
@@ -1463,7 +1463,7 @@ export class Select {
1463
1463
  "references": {
1464
1464
  "InputChangeEventDetail": {
1465
1465
  "location": "import",
1466
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1466
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1467
1467
  }
1468
1468
  }
1469
1469
  }
@@ -1486,7 +1486,7 @@ export class Select {
1486
1486
  "references": {
1487
1487
  "ControlValidityEventDetail": {
1488
1488
  "location": "import",
1489
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1489
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1490
1490
  }
1491
1491
  }
1492
1492
  }
@@ -1508,7 +1508,7 @@ export class Select {
1508
1508
  },
1509
1509
  "ControlValidity": {
1510
1510
  "location": "import",
1511
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1511
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1512
1512
  }
1513
1513
  },
1514
1514
  "return": "Promise<ControlValidity>"
@@ -453,7 +453,7 @@ export class Slides {
453
453
  "references": {
454
454
  "FlickityOptions": {
455
455
  "location": "import",
456
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
456
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
457
457
  }
458
458
  }
459
459
  },
@@ -556,7 +556,7 @@ export class Slides {
556
556
  "references": {
557
557
  "SlideAnimation": {
558
558
  "location": "import",
559
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
559
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
560
560
  }
561
561
  }
562
562
  },
@@ -747,7 +747,7 @@ export class Slides {
747
747
  "references": {
748
748
  "DragEvent": {
749
749
  "location": "import",
750
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
750
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
751
751
  }
752
752
  }
753
753
  }
@@ -767,7 +767,7 @@ export class Slides {
767
767
  "references": {
768
768
  "DragEvent": {
769
769
  "location": "import",
770
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
770
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
771
771
  }
772
772
  }
773
773
  }
@@ -787,7 +787,7 @@ export class Slides {
787
787
  "references": {
788
788
  "DragEvent": {
789
789
  "location": "import",
790
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
790
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
791
791
  }
792
792
  }
793
793
  }
@@ -807,7 +807,7 @@ export class Slides {
807
807
  "references": {
808
808
  "DragEvent": {
809
809
  "location": "import",
810
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
810
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
811
811
  }
812
812
  }
813
813
  }
@@ -1114,7 +1114,7 @@ export class Slides {
1114
1114
  },
1115
1115
  "Flickity": {
1116
1116
  "location": "import",
1117
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
1117
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
1118
1118
  }
1119
1119
  },
1120
1120
  "return": "Promise<Flickity>"
@@ -443,7 +443,7 @@ export class TabGroup {
443
443
  "references": {
444
444
  "Color": {
445
445
  "location": "import",
446
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/interface.d.ts"
446
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/interface.d.ts"
447
447
  }
448
448
  }
449
449
  },
@@ -486,7 +486,7 @@ export class TabGroup {
486
486
  "references": {
487
487
  "StorageMethods": {
488
488
  "location": "import",
489
- "path": "/builds/ca3VH5WE/0/Digital/nano-components/packages/components/src/utils/store/component-store.ts"
489
+ "path": "/builds/DM3XkNuX/0/Digital/nano-components/packages/components/src/utils/store/component-store.ts"
490
490
  }
491
491
  }
492
492
  },
@@ -45,6 +45,7 @@ export class E2EPlayGround {
45
45
  viewportWidth: this.viewportWidth,
46
46
  viewportHeight: this.viewportHeight,
47
47
  dir: docOpts ? docOpts.dir : 'ltr',
48
+ padding: docOpts ? docOpts.padding : '1rem',
48
49
  });
49
50
  return this.page;
50
51
  }
@@ -96,7 +97,7 @@ export async function getFocusedElement(page, shadowEleSelector = null) {
96
97
  }
97
98
  export async function createPage(optionsOrHtml) {
98
99
  const options = typeof optionsOrHtml === 'string'
99
- ? { html: optionsOrHtml, viewportWidth: 600, dir: 'ltr' }
100
+ ? { html: optionsOrHtml, viewportWidth: 600, dir: 'ltr', padding: '1rem' }
100
101
  : optionsOrHtml;
101
102
  const page = (await newE2EPage());
102
103
  // setup navigator langs for consistent localization
@@ -117,7 +118,7 @@ export async function createPage(optionsOrHtml) {
117
118
  await page.setViewport(viewport);
118
119
  // add content
119
120
  await page.setContent(`<link rel="stylesheet" href="/themes/nanopore.css">
120
- <div class="screenshot" style="padding: 1rem;">${options.html}</div>`, { waitUntil: 'networkidle2' });
121
+ <div class="screenshot" style="padding: ${options.padding || '1rem'};">${options.html}</div>`, { waitUntil: 'networkidle2' });
121
122
  // set the direction - need to set here as stencil removes it on setContent
122
123
  await page.evaluate((dir) => {
123
124
  document.documentElement.setAttribute('dir', dir);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/testing/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { Page as PuppeteerPage } from 'puppeteer';\nimport axe, { RunOptions, ContextObject } from 'axe-core';\nimport { MatchImageSnapshotOptions } from 'jest-image-snapshot';\n\ndeclare global {\n interface Window {\n axe: typeof axe;\n }\n}\n\nexport interface NanoE2EPage\n extends E2EPage,\n Pick<PuppeteerPage, 'screenshot' | 'viewport'> {\n reportA11y: (contextQuery?: string) => Promise<string>;\n}\n\ntype NanoE2EPageOptions = {\n html: string;\n viewportWidth: number;\n viewportHeight?: number;\n dir: 'ltr' | 'rtl';\n};\n\nexport class E2EPlayGround<T> {\n public props: Partial<T>;\n public viewportHeight: number;\n /** element template string. Add `{{ attrs }}` to place the attributes */\n public template: string;\n public cssVars: { [key: string]: string };\n public viewportWidth = 600;\n public page: NanoE2EPage;\n public tag: string;\n\n constructor(setup: { template: string; tag: string } | string) {\n setup =\n typeof setup === 'string'\n ? { template: `<${setup} {{ attrs }}></${setup}>`, tag: setup }\n : setup;\n this.template = setup.template;\n this.tag = setup.tag;\n }\n\n private get attrs() {\n if (!this.props) return '';\n return Object.entries(this.props)\n .map(([attr, value]) => `${kebabize(attr)}=\"${value}\"`)\n .join(' ');\n }\n\n private get css() {\n if (!this.cssVars) return '';\n return Object.entries(this.cssVars)\n .map(([attr, value]) => `${attr}: ${value}`)\n .join('\\n');\n }\n\n public async newPage(props?: Partial<T>, docOpts?: { dir: 'rtl' | 'ltr' }) {\n if (!this.template || !this.tag) {\n console.warn('no template set');\n return;\n }\n\n this.props = props;\n this.page = await createPage({\n html: `\n <style>\n :root {\n ${this.css}\n }\n </style>\n ${this.template.replace(/(\\{\\{ attrs \\}\\})/g, this.attrs)}\n `,\n viewportWidth: this.viewportWidth,\n viewportHeight: this.viewportHeight,\n dir: docOpts ? docOpts.dir : 'ltr',\n });\n\n return this.page;\n }\n\n public reportA11y() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.reportA11y(this.tag);\n }\n\n public component() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.find(this.tag);\n }\n\n public async componentQuery(selectorStr: string, shadow = true) {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n if (!selectorStr) {\n console.warn('selectorStr not set');\n return;\n }\n\n if (shadow) {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document\n .querySelector(tag)\n .shadowRoot.querySelector(selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n } else {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document.querySelector(tag + ' ' + selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n }\n }\n}\n\nexport async function getFocusedElement(\n page: E2EPage,\n shadowEleSelector: string = null\n) {\n if (!shadowEleSelector)\n return page.evaluateHandle(() => document.activeElement);\n else {\n return page.evaluateHandle(\n (shadowEleSelector) =>\n document.querySelector(shadowEleSelector).shadowRoot.activeElement,\n shadowEleSelector\n );\n }\n}\n\nexport async function createPage(optionsOrHtml?: string | NanoE2EPageOptions) {\n const options: NanoE2EPageOptions =\n typeof optionsOrHtml === 'string'\n ? { html: optionsOrHtml, viewportWidth: 600, dir: 'ltr' }\n : optionsOrHtml;\n\n const page = (await newE2EPage()) as NanoE2EPage;\n\n // setup navigator langs for consistent localization\n await page.evaluate(() => {\n Object.defineProperty(navigator, 'language', {\n get: function () {\n return 'en-GB';\n },\n });\n Object.defineProperty(navigator, 'languages', {\n get: function () {\n return ['en-GB'];\n },\n });\n });\n const viewport = Object.assign(\n { height: options.viewportHeight || page.viewport().height },\n { width: options.viewportWidth }\n );\n // set viewport size\n await page.setViewport(viewport);\n\n // add content\n await page.setContent(\n `<link rel=\"stylesheet\" href=\"/themes/nanopore.css\">\n <div class=\"screenshot\" style=\"padding: 1rem;\">${options.html}</div>`,\n { waitUntil: 'networkidle2' }\n );\n\n // set the direction - need to set here as stencil removes it on setContent\n await page.evaluate((dir) => {\n document.documentElement.setAttribute('dir', dir);\n document.dir = dir;\n }, options.dir);\n\n // monkey patch screenshot function to add some extra features\n const screenshot = page.screenshot;\n page.screenshot = async function () {\n // get the element's height, and set viewport to that height\n // this enables us to get full page, clipped screenshots\n const htmlElement = await page.$('.screenshot');\n let { width, height } = await htmlElement.boundingBox();\n\n await page.setViewport({\n width: page.viewport().width,\n height: options.viewportHeight || Math.round(height),\n });\n\n return screenshot.call(page, {\n clip: {\n x: 0,\n y: 0,\n width: Math.round(width),\n height: options.viewportHeight || Math.round(height),\n },\n captureBeyondViewport: false,\n });\n };\n\n await page.evaluate(async (source) => await window.eval(source), axe.source);\n\n page.reportA11y = async (contextQuery?: string) => {\n const result = await page.evaluate(async (contextQuery) => {\n const context: ContextObject = {\n include: contextQuery ? [[contextQuery]] : undefined,\n exclude: [[contextQuery + ' .button--primary']],\n };\n const opts: RunOptions = {};\n return await window.axe.run(context, opts);\n }, contextQuery);\n\n // we only want serious issues and we want to ignore nanopore buttons. We know though they're bad.\n const violations = result.violations\n .filter((violation) => [`serious`, `critical`].includes(violation.impact))\n .filter((violation) => {\n violation.nodes = violation.nodes.filter(\n (node) => !node.target.join().match('.button--')\n );\n return !!violation.nodes.length;\n });\n\n const outout = violations\n .map(\n (violations, index) => `(${index}) [Type: ${violations.id}]: ${\n violations.description\n } (${violations.help}).\n Elements: ${violations.nodes\n .map((node, index) => `[${index}]'${node.target}'`)\n .join(`, `)}.`\n )\n .join(`\\n\\n`);\n return outout;\n };\n\n return page;\n}\n\nexport const kebabize = (str) => {\n return str\n .split('')\n .map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n })\n .join('');\n};\n\nexport const screenshotSettings = (\n dirname: string\n): MatchImageSnapshotOptions => {\n return {\n failureThreshold: 0.002,\n failureThresholdType: 'percent',\n customSnapshotsDir: `${dirname}/__screenshots__/${process.platform}`,\n };\n};\n\nexport const waitForVisibleSnippet = (selector) => {\n return `\n (function () {\n function isVisible(elem) {\n if (!(elem instanceof Element)) throw Error('DomUtil: elem is not an element.');\n const style = getComputedStyle(elem);\n if (style.display === 'none') return false;\n if (style.visibility !== 'visible') return false;\n if (style.opacity < 0.1) return false;\n if (elem.offsetWidth + elem.offsetHeight + elem.getBoundingClientRect().height +\n elem.getBoundingClientRect().width === 0) {\n return false;\n }\n const elemCenter = {\n x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,\n y: elem.getBoundingClientRect().top + elem.offsetHeight / 2\n };\n if (elemCenter.x < 0) return false;\n if (elemCenter.x > (document.documentElement.clientWidth || window.innerWidth)) return false;\n if (elemCenter.y < 0) return false;\n if (elemCenter.y > (document.documentElement.clientHeight || window.innerHeight)) return false;\n let pointContainer = document.elementFromPoint(elemCenter.x, elemCenter.y);\n do {\n if (pointContainer === elem) return true;\n } while (pointContainer = pointContainer.parentNode);\n return false;\n }\n return isVisible(document.querySelector(\"${selector}\"));\n })()\n`;\n};\n\nexport const stringifyFormSnippet = `\n<div id=\"form-result\"></div>\n<script>\n var form = document.querySelector('form');\n var result = document.querySelector('#form-result');\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n var data = new FormData(event.target);\n var object = {};\n data.forEach((value, key) => {\n // Reflect.has in favor of: object.hasOwnProperty(key)\n if(!Reflect.has(object, key)){\n object[key] = value;\n return;\n }\n if(!Array.isArray(object[key])){\n object[key] = [object[key]];\n }\n object[key].push(value);\n });\n result.innerHTML = JSON.stringify(object);\n })\n</script>`;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/testing/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { Page as PuppeteerPage } from 'puppeteer';\nimport axe, { RunOptions, ContextObject } from 'axe-core';\nimport { MatchImageSnapshotOptions } from 'jest-image-snapshot';\n\ndeclare global {\n interface Window {\n axe: typeof axe;\n }\n}\n\nexport interface NanoE2EPage\n extends E2EPage,\n Pick<PuppeteerPage, 'screenshot' | 'viewport'> {\n reportA11y: (contextQuery?: string) => Promise<string>;\n}\n\ntype NanoE2EPageOptions = {\n html: string;\n viewportWidth: number;\n viewportHeight?: number;\n dir: 'ltr' | 'rtl';\n padding?: string;\n};\n\nexport class E2EPlayGround<T> {\n public props: Partial<T>;\n public viewportHeight: number;\n /** element template string. Add `{{ attrs }}` to place the attributes */\n public template: string;\n public cssVars: { [key: string]: string };\n public viewportWidth = 600;\n public page: NanoE2EPage;\n public tag: string;\n\n constructor(setup: { template: string; tag: string } | string) {\n setup =\n typeof setup === 'string'\n ? { template: `<${setup} {{ attrs }}></${setup}>`, tag: setup }\n : setup;\n this.template = setup.template;\n this.tag = setup.tag;\n }\n\n private get attrs() {\n if (!this.props) return '';\n return Object.entries(this.props)\n .map(([attr, value]) => `${kebabize(attr)}=\"${value}\"`)\n .join(' ');\n }\n\n private get css() {\n if (!this.cssVars) return '';\n return Object.entries(this.cssVars)\n .map(([attr, value]) => `${attr}: ${value}`)\n .join('\\n');\n }\n\n public async newPage(\n props?: Partial<T>,\n docOpts?: { dir?: 'rtl' | 'ltr'; padding?: string }\n ) {\n if (!this.template || !this.tag) {\n console.warn('no template set');\n return;\n }\n\n this.props = props;\n this.page = await createPage({\n html: `\n <style>\n :root {\n ${this.css}\n }\n </style>\n ${this.template.replace(/(\\{\\{ attrs \\}\\})/g, this.attrs)}\n `,\n viewportWidth: this.viewportWidth,\n viewportHeight: this.viewportHeight,\n dir: docOpts ? docOpts.dir : 'ltr',\n padding: docOpts ? docOpts.padding : '1rem',\n });\n\n return this.page;\n }\n\n public reportA11y() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.reportA11y(this.tag);\n }\n\n public component() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.find(this.tag);\n }\n\n public async componentQuery(selectorStr: string, shadow = true) {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n if (!selectorStr) {\n console.warn('selectorStr not set');\n return;\n }\n\n if (shadow) {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document\n .querySelector(tag)\n .shadowRoot.querySelector(selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n } else {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document.querySelector(tag + ' ' + selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n }\n }\n}\n\nexport async function getFocusedElement(\n page: E2EPage,\n shadowEleSelector: string = null\n) {\n if (!shadowEleSelector)\n return page.evaluateHandle(() => document.activeElement);\n else {\n return page.evaluateHandle(\n (shadowEleSelector) =>\n document.querySelector(shadowEleSelector).shadowRoot.activeElement,\n shadowEleSelector\n );\n }\n}\n\nexport async function createPage(optionsOrHtml?: string | NanoE2EPageOptions) {\n const options: NanoE2EPageOptions =\n typeof optionsOrHtml === 'string'\n ? { html: optionsOrHtml, viewportWidth: 600, dir: 'ltr', padding: '1rem' }\n : optionsOrHtml;\n\n const page = (await newE2EPage()) as NanoE2EPage;\n\n // setup navigator langs for consistent localization\n await page.evaluate(() => {\n Object.defineProperty(navigator, 'language', {\n get: function () {\n return 'en-GB';\n },\n });\n Object.defineProperty(navigator, 'languages', {\n get: function () {\n return ['en-GB'];\n },\n });\n });\n const viewport = Object.assign(\n { height: options.viewportHeight || page.viewport().height },\n { width: options.viewportWidth }\n );\n // set viewport size\n await page.setViewport(viewport);\n\n // add content\n await page.setContent(\n `<link rel=\"stylesheet\" href=\"/themes/nanopore.css\">\n <div class=\"screenshot\" style=\"padding: ${options.padding || '1rem'};\">${\n options.html\n }</div>`,\n { waitUntil: 'networkidle2' }\n );\n\n // set the direction - need to set here as stencil removes it on setContent\n await page.evaluate((dir) => {\n document.documentElement.setAttribute('dir', dir);\n document.dir = dir;\n }, options.dir);\n\n // monkey patch screenshot function to add some extra features\n const screenshot = page.screenshot;\n page.screenshot = async function () {\n // get the element's height, and set viewport to that height\n // this enables us to get full page, clipped screenshots\n const htmlElement = await page.$('.screenshot');\n let { width, height } = await htmlElement.boundingBox();\n\n await page.setViewport({\n width: page.viewport().width,\n height: options.viewportHeight || Math.round(height),\n });\n\n return screenshot.call(page, {\n clip: {\n x: 0,\n y: 0,\n width: Math.round(width),\n height: options.viewportHeight || Math.round(height),\n },\n captureBeyondViewport: false,\n });\n };\n\n await page.evaluate(async (source) => await window.eval(source), axe.source);\n\n page.reportA11y = async (contextQuery?: string) => {\n const result = await page.evaluate(async (contextQuery) => {\n const context: ContextObject = {\n include: contextQuery ? [[contextQuery]] : undefined,\n exclude: [[contextQuery + ' .button--primary']],\n };\n const opts: RunOptions = {};\n return await window.axe.run(context, opts);\n }, contextQuery);\n\n // we only want serious issues and we want to ignore nanopore buttons. We know though they're bad.\n const violations = result.violations\n .filter((violation) => [`serious`, `critical`].includes(violation.impact))\n .filter((violation) => {\n violation.nodes = violation.nodes.filter(\n (node) => !node.target.join().match('.button--')\n );\n return !!violation.nodes.length;\n });\n\n const outout = violations\n .map(\n (violations, index) => `(${index}) [Type: ${violations.id}]: ${\n violations.description\n } (${violations.help}).\n Elements: ${violations.nodes\n .map((node, index) => `[${index}]'${node.target}'`)\n .join(`, `)}.`\n )\n .join(`\\n\\n`);\n return outout;\n };\n\n return page;\n}\n\nexport const kebabize = (str) => {\n return str\n .split('')\n .map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n })\n .join('');\n};\n\nexport const screenshotSettings = (\n dirname: string\n): MatchImageSnapshotOptions => {\n return {\n failureThreshold: 0.002,\n failureThresholdType: 'percent',\n customSnapshotsDir: `${dirname}/__screenshots__/${process.platform}`,\n };\n};\n\nexport const waitForVisibleSnippet = (selector) => {\n return `\n (function () {\n function isVisible(elem) {\n if (!(elem instanceof Element)) throw Error('DomUtil: elem is not an element.');\n const style = getComputedStyle(elem);\n if (style.display === 'none') return false;\n if (style.visibility !== 'visible') return false;\n if (style.opacity < 0.1) return false;\n if (elem.offsetWidth + elem.offsetHeight + elem.getBoundingClientRect().height +\n elem.getBoundingClientRect().width === 0) {\n return false;\n }\n const elemCenter = {\n x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,\n y: elem.getBoundingClientRect().top + elem.offsetHeight / 2\n };\n if (elemCenter.x < 0) return false;\n if (elemCenter.x > (document.documentElement.clientWidth || window.innerWidth)) return false;\n if (elemCenter.y < 0) return false;\n if (elemCenter.y > (document.documentElement.clientHeight || window.innerHeight)) return false;\n let pointContainer = document.elementFromPoint(elemCenter.x, elemCenter.y);\n do {\n if (pointContainer === elem) return true;\n } while (pointContainer = pointContainer.parentNode);\n return false;\n }\n return isVisible(document.querySelector(\"${selector}\"));\n })()\n`;\n};\n\nexport const stringifyFormSnippet = `\n<div id=\"form-result\"></div>\n<script>\n var form = document.querySelector('form');\n var result = document.querySelector('#form-result');\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n var data = new FormData(event.target);\n var object = {};\n data.forEach((value, key) => {\n // Reflect.has in favor of: object.hasOwnProperty(key)\n if(!Reflect.has(object, key)){\n object[key] = value;\n return;\n }\n if(!Array.isArray(object[key])){\n object[key] = [object[key]];\n }\n object[key].push(value);\n });\n result.innerHTML = JSON.stringify(object);\n })\n</script>`;\n"]}