@nanoporetech-digital/components 5.9.6 → 5.11.0

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 (752) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/cjs/{algolia-data-6841724e.js → algolia-data-dba27b97.js} +2 -2
  3. package/dist/cjs/{algolia-data-6841724e.js.map → algolia-data-dba27b97.js.map} +1 -1
  4. package/dist/cjs/{algoliasearch-lite.esm.browser-992a2eff.js → algoliasearch-lite.esm.browser-b74ca774.js} +30 -5
  5. package/dist/cjs/algoliasearch-lite.esm.browser-b74ca774.js.map +1 -0
  6. package/dist/cjs/{component-store-6d7b8855.js → component-store-149aeffe.js} +2 -2
  7. package/dist/cjs/{component-store-6d7b8855.js.map → component-store-149aeffe.js.map} +1 -1
  8. package/dist/cjs/fade-dcabf3c1.js +211 -0
  9. package/dist/cjs/fade-dcabf3c1.js.map +1 -0
  10. package/dist/cjs/{form-control-8db579a2.js → form-control-f100407e.js} +2 -2
  11. package/dist/cjs/{form-control-8db579a2.js.map → form-control-f100407e.js.map} +1 -1
  12. package/dist/cjs/fullscreen-d24940a1.js +133 -0
  13. package/dist/cjs/fullscreen-d24940a1.js.map +1 -0
  14. package/dist/cjs/{global-3a6a7873.js → global-a5710651.js} +7 -7
  15. package/dist/cjs/{global-3a6a7873.js.map → global-a5710651.js.map} +1 -1
  16. package/dist/cjs/{index-1d3ebe1a.js → index-14451c95.js} +8 -10
  17. package/dist/cjs/index-14451c95.js.map +1 -0
  18. package/dist/cjs/{index-0f470227.js → index-f6f89d47.js} +2 -2
  19. package/dist/cjs/{index-0f470227.js.map → index-f6f89d47.js.map} +1 -1
  20. package/dist/cjs/lazyload-f6be7590.js +95 -0
  21. package/dist/cjs/lazyload-f6be7590.js.map +1 -0
  22. package/dist/cjs/loader.cjs.js +4 -4
  23. package/dist/cjs/loader.cjs.js.map +1 -1
  24. package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
  25. package/dist/cjs/nano-alert.cjs.entry.js +3 -3
  26. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
  28. package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -7
  30. package/dist/cjs/nano-algolia-pagination.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
  32. package/dist/cjs/nano-algolia-results.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nano-algolia.cjs.entry.js +995 -27
  34. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
  36. package/dist/cjs/nano-checkbox-group.cjs.entry.js +10 -4
  37. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-checkbox.cjs.entry.js +4 -2
  39. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nano-components.cjs.js +4 -4
  41. package/dist/cjs/nano-components.cjs.js.map +1 -1
  42. package/dist/cjs/nano-datalist_3.cjs.entry.js +4 -4
  43. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
  45. package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
  46. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nano-demo.cjs.entry.js +1 -1
  48. package/dist/cjs/nano-details.cjs.entry.js +2 -2
  49. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nano-dialog.cjs.entry.js +5 -5
  51. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nano-drawer.cjs.entry.js +5 -5
  53. package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nano-dropdown.cjs.entry.js +1 -1
  55. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nano-field-validator.cjs.entry.js +7 -5
  57. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nano-file-upload.cjs.entry.js +2 -2
  59. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +4 -4
  61. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nano-global-nav.cjs.entry.js +207 -201
  63. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nano-global-search-results.cjs.entry.js +9 -10
  65. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nano-grid-item.cjs.entry.js +1 -1
  67. package/dist/cjs/nano-grid_2.cjs.entry.js +2 -2
  68. package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nano-hero.cjs.entry.js +2 -2
  70. package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nano-icon-button_2.cjs.entry.js +24 -4
  72. package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
  73. package/dist/cjs/nano-icon.cjs.entry.js +4 -4
  74. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  75. package/dist/cjs/nano-input.cjs.entry.js +3 -3
  76. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  77. package/dist/cjs/nano-menu-drawer.cjs.entry.js +2 -2
  78. package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
  79. package/dist/cjs/nano-overflow-nav.cjs.entry.js +2 -2
  80. package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -1
  81. package/dist/cjs/nano-progress-bar.cjs.entry.js +2 -2
  82. package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
  83. package/dist/cjs/nano-range.cjs.entry.js +2 -2
  84. package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
  85. package/dist/cjs/nano-rating.cjs.entry.js +2 -2
  86. package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
  87. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
  88. package/dist/cjs/nano-slide.cjs.entry.js +1 -1
  89. package/dist/cjs/nano-slides-2f3dcc02.js +2975 -0
  90. package/dist/cjs/nano-slides-2f3dcc02.js.map +1 -0
  91. package/dist/cjs/nano-slides.cjs.entry.js +3 -4292
  92. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  93. package/dist/cjs/nano-sortable.cjs.entry.js +1 -1
  94. package/dist/cjs/nano-spinner.cjs.entry.js +2 -2
  95. package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
  96. package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
  97. package/dist/cjs/nano-sticker.cjs.entry.js +3 -2
  98. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  99. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  100. package/dist/cjs/nano-tab-group.cjs.entry.js +4 -4
  101. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  102. package/dist/cjs/nano-tab.cjs.entry.js +2 -2
  103. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  104. package/dist/cjs/{nano-table-49b4b3a6.js → nano-table-26845696.js} +5 -5
  105. package/dist/cjs/{nano-table-49b4b3a6.js.map → nano-table-26845696.js.map} +1 -1
  106. package/dist/cjs/nano-table.cjs.entry.js +3 -3
  107. package/dist/cjs/page-dots-ae2cefb4.js +140 -0
  108. package/dist/cjs/page-dots-ae2cefb4.js.map +1 -0
  109. package/dist/cjs/{scroll-fc1b8387.js → scroll-e8c21f80.js} +8 -4
  110. package/dist/cjs/scroll-e8c21f80.js.map +1 -0
  111. package/dist/cjs/{table.worker-da980a2f.js → table.worker-a5996745.js} +4 -4
  112. package/dist/cjs/table.worker-a5996745.js.map +1 -0
  113. package/dist/collection/collection-manifest.json +1 -2
  114. package/dist/collection/components/alert/alert.css +1 -2
  115. package/dist/collection/components/algolia/algolia-data.js.map +1 -1
  116. package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
  117. package/dist/collection/components/algolia/algolia-interface.js.map +1 -1
  118. package/dist/collection/components/algolia/algolia-pagination.js +0 -5
  119. package/dist/collection/components/algolia/algolia-pagination.js.map +1 -1
  120. package/dist/collection/components/algolia/algolia-results.js.map +1 -1
  121. package/dist/collection/components/algolia/algolia.js +21 -32
  122. package/dist/collection/components/algolia/algolia.js.map +1 -1
  123. package/dist/collection/components/algolia/lib/squirrelly/browser.js +10 -0
  124. package/dist/collection/components/algolia/lib/squirrelly/browser.js.map +1 -0
  125. package/dist/collection/components/algolia/lib/squirrelly/compile-string.js +151 -0
  126. package/dist/collection/components/algolia/lib/squirrelly/compile-string.js.map +1 -0
  127. package/dist/collection/components/algolia/lib/squirrelly/compile.js +44 -0
  128. package/dist/collection/components/algolia/lib/squirrelly/compile.js.map +1 -0
  129. package/dist/collection/components/algolia/lib/squirrelly/config.js +68 -0
  130. package/dist/collection/components/algolia/lib/squirrelly/config.js.map +1 -0
  131. package/dist/collection/components/algolia/lib/squirrelly/container-utils.js +57 -0
  132. package/dist/collection/components/algolia/lib/squirrelly/container-utils.js.map +1 -0
  133. package/dist/collection/components/algolia/lib/squirrelly/containers.js +128 -0
  134. package/dist/collection/components/algolia/lib/squirrelly/containers.js.map +1 -0
  135. package/dist/collection/components/algolia/lib/squirrelly/err.js +39 -0
  136. package/dist/collection/components/algolia/lib/squirrelly/err.js.map +1 -0
  137. package/dist/collection/components/algolia/lib/squirrelly/parse.js +327 -0
  138. package/dist/collection/components/algolia/lib/squirrelly/parse.js.map +1 -0
  139. package/dist/collection/components/algolia/lib/squirrelly/render.js +62 -0
  140. package/dist/collection/components/algolia/lib/squirrelly/render.js.map +1 -0
  141. package/dist/collection/components/algolia/lib/squirrelly/storage.js +32 -0
  142. package/dist/collection/components/algolia/lib/squirrelly/storage.js.map +1 -0
  143. package/dist/collection/components/algolia/lib/squirrelly/utils.js +102 -0
  144. package/dist/collection/components/algolia/lib/squirrelly/utils.js.map +1 -0
  145. package/dist/collection/{utils → components/algolia/lib}/template.js +1 -2
  146. package/dist/collection/components/algolia/lib/template.js.map +1 -0
  147. package/dist/collection/components/checkbox/checkbox-group.css +17 -15
  148. package/dist/collection/components/checkbox/checkbox-group.js +29 -2
  149. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  150. package/dist/collection/components/checkbox/checkbox.css +20 -22
  151. package/dist/collection/components/checkbox/checkbox.js +2 -0
  152. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  153. package/dist/collection/components/date-picker/date-picker.css +5 -10
  154. package/dist/collection/components/details/details.css +4 -4
  155. package/dist/collection/components/dialog/dialog.css +3 -6
  156. package/dist/collection/components/dialog/dialog.js +1 -1
  157. package/dist/collection/components/dialog/dialog.js.map +1 -1
  158. package/dist/collection/components/drawer/drawer.css +18 -24
  159. package/dist/collection/components/drawer/drawer.js +1 -1
  160. package/dist/collection/components/drawer/drawer.js.map +1 -1
  161. package/dist/collection/components/dropdown/dropdown.js +1 -1
  162. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  163. package/dist/collection/components/field-validator/field-validator.js +5 -3
  164. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  165. package/dist/collection/components/file-upload/file-upload.css +16 -30
  166. package/dist/collection/components/global-nav/global-nav.js +203 -205
  167. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  168. package/dist/collection/components/global-nav/style/global-nav.css +97 -138
  169. package/dist/collection/components/global-search-results/global-search-results.css +85 -127
  170. package/dist/collection/components/global-search-results/global-search-results.js +7 -8
  171. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  172. package/dist/collection/components/hero/hero.css +13 -26
  173. package/dist/collection/components/icon/icon.css +6 -6
  174. package/dist/collection/components/icon/icon.js +2 -2
  175. package/dist/collection/components/icon/icon.js.map +1 -1
  176. package/dist/collection/components/img/img.css +7 -17
  177. package/dist/collection/components/input/input.css +15 -36
  178. package/dist/collection/components/menu/menu.css +1 -1
  179. package/dist/collection/components/menu/menu.js +1 -1
  180. package/dist/collection/components/menu/menu.js.map +1 -1
  181. package/dist/collection/components/menu-drawer/menu-drawer.css +5 -14
  182. package/dist/collection/components/nav-item/nav-item.css +25 -46
  183. package/dist/collection/components/option/option.css +3 -5
  184. package/dist/collection/components/overflow-nav/overflow-nav.css +16 -27
  185. package/dist/collection/components/progress-bar/progress-bar.css +2 -2
  186. package/dist/collection/components/range/range.css +17 -19
  187. package/dist/collection/components/rating/rating.css +2 -8
  188. package/dist/collection/components/select/select.css +30 -53
  189. package/dist/collection/components/slides/lib/js/animate.js +29 -54
  190. package/dist/collection/components/slides/lib/js/animate.js.map +1 -0
  191. package/dist/collection/components/slides/lib/js/cell.js +12 -24
  192. package/dist/collection/components/slides/lib/js/cell.js.map +1 -0
  193. package/dist/collection/components/slides/lib/js/drag.js +65 -116
  194. package/dist/collection/components/slides/lib/js/drag.js.map +1 -0
  195. package/dist/collection/components/slides/lib/js/fade.js +52 -79
  196. package/dist/collection/components/slides/lib/js/fade.js.map +1 -0
  197. package/dist/collection/components/slides/lib/js/flickity.js +118 -206
  198. package/dist/collection/components/slides/lib/js/flickity.js.map +1 -0
  199. package/dist/collection/components/slides/lib/js/fullscreen.js +21 -40
  200. package/dist/collection/components/slides/lib/js/fullscreen.js.map +1 -0
  201. package/dist/collection/components/slides/lib/js/index.js +4 -6
  202. package/dist/collection/components/slides/lib/js/index.js.map +1 -0
  203. package/dist/collection/components/slides/lib/js/lazyload.js +21 -36
  204. package/dist/collection/components/slides/lib/js/lazyload.js.map +1 -0
  205. package/dist/collection/components/slides/lib/js/page-dots.js +21 -45
  206. package/dist/collection/components/slides/lib/js/page-dots.js.map +1 -0
  207. package/dist/collection/components/slides/lib/js/player.js +12 -40
  208. package/dist/collection/components/slides/lib/js/player.js.map +1 -0
  209. package/dist/collection/components/slides/lib/js/prev-next-button.js +24 -52
  210. package/dist/collection/components/slides/lib/js/prev-next-button.js.map +1 -0
  211. package/dist/collection/components/slides/lib/js/slide.js +10 -15
  212. package/dist/collection/components/slides/lib/js/slide.js.map +1 -0
  213. package/dist/collection/components/slides/lib/js/utils/event-emitter.js +75 -0
  214. package/dist/collection/components/slides/lib/js/utils/event-emitter.js.map +1 -0
  215. package/dist/collection/components/slides/lib/js/utils/gestures.js +436 -0
  216. package/dist/collection/components/slides/lib/js/utils/gestures.js.map +1 -0
  217. package/dist/collection/components/slides/lib/js/utils/get-size.js +160 -0
  218. package/dist/collection/components/slides/lib/js/utils/get-size.js.map +1 -0
  219. package/dist/collection/components/slides/lib/js/utils/utils.js +166 -0
  220. package/dist/collection/components/slides/lib/js/utils/utils.js.map +1 -0
  221. package/dist/collection/components/slides/slides.css +18 -19
  222. package/dist/collection/components/slides/slides.js +31 -5
  223. package/dist/collection/components/slides/slides.js.map +1 -1
  224. package/dist/collection/components/spinner/spinner.css +1 -2
  225. package/dist/collection/components/sticker/sticker.js +2 -1
  226. package/dist/collection/components/sticker/sticker.js.map +1 -1
  227. package/dist/collection/components/table/table.css +29 -48
  228. package/dist/collection/components/tabs/tab-group.css +10 -14
  229. package/dist/collection/components/tabs/tab.css +8 -18
  230. package/dist/collection/components/tooltip/tooltip.css +34 -31
  231. package/dist/collection/components/tooltip/tooltip.js +23 -3
  232. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  233. package/dist/collection/global/script/global.js +6 -6
  234. package/dist/collection/global/script/global.js.map +1 -1
  235. package/dist/collection/utils/scroll.js +7 -3
  236. package/dist/collection/utils/scroll.js.map +1 -1
  237. package/dist/components/algolia-data.js.map +1 -1
  238. package/dist/components/algolia.js +991 -25
  239. package/dist/components/algolia.js.map +1 -1
  240. package/dist/components/algoliasearch-lite.esm.browser.js +29 -4
  241. package/dist/components/algoliasearch-lite.esm.browser.js.map +1 -1
  242. package/dist/components/date-picker.js +1 -1
  243. package/dist/components/date-picker.js.map +1 -1
  244. package/dist/components/dropdown.js +1 -1
  245. package/dist/components/dropdown.js.map +1 -1
  246. package/dist/components/fade.js +208 -0
  247. package/dist/components/fade.js.map +1 -0
  248. package/dist/components/fullscreen.js +130 -0
  249. package/dist/components/fullscreen.js.map +1 -0
  250. package/dist/components/icon.js +3 -3
  251. package/dist/components/icon.js.map +1 -1
  252. package/dist/components/img.js +1 -1
  253. package/dist/components/img.js.map +1 -1
  254. package/dist/components/index.d.ts +0 -1
  255. package/dist/components/index.js +6 -7
  256. package/dist/components/index.js.map +1 -1
  257. package/dist/components/input.js +1 -1
  258. package/dist/components/input.js.map +1 -1
  259. package/dist/components/lazyload.js +92 -0
  260. package/dist/components/lazyload.js.map +1 -0
  261. package/dist/components/menu.js +2 -2
  262. package/dist/components/menu.js.map +1 -1
  263. package/dist/components/nano-alert.js +1 -1
  264. package/dist/components/nano-alert.js.map +1 -1
  265. package/dist/components/nano-algolia-filter.js.map +1 -1
  266. package/dist/components/nano-algolia-pagination.js +0 -5
  267. package/dist/components/nano-algolia-pagination.js.map +1 -1
  268. package/dist/components/nano-algolia-results.js.map +1 -1
  269. package/dist/components/nano-checkbox-group.js +10 -3
  270. package/dist/components/nano-checkbox-group.js.map +1 -1
  271. package/dist/components/nano-checkbox.js +3 -1
  272. package/dist/components/nano-checkbox.js.map +1 -1
  273. package/dist/components/nano-details.js +1 -1
  274. package/dist/components/nano-details.js.map +1 -1
  275. package/dist/components/nano-dialog.js +2 -2
  276. package/dist/components/nano-dialog.js.map +1 -1
  277. package/dist/components/nano-drawer.js +2 -2
  278. package/dist/components/nano-drawer.js.map +1 -1
  279. package/dist/components/nano-field-validator.js +5 -3
  280. package/dist/components/nano-field-validator.js.map +1 -1
  281. package/dist/components/nano-file-upload.js +1 -1
  282. package/dist/components/nano-file-upload.js.map +1 -1
  283. package/dist/components/nano-global-nav.js +204 -200
  284. package/dist/components/nano-global-nav.js.map +1 -1
  285. package/dist/components/nano-global-search-results.js +8 -9
  286. package/dist/components/nano-global-search-results.js.map +1 -1
  287. package/dist/components/nano-hero.js +1 -1
  288. package/dist/components/nano-hero.js.map +1 -1
  289. package/dist/components/nano-menu-drawer.js +1 -1
  290. package/dist/components/nano-menu-drawer.js.map +1 -1
  291. package/dist/components/nano-overflow-nav.js +1 -1
  292. package/dist/components/nano-overflow-nav.js.map +1 -1
  293. package/dist/components/nano-range.js +1 -1
  294. package/dist/components/nano-range.js.map +1 -1
  295. package/dist/components/nano-rating.js +1 -1
  296. package/dist/components/nano-rating.js.map +1 -1
  297. package/dist/components/nano-slides.js +760 -2090
  298. package/dist/components/nano-slides.js.map +1 -1
  299. package/dist/components/nano-tab-group.js +1 -1
  300. package/dist/components/nano-tab-group.js.map +1 -1
  301. package/dist/components/nano-tab.js +1 -1
  302. package/dist/components/nano-tab.js.map +1 -1
  303. package/dist/components/nav-item.js +1 -1
  304. package/dist/components/nav-item.js.map +1 -1
  305. package/dist/components/option.js +1 -1
  306. package/dist/components/option.js.map +1 -1
  307. package/dist/components/page-dots.js +137 -0
  308. package/dist/components/page-dots.js.map +1 -0
  309. package/dist/components/progress-bar.js +1 -1
  310. package/dist/components/progress-bar.js.map +1 -1
  311. package/dist/components/scroll.js +7 -3
  312. package/dist/components/scroll.js.map +1 -1
  313. package/dist/components/select.js +1 -1
  314. package/dist/components/select.js.map +1 -1
  315. package/dist/components/spinner.js +1 -1
  316. package/dist/components/spinner.js.map +1 -1
  317. package/dist/components/sticker.js +2 -1
  318. package/dist/components/sticker.js.map +1 -1
  319. package/dist/components/table.js +1 -1
  320. package/dist/components/table.js.map +1 -1
  321. package/dist/components/tooltip.js +24 -4
  322. package/dist/components/tooltip.js.map +1 -1
  323. package/dist/esm/{algolia-data-ebf2a439.js → algolia-data-1b42827c.js} +2 -2
  324. package/dist/esm/{algolia-data-ebf2a439.js.map → algolia-data-1b42827c.js.map} +1 -1
  325. package/dist/esm/{algoliasearch-lite.esm.browser-04891fdc.js → algoliasearch-lite.esm.browser-d71a28dc.js} +30 -5
  326. package/dist/esm/algoliasearch-lite.esm.browser-d71a28dc.js.map +1 -0
  327. package/dist/esm/{component-store-54df2005.js → component-store-f7eb0a56.js} +2 -2
  328. package/dist/esm/{component-store-54df2005.js.map → component-store-f7eb0a56.js.map} +1 -1
  329. package/dist/esm/fade-1aa7a6db.js +209 -0
  330. package/dist/esm/fade-1aa7a6db.js.map +1 -0
  331. package/dist/esm/{form-control-eb06e009.js → form-control-881fa3af.js} +2 -2
  332. package/dist/esm/{form-control-eb06e009.js.map → form-control-881fa3af.js.map} +1 -1
  333. package/dist/esm/fullscreen-86fa276a.js +131 -0
  334. package/dist/esm/fullscreen-86fa276a.js.map +1 -0
  335. package/dist/esm/{global-f6e05656.js → global-be484e8c.js} +7 -7
  336. package/dist/esm/{global-f6e05656.js.map → global-be484e8c.js.map} +1 -1
  337. package/dist/esm/{index-e8891229.js → index-3003356f.js} +2 -2
  338. package/dist/esm/{index-e8891229.js.map → index-3003356f.js.map} +1 -1
  339. package/dist/esm/{index-06666022.js → index-9695db0a.js} +8 -10
  340. package/dist/esm/index-9695db0a.js.map +1 -0
  341. package/dist/esm/lazyload-994232a6.js +93 -0
  342. package/dist/esm/lazyload-994232a6.js.map +1 -0
  343. package/dist/esm/loader.js +5 -5
  344. package/dist/esm/loader.js.map +1 -1
  345. package/dist/esm/nano-accordion.entry.js +1 -1
  346. package/dist/esm/nano-alert.entry.js +3 -3
  347. package/dist/esm/nano-alert.entry.js.map +1 -1
  348. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  349. package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
  350. package/dist/esm/nano-algolia-pagination.entry.js +2 -7
  351. package/dist/esm/nano-algolia-pagination.entry.js.map +1 -1
  352. package/dist/esm/nano-algolia-results.entry.js +2 -2
  353. package/dist/esm/nano-algolia-results.entry.js.map +1 -1
  354. package/dist/esm/nano-algolia.entry.js +995 -27
  355. package/dist/esm/nano-algolia.entry.js.map +1 -1
  356. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  357. package/dist/esm/nano-checkbox-group.entry.js +10 -4
  358. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  359. package/dist/esm/nano-checkbox.entry.js +4 -2
  360. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  361. package/dist/esm/nano-components.js +5 -5
  362. package/dist/esm/nano-components.js.map +1 -1
  363. package/dist/esm/nano-datalist_3.entry.js +4 -4
  364. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  365. package/dist/esm/nano-date-input.entry.js +1 -1
  366. package/dist/esm/nano-date-picker.entry.js +2 -2
  367. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  368. package/dist/esm/nano-demo.entry.js +1 -1
  369. package/dist/esm/nano-details.entry.js +2 -2
  370. package/dist/esm/nano-details.entry.js.map +1 -1
  371. package/dist/esm/nano-dialog.entry.js +5 -5
  372. package/dist/esm/nano-dialog.entry.js.map +1 -1
  373. package/dist/esm/nano-drawer.entry.js +5 -5
  374. package/dist/esm/nano-drawer.entry.js.map +1 -1
  375. package/dist/esm/nano-dropdown.entry.js +1 -1
  376. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  377. package/dist/esm/nano-field-validator.entry.js +7 -5
  378. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  379. package/dist/esm/nano-file-upload.entry.js +2 -2
  380. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  381. package/dist/esm/nano-global-nav-user-profile_3.entry.js +4 -4
  382. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  383. package/dist/esm/nano-global-nav.entry.js +207 -201
  384. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  385. package/dist/esm/nano-global-search-results.entry.js +9 -10
  386. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  387. package/dist/esm/nano-grid-item.entry.js +1 -1
  388. package/dist/esm/nano-grid_2.entry.js +2 -2
  389. package/dist/esm/nano-grid_2.entry.js.map +1 -1
  390. package/dist/esm/nano-hero.entry.js +2 -2
  391. package/dist/esm/nano-hero.entry.js.map +1 -1
  392. package/dist/esm/nano-icon-button_2.entry.js +24 -4
  393. package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
  394. package/dist/esm/nano-icon.entry.js +4 -4
  395. package/dist/esm/nano-icon.entry.js.map +1 -1
  396. package/dist/esm/nano-input.entry.js +3 -3
  397. package/dist/esm/nano-input.entry.js.map +1 -1
  398. package/dist/esm/nano-menu-drawer.entry.js +2 -2
  399. package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
  400. package/dist/esm/nano-overflow-nav.entry.js +2 -2
  401. package/dist/esm/nano-overflow-nav.entry.js.map +1 -1
  402. package/dist/esm/nano-progress-bar.entry.js +2 -2
  403. package/dist/esm/nano-progress-bar.entry.js.map +1 -1
  404. package/dist/esm/nano-range.entry.js +2 -2
  405. package/dist/esm/nano-range.entry.js.map +1 -1
  406. package/dist/esm/nano-rating.entry.js +2 -2
  407. package/dist/esm/nano-rating.entry.js.map +1 -1
  408. package/dist/esm/nano-resize-observe_2.entry.js +1 -1
  409. package/dist/esm/nano-slide.entry.js +1 -1
  410. package/dist/esm/nano-slides-9908c44d.js +2970 -0
  411. package/dist/esm/nano-slides-9908c44d.js.map +1 -0
  412. package/dist/esm/nano-slides.entry.js +2 -4295
  413. package/dist/esm/nano-slides.entry.js.map +1 -1
  414. package/dist/esm/nano-sortable.entry.js +1 -1
  415. package/dist/esm/nano-spinner.entry.js +2 -2
  416. package/dist/esm/nano-spinner.entry.js.map +1 -1
  417. package/dist/esm/nano-split-pane.entry.js +1 -1
  418. package/dist/esm/nano-sticker.entry.js +3 -2
  419. package/dist/esm/nano-sticker.entry.js.map +1 -1
  420. package/dist/esm/nano-tab-content.entry.js +1 -1
  421. package/dist/esm/nano-tab-group.entry.js +4 -4
  422. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  423. package/dist/esm/nano-tab.entry.js +2 -2
  424. package/dist/esm/nano-tab.entry.js.map +1 -1
  425. package/dist/esm/{nano-table-673838b5.js → nano-table-55d753cb.js} +5 -5
  426. package/dist/esm/{nano-table-673838b5.js.map → nano-table-55d753cb.js.map} +1 -1
  427. package/dist/esm/nano-table.entry.js +3 -3
  428. package/dist/esm/page-dots-467ace2e.js +138 -0
  429. package/dist/esm/page-dots-467ace2e.js.map +1 -0
  430. package/dist/esm/{scroll-ec7ac257.js → scroll-ac332213.js} +8 -4
  431. package/dist/esm/scroll-ac332213.js.map +1 -0
  432. package/dist/esm/{table.worker-608a4868.js → table.worker-34706ecc.js} +4 -4
  433. package/dist/esm/table.worker-34706ecc.js.map +1 -0
  434. package/dist/nano-components/{p-74a7fc4f.js → active-element-75b7c8a0.js} +1 -1
  435. package/dist/nano-components/algolia-data-1b42827c.js +5 -0
  436. package/dist/nano-components/{p-a26bdb65.js.map → algolia-data-1b42827c.js.map} +1 -1
  437. package/dist/nano-components/algoliasearch-lite.esm.browser-d71a28dc.js +5 -0
  438. package/dist/nano-components/algoliasearch-lite.esm.browser-d71a28dc.js.map +1 -0
  439. package/dist/nano-components/component-store-f7eb0a56.js +5 -0
  440. package/dist/nano-components/{p-dd5687db.js.map → component-store-f7eb0a56.js.map} +1 -1
  441. package/dist/nano-components/{p-cecb9af1.js → date-utils-6b7a6e1f.js} +1 -1
  442. package/dist/nano-components/{p-cdfc507e.js → dom-8599fac1.js} +1 -1
  443. package/dist/nano-components/{p-842cf127.js → drag-1723a4cc.js} +1 -1
  444. package/dist/nano-components/{p-9bfdee71.js → events-6a805b42.js} +1 -1
  445. package/dist/nano-components/fade-1aa7a6db.js +5 -0
  446. package/dist/nano-components/fade-1aa7a6db.js.map +1 -0
  447. package/dist/nano-components/{p-f8f89998.js → focus-visible-8b2c14da.js} +1 -1
  448. package/dist/nano-components/form-control-881fa3af.js +5 -0
  449. package/dist/nano-components/{p-dc805ecc.js.map → form-control-881fa3af.js.map} +1 -1
  450. package/dist/nano-components/fullscreen-86fa276a.js +5 -0
  451. package/dist/nano-components/fullscreen-86fa276a.js.map +1 -0
  452. package/dist/nano-components/{p-d4f6ec9f.js → global-be484e8c.js} +2 -2
  453. package/dist/nano-components/{p-d4f6ec9f.js.map → global-be484e8c.js.map} +1 -1
  454. package/dist/nano-components/index-3003356f.js +5 -0
  455. package/dist/nano-components/{p-70747f20.js.map → index-3003356f.js.map} +1 -1
  456. package/dist/nano-components/{p-d6a04b3a.js → index-9695db0a.js} +2 -2
  457. package/dist/nano-components/{p-d6a04b3a.js.map → index-9695db0a.js.map} +1 -1
  458. package/dist/nano-components/{p-bb07c3d0.js → index-f626f476.js} +1 -1
  459. package/dist/nano-components/index.esm.js +1 -1
  460. package/dist/nano-components/index.esm.js.map +1 -1
  461. package/dist/nano-components/lazyload-994232a6.js +5 -0
  462. package/dist/nano-components/lazyload-994232a6.js.map +1 -0
  463. package/dist/nano-components/{p-2155fc2c.js → local-my-account-6662da72.js} +1 -1
  464. package/dist/nano-components/{p-ee045579.js → math-c02ddfda.js} +1 -1
  465. package/dist/nano-components/modal-bd9638c0.js +5 -0
  466. package/dist/nano-components/{p-2234694a.js.map → modal-bd9638c0.js.map} +1 -1
  467. package/dist/nano-components/nano-accordion.entry.js +5 -0
  468. package/dist/nano-components/{p-9f60ff14.entry.js.map → nano-accordion.entry.js.map} +1 -1
  469. package/dist/nano-components/nano-alert.entry.js +5 -0
  470. package/dist/nano-components/{p-191352c4.entry.js.map → nano-alert.entry.js.map} +1 -1
  471. package/dist/nano-components/nano-algolia-filter.entry.js +5 -0
  472. package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -0
  473. package/dist/nano-components/nano-algolia-pagination.entry.js +5 -0
  474. package/dist/nano-components/nano-algolia-pagination.entry.js.map +1 -0
  475. package/dist/nano-components/nano-algolia-results.entry.js +5 -0
  476. package/dist/nano-components/nano-algolia-results.entry.js.map +1 -0
  477. package/dist/nano-components/nano-algolia.entry.js +5 -0
  478. package/dist/nano-components/nano-algolia.entry.js.map +1 -0
  479. package/dist/nano-components/nano-aspect-ratio.entry.js +5 -0
  480. package/dist/nano-components/{p-87329424.entry.js.map → nano-aspect-ratio.entry.js.map} +1 -1
  481. package/dist/nano-components/nano-checkbox-group.entry.js +5 -0
  482. package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -0
  483. package/dist/nano-components/nano-checkbox.entry.js +5 -0
  484. package/dist/nano-components/nano-checkbox.entry.js.map +1 -0
  485. package/dist/nano-components/nano-components.css +1 -1
  486. package/dist/nano-components/nano-components.esm.js +1 -1
  487. package/dist/nano-components/nano-components.esm.js.map +1 -1
  488. package/dist/nano-components/nano-datalist_3.entry.js +5 -0
  489. package/dist/nano-components/nano-datalist_3.entry.js.map +1 -0
  490. package/dist/nano-components/nano-date-input.entry.js +5 -0
  491. package/dist/nano-components/{p-d4e44f93.entry.js.map → nano-date-input.entry.js.map} +1 -1
  492. package/dist/nano-components/nano-date-picker.entry.js +5 -0
  493. package/dist/nano-components/{p-efd3e121.entry.js.map → nano-date-picker.entry.js.map} +1 -1
  494. package/dist/nano-components/nano-demo.entry.js +5 -0
  495. package/dist/nano-components/{p-e98835e2.entry.js.map → nano-demo.entry.js.map} +1 -1
  496. package/dist/nano-components/nano-details.entry.js +5 -0
  497. package/dist/nano-components/nano-details.entry.js.map +1 -0
  498. package/dist/nano-components/nano-dialog.entry.js +5 -0
  499. package/dist/nano-components/{p-79fff4fd.entry.js.map → nano-dialog.entry.js.map} +1 -1
  500. package/dist/nano-components/nano-drawer.entry.js +5 -0
  501. package/dist/nano-components/nano-drawer.entry.js.map +1 -0
  502. package/dist/nano-components/nano-dropdown.entry.js +5 -0
  503. package/dist/nano-components/nano-dropdown.entry.js.map +1 -0
  504. package/dist/nano-components/nano-field-validator.entry.js +5 -0
  505. package/dist/nano-components/nano-field-validator.entry.js.map +1 -0
  506. package/dist/nano-components/nano-file-upload.entry.js +5 -0
  507. package/dist/nano-components/nano-file-upload.entry.js.map +1 -0
  508. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +5 -0
  509. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -0
  510. package/dist/nano-components/nano-global-nav.entry.js +5 -0
  511. package/dist/nano-components/nano-global-nav.entry.js.map +1 -0
  512. package/dist/nano-components/nano-global-search-results.entry.js +5 -0
  513. package/dist/nano-components/nano-global-search-results.entry.js.map +1 -0
  514. package/dist/nano-components/nano-grid-item.entry.js +5 -0
  515. package/dist/nano-components/{p-9c290055.entry.js.map → nano-grid-item.entry.js.map} +1 -1
  516. package/dist/nano-components/nano-grid_2.entry.js +5 -0
  517. package/dist/nano-components/{p-7c82af28.entry.js.map → nano-grid_2.entry.js.map} +1 -1
  518. package/dist/nano-components/nano-hero.entry.js +5 -0
  519. package/dist/nano-components/{p-328ef9d3.entry.js.map → nano-hero.entry.js.map} +1 -1
  520. package/dist/nano-components/nano-icon-button_2.entry.js +5 -0
  521. package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -0
  522. package/dist/nano-components/nano-icon.entry.js +5 -0
  523. package/dist/nano-components/nano-icon.entry.js.map +1 -0
  524. package/dist/nano-components/nano-input.entry.js +5 -0
  525. package/dist/nano-components/nano-input.entry.js.map +1 -0
  526. package/dist/nano-components/nano-menu-drawer.entry.js +5 -0
  527. package/dist/nano-components/nano-menu-drawer.entry.js.map +1 -0
  528. package/dist/nano-components/nano-overflow-nav.entry.js +5 -0
  529. package/dist/nano-components/nano-overflow-nav.entry.js.map +1 -0
  530. package/dist/nano-components/nano-progress-bar.entry.js +5 -0
  531. package/dist/nano-components/nano-progress-bar.entry.js.map +1 -0
  532. package/dist/nano-components/nano-range.entry.js +5 -0
  533. package/dist/nano-components/nano-range.entry.js.map +1 -0
  534. package/dist/nano-components/nano-rating.entry.js +5 -0
  535. package/dist/nano-components/nano-rating.entry.js.map +1 -0
  536. package/dist/nano-components/nano-resize-observe_2.entry.js +5 -0
  537. package/dist/nano-components/{p-e6a0675e.entry.js.map → nano-resize-observe_2.entry.js.map} +1 -1
  538. package/dist/nano-components/nano-slide.entry.js +5 -0
  539. package/dist/nano-components/{p-3d8fb8a1.entry.js.map → nano-slide.entry.js.map} +1 -1
  540. package/dist/nano-components/nano-slides-9908c44d.js +20 -0
  541. package/dist/nano-components/nano-slides-9908c44d.js.map +1 -0
  542. package/dist/nano-components/nano-slides.entry.js +5 -0
  543. package/dist/nano-components/nano-sortable.entry.js +5 -0
  544. package/dist/nano-components/{p-3ae362ae.entry.js.map → nano-sortable.entry.js.map} +1 -1
  545. package/dist/nano-components/nano-spinner.entry.js +5 -0
  546. package/dist/nano-components/{p-9925e504.entry.js.map → nano-spinner.entry.js.map} +1 -1
  547. package/dist/nano-components/nano-split-pane.entry.js +5 -0
  548. package/dist/nano-components/{p-6c4171fa.entry.js.map → nano-split-pane.entry.js.map} +1 -1
  549. package/dist/nano-components/nano-sticker.entry.js +5 -0
  550. package/dist/nano-components/nano-sticker.entry.js.map +1 -0
  551. package/dist/nano-components/nano-tab-content.entry.js +5 -0
  552. package/dist/nano-components/{p-3f40e370.entry.js.map → nano-tab-content.entry.js.map} +1 -1
  553. package/dist/nano-components/nano-tab-group.entry.js +5 -0
  554. package/dist/nano-components/nano-tab-group.entry.js.map +1 -0
  555. package/dist/nano-components/nano-tab.entry.js +5 -0
  556. package/dist/nano-components/{p-3cac5f6d.entry.js.map → nano-tab.entry.js.map} +1 -1
  557. package/dist/nano-components/nano-table-55d753cb.js +5 -0
  558. package/dist/nano-components/nano-table-55d753cb.js.map +1 -0
  559. package/dist/nano-components/nano-table.entry.js +5 -0
  560. package/dist/nano-components/page-dots-467ace2e.js +5 -0
  561. package/dist/nano-components/page-dots-467ace2e.js.map +1 -0
  562. package/dist/nano-components/{p-cd1fd454.js → popover-e5e7a641.js} +1 -1
  563. package/dist/nano-components/scroll-ac332213.js +5 -0
  564. package/dist/nano-components/scroll-ac332213.js.map +1 -0
  565. package/dist/nano-components/{p-dc565459.js → slot-8126e238.js} +1 -1
  566. package/dist/nano-components/{p-f88fa15c.js → tabbable-26a66a22.js} +1 -1
  567. package/dist/nano-components/table.worker-34706ecc.js +5 -0
  568. package/dist/nano-components/{p-411bb8f1.js → theme-82feb8cf.js} +1 -1
  569. package/dist/nano-components/{p-7bff5224.js → throttle-ac4fcefa.js} +1 -1
  570. package/dist/nano-components/{p-c3e8e3f9.js → transitions-fb09eb32.js} +1 -1
  571. package/dist/themes/nanopore.cn.css +1 -1
  572. package/dist/themes/nanopore.cn.css.map +1 -1
  573. package/dist/themes/nanopore.css +1 -1
  574. package/dist/themes/nanopore.css.map +1 -1
  575. package/dist/types/components/algolia/algolia-data.d.ts +1 -1
  576. package/dist/types/components/algolia/algolia-filter.d.ts +1 -1
  577. package/dist/types/components/algolia/algolia-interface.d.ts +8 -2
  578. package/dist/types/components/algolia/algolia-pagination.d.ts +1 -1
  579. package/dist/types/components/algolia/algolia-results.d.ts +1 -1
  580. package/dist/types/components/algolia/algolia.d.ts +4 -11
  581. package/dist/types/components/algolia/lib/squirrelly/browser.d.ts +6 -0
  582. package/dist/types/components/algolia/lib/squirrelly/compile-string.d.ts +5 -0
  583. package/dist/types/components/algolia/lib/squirrelly/compile.d.ts +3 -0
  584. package/dist/types/components/algolia/lib/squirrelly/config.d.ts +48 -0
  585. package/dist/types/components/algolia/lib/squirrelly/container-utils.d.ts +8 -0
  586. package/dist/types/components/algolia/lib/squirrelly/containers.d.ts +18 -0
  587. package/dist/types/components/algolia/lib/squirrelly/err.d.ts +6 -0
  588. package/dist/types/components/algolia/lib/squirrelly/parse.d.ts +23 -0
  589. package/dist/types/components/algolia/lib/squirrelly/render.d.ts +3 -0
  590. package/dist/types/components/algolia/lib/squirrelly/storage.d.ts +13 -0
  591. package/dist/types/components/algolia/lib/squirrelly/utils.d.ts +8 -0
  592. package/dist/types/components/algolia/lib/template.d.ts +2 -0
  593. package/dist/types/components/checkbox/checkbox-group.d.ts +5 -0
  594. package/dist/types/components/global-nav/global-nav.d.ts +47 -20
  595. package/dist/types/components/slides/lib/js/animate.d.ts +2 -0
  596. package/dist/types/components/slides/lib/js/cell.d.ts +1 -0
  597. package/dist/types/components/slides/lib/js/drag.d.ts +1 -0
  598. package/dist/types/components/slides/lib/js/fade.d.ts +1 -0
  599. package/dist/types/components/slides/lib/js/flickity.d.ts +23 -0
  600. package/dist/types/components/slides/lib/js/fullscreen.d.ts +1 -0
  601. package/dist/types/components/slides/lib/js/index.d.ts +5 -0
  602. package/dist/types/components/slides/lib/js/lazyload.d.ts +1 -0
  603. package/dist/types/components/slides/lib/js/page-dots.d.ts +1 -0
  604. package/dist/types/components/slides/lib/js/player.d.ts +1 -0
  605. package/dist/types/components/slides/lib/js/prev-next-button.d.ts +1 -0
  606. package/dist/types/components/slides/lib/js/slide.d.ts +1 -0
  607. package/dist/types/components/slides/lib/js/utils/event-emitter.d.ts +1 -0
  608. package/dist/types/components/slides/lib/js/utils/gestures.d.ts +26 -0
  609. package/dist/types/components/slides/lib/js/utils/get-size.d.ts +6 -0
  610. package/dist/types/components/slides/lib/js/utils/utils.d.ts +5 -0
  611. package/dist/types/components/slides/slides-interface.d.ts +17 -7
  612. package/dist/types/components/slides/slides.d.ts +5 -0
  613. package/dist/types/components.d.ts +12 -137
  614. package/dist/types/utils/scroll.d.ts +5 -1
  615. package/docs-json.json +37 -280
  616. package/docs-vscode.json +6 -63
  617. package/hydrate/index.js +3502 -3443
  618. package/package.json +5 -8
  619. package/dist/cjs/_commonjsHelpers-29614748.js +0 -30
  620. package/dist/cjs/_commonjsHelpers-29614748.js.map +0 -1
  621. package/dist/cjs/algoliasearch-lite.esm.browser-992a2eff.js.map +0 -1
  622. package/dist/cjs/index-1d3ebe1a.js.map +0 -1
  623. package/dist/cjs/nano-algolia-input.cjs.entry.js +0 -168
  624. package/dist/cjs/nano-algolia-input.cjs.entry.js.map +0 -1
  625. package/dist/cjs/scroll-fc1b8387.js.map +0 -1
  626. package/dist/cjs/table.worker-da980a2f.js.map +0 -1
  627. package/dist/collection/components/algolia/algolia-input.js +0 -463
  628. package/dist/collection/components/algolia/algolia-input.js.map +0 -1
  629. package/dist/collection/components/slides/lib/js/add-remove-cell.js +0 -128
  630. package/dist/collection/components/slides/lib/js/images-loaded.js +0 -24
  631. package/dist/collection/components/slides/slides-interface.js +0 -2
  632. package/dist/collection/components/slides/slides-interface.js.map +0 -1
  633. package/dist/collection/utils/template.js.map +0 -1
  634. package/dist/components/_commonjsHelpers.js +0 -26
  635. package/dist/components/_commonjsHelpers.js.map +0 -1
  636. package/dist/components/nano-algolia-input.d.ts +0 -11
  637. package/dist/components/nano-algolia-input.js +0 -195
  638. package/dist/components/nano-algolia-input.js.map +0 -1
  639. package/dist/esm/_commonjsHelpers-04a0e019.js +0 -26
  640. package/dist/esm/_commonjsHelpers-04a0e019.js.map +0 -1
  641. package/dist/esm/algoliasearch-lite.esm.browser-04891fdc.js.map +0 -1
  642. package/dist/esm/index-06666022.js.map +0 -1
  643. package/dist/esm/nano-algolia-input.entry.js +0 -164
  644. package/dist/esm/nano-algolia-input.entry.js.map +0 -1
  645. package/dist/esm/scroll-ec7ac257.js.map +0 -1
  646. package/dist/esm/table.worker-608a4868.js.map +0 -1
  647. package/dist/nano-components/p-02b727d3.entry.js +0 -5
  648. package/dist/nano-components/p-02b727d3.entry.js.map +0 -1
  649. package/dist/nano-components/p-0563e812.entry.js +0 -5
  650. package/dist/nano-components/p-0563e812.entry.js.map +0 -1
  651. package/dist/nano-components/p-06c85b64.js +0 -5
  652. package/dist/nano-components/p-0b7c676c.entry.js +0 -5
  653. package/dist/nano-components/p-0bc40dd1.entry.js +0 -5
  654. package/dist/nano-components/p-0bc40dd1.entry.js.map +0 -1
  655. package/dist/nano-components/p-0e0f07f0.entry.js +0 -5
  656. package/dist/nano-components/p-0e0f07f0.entry.js.map +0 -1
  657. package/dist/nano-components/p-0e4da739.entry.js +0 -5
  658. package/dist/nano-components/p-0e4da739.entry.js.map +0 -1
  659. package/dist/nano-components/p-16e75af9.entry.js +0 -5
  660. package/dist/nano-components/p-16e75af9.entry.js.map +0 -1
  661. package/dist/nano-components/p-17eb456c.entry.js +0 -5
  662. package/dist/nano-components/p-17eb456c.entry.js.map +0 -1
  663. package/dist/nano-components/p-191352c4.entry.js +0 -5
  664. package/dist/nano-components/p-1a55e282.entry.js +0 -5
  665. package/dist/nano-components/p-1a55e282.entry.js.map +0 -1
  666. package/dist/nano-components/p-2234694a.js +0 -5
  667. package/dist/nano-components/p-24dcd788.entry.js +0 -5
  668. package/dist/nano-components/p-24dcd788.entry.js.map +0 -1
  669. package/dist/nano-components/p-2a105609.entry.js +0 -5
  670. package/dist/nano-components/p-2a105609.entry.js.map +0 -1
  671. package/dist/nano-components/p-328ef9d3.entry.js +0 -5
  672. package/dist/nano-components/p-359b7cd2.entry.js +0 -5
  673. package/dist/nano-components/p-359b7cd2.entry.js.map +0 -1
  674. package/dist/nano-components/p-36c3ded8.entry.js +0 -5
  675. package/dist/nano-components/p-36c3ded8.entry.js.map +0 -1
  676. package/dist/nano-components/p-3ae362ae.entry.js +0 -5
  677. package/dist/nano-components/p-3cac5f6d.entry.js +0 -5
  678. package/dist/nano-components/p-3d8fb8a1.entry.js +0 -5
  679. package/dist/nano-components/p-3eeaba47.entry.js +0 -5
  680. package/dist/nano-components/p-3eeaba47.entry.js.map +0 -1
  681. package/dist/nano-components/p-3f40e370.entry.js +0 -5
  682. package/dist/nano-components/p-51133e62.entry.js +0 -5
  683. package/dist/nano-components/p-51133e62.entry.js.map +0 -1
  684. package/dist/nano-components/p-54c4a2f5.entry.js +0 -5
  685. package/dist/nano-components/p-54c4a2f5.entry.js.map +0 -1
  686. package/dist/nano-components/p-5fc3035d.entry.js +0 -5
  687. package/dist/nano-components/p-5fc3035d.entry.js.map +0 -1
  688. package/dist/nano-components/p-650aa197.entry.js +0 -5
  689. package/dist/nano-components/p-650aa197.entry.js.map +0 -1
  690. package/dist/nano-components/p-67ab5a5f.entry.js +0 -5
  691. package/dist/nano-components/p-67ab5a5f.entry.js.map +0 -1
  692. package/dist/nano-components/p-688f1a55.entry.js +0 -5
  693. package/dist/nano-components/p-688f1a55.entry.js.map +0 -1
  694. package/dist/nano-components/p-6c4171fa.entry.js +0 -5
  695. package/dist/nano-components/p-70747f20.js +0 -5
  696. package/dist/nano-components/p-7670058b.entry.js +0 -5
  697. package/dist/nano-components/p-7670058b.entry.js.map +0 -1
  698. package/dist/nano-components/p-79fff4fd.entry.js +0 -5
  699. package/dist/nano-components/p-7c82af28.entry.js +0 -5
  700. package/dist/nano-components/p-7dd30a3f.entry.js +0 -7
  701. package/dist/nano-components/p-7dd30a3f.entry.js.map +0 -1
  702. package/dist/nano-components/p-842f826a.entry.js +0 -5
  703. package/dist/nano-components/p-842f826a.entry.js.map +0 -1
  704. package/dist/nano-components/p-87329424.entry.js +0 -5
  705. package/dist/nano-components/p-8fe51abf.js +0 -5
  706. package/dist/nano-components/p-935968b8.entry.js +0 -23
  707. package/dist/nano-components/p-935968b8.entry.js.map +0 -1
  708. package/dist/nano-components/p-9925e504.entry.js +0 -5
  709. package/dist/nano-components/p-9c290055.entry.js +0 -5
  710. package/dist/nano-components/p-9f60ff14.entry.js +0 -5
  711. package/dist/nano-components/p-a225e976.entry.js +0 -5
  712. package/dist/nano-components/p-a225e976.entry.js.map +0 -1
  713. package/dist/nano-components/p-a26bdb65.js +0 -5
  714. package/dist/nano-components/p-b27b56d3.js +0 -5
  715. package/dist/nano-components/p-b27b56d3.js.map +0 -1
  716. package/dist/nano-components/p-c80336b2.entry.js +0 -5
  717. package/dist/nano-components/p-c80336b2.entry.js.map +0 -1
  718. package/dist/nano-components/p-cad86fb8.js +0 -5
  719. package/dist/nano-components/p-cad86fb8.js.map +0 -1
  720. package/dist/nano-components/p-d18c0a7a.js +0 -5
  721. package/dist/nano-components/p-d18c0a7a.js.map +0 -1
  722. package/dist/nano-components/p-d4e44f93.entry.js +0 -5
  723. package/dist/nano-components/p-dc805ecc.js +0 -5
  724. package/dist/nano-components/p-dd5687db.js +0 -5
  725. package/dist/nano-components/p-e6a0675e.entry.js +0 -5
  726. package/dist/nano-components/p-e98835e2.entry.js +0 -5
  727. package/dist/nano-components/p-efd3e121.entry.js +0 -5
  728. package/dist/nano-components/p-f73f52ed.entry.js +0 -5
  729. package/dist/nano-components/p-f73f52ed.entry.js.map +0 -1
  730. package/dist/nano-components/p-fcbc9122.entry.js +0 -5
  731. package/dist/nano-components/p-fcbc9122.entry.js.map +0 -1
  732. package/dist/types/components/algolia/algolia-input.d.ts +0 -103
  733. package/dist/types/utils/template.d.ts +0 -2
  734. /package/dist/nano-components/{p-74a7fc4f.js.map → active-element-75b7c8a0.js.map} +0 -0
  735. /package/dist/nano-components/{p-cecb9af1.js.map → date-utils-6b7a6e1f.js.map} +0 -0
  736. /package/dist/nano-components/{p-cdfc507e.js.map → dom-8599fac1.js.map} +0 -0
  737. /package/dist/nano-components/{p-842cf127.js.map → drag-1723a4cc.js.map} +0 -0
  738. /package/dist/nano-components/{p-9bfdee71.js.map → events-6a805b42.js.map} +0 -0
  739. /package/dist/nano-components/{p-f8f89998.js.map → focus-visible-8b2c14da.js.map} +0 -0
  740. /package/dist/nano-components/{p-bb07c3d0.js.map → index-f626f476.js.map} +0 -0
  741. /package/dist/nano-components/{p-06c85b64.js.map → local-my-account-6662da72.js.map} +0 -0
  742. /package/dist/nano-components/{p-ee045579.js.map → math-c02ddfda.js.map} +0 -0
  743. /package/dist/nano-components/{p-0b7c676c.entry.js.map → nano-slides.entry.js.map} +0 -0
  744. /package/dist/nano-components/{p-2155fc2c.js.map → nano-table.entry.js.map} +0 -0
  745. /package/dist/nano-components/{p-cd1fd454.js.map → popover-e5e7a641.js.map} +0 -0
  746. /package/dist/nano-components/{p-dc565459.js.map → slot-8126e238.js.map} +0 -0
  747. /package/dist/nano-components/{p-f88fa15c.js.map → tabbable-26a66a22.js.map} +0 -0
  748. /package/dist/nano-components/{p-8fe51abf.js.map → table.worker-34706ecc.js.map} +0 -0
  749. /package/dist/nano-components/{p-f258383d.js → table.worker-f258383d.js} +0 -0
  750. /package/dist/nano-components/{p-411bb8f1.js.map → theme-82feb8cf.js.map} +0 -0
  751. /package/dist/nano-components/{p-7bff5224.js.map → throttle-ac4fcefa.js.map} +0 -0
  752. /package/dist/nano-components/{p-c3e8e3f9.js.map → transitions-fb09eb32.js.map} +0 -0
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import{r as e,c as t,h as n,a,g as s}from"./p-d6a04b3a.js";const l=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block;flex:1 1 100%}.main-search{display:flex;background:white;font-size:14px;min-height:calc(100vh - 63px);justify-content:space-between}.main-search__wrap{display:contents;height:100%}.main-search ul{margin:0;padding:0;list-style:none}.main-search li{margin:0;padding:0}.main-search button:not(.result__tags-tag){-webkit-appearance:none;appearance:none;border:none;background:none;position:relative;inset-block-start:-2px}.main-search .icon-button{color:inherit;align-self:normal;padding:9px 7px;cursor:pointer;display:flex;align-items:center}.main-search__topbar{display:flex;align-items:center;flex-wrap:wrap;-webkit-margin-after:1em;margin-block-end:1em}.main-search__topbar::after{content:"";width:calc(100% - 30px);inset-inline-start:30px;position:relative;-webkit-border-after:1px solid #e5eef1;border-block-end:1px solid #e5eef1;-webkit-padding-before:0.9em;padding-block-start:0.9em}.main-search__applied-filters{border:solid 1px #e4e6e8;text-transform:uppercase;border-radius:3px;font-weight:bold;display:flex;align-items:center;line-height:0.9;padding:5px 5px 0;letter-spacing:2px;flex-wrap:wrap;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.main-search__applied-filters span{display:flex;align-items:center}:host(.small) .main-search__applied-filters{display:none}.main-search__applied-nofilter{margin-inline:0 5px;margin-block:0 3px;padding-inline:7px;padding-block:10px;font-size:12px;color:rgba(69, 85, 86, 0.85)}.main-search__applied-filter{padding-inline:8px 2px;padding-block:5px 3px;margin-inline:0 5px;margin-block:0 5px;color:#455556;font-size:11px;border-radius:2px;border:solid 1px rgba(0, 132, 169, 0.5);background-color:rgba(0, 132, 169, 0.2);line-height:1}.main-search__applied-filter .icon-button{padding-inline:10px 4px;padding-block:2px 1px}.main-search__applied-filter .icon-button nano-icon{pointer-events:none}.main-search .topbar__bkbtn{position:relative;inset-inline-start:-7px}:host(.small) .main-search .topbar__query{display:none}.main-search .topbar__filtering{display:flex;align-items:center;margin-block:0;margin-inline:1em 0;flex:1}.main-search .topbar__order{min-width:175px;max-width:200px;-webkit-margin-start:auto;margin-inline-start:auto}:host(.small) .main-search .topbar__order{max-width:300px}.main-search .topbar nano-select{opacity:1;transition:0.1s ease opacity}.main-search .topbar nano-select:not(.hydrated){opacity:0}.main-search .topbar__show-filters{-webkit-margin-start:0.5em;margin-inline-start:0.5em;text-transform:uppercase;display:none;flex-direction:column;align-items:center}.main-search .topbar__show-filters nano-icon{font-size:20px}:host(.small) .main-search .topbar__show-filters{display:flex}.main-search .topbar__filter-count{width:12px;height:12px;box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);border:solid 1px #005c76;background-color:#005c76;color:white;font-size:7px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:1;-webkit-margin-after:3px;margin-block-end:3px}.main-search__results{font-size:14px;padding:1em 40px;color:rgba(69, 85, 86, 0.85);width:70%;height:100%}@media (max-width: 576px){.main-search__results{padding:1em 20px}}:host(.small) .main-search__results{width:100%}.main-search__filters{outline:none;padding-inline:0 40px;padding-block:1.8em 1em;flex:1 1 30%;box-sizing:border-box}@media (max-width: 576px){.main-search__filters{-webkit-padding-end:20px;padding-inline-end:20px}}:host(:not(.small)) .main-search__filters{max-width:350px;min-width:220px}.filters{color:#455556;background:white;font-size:14px}:host(.small) .filters{position:fixed;width:0;height:0;z-index:10;inset-block-start:0;inset-inline-end:0;transition:all 0s ease 0.5s;background:none}:host(.small) .filters.show{height:100vh;width:100vw;transition:all 0s ease 0s}:host(.small) .filters.show::after{opacity:1}:host(.small) .filters::after{content:"";background:rgba(0, 0, 0, 0.5);position:absolute;inset:0;z-index:-1;opacity:0;transition:0.1s ease opacity}.filters__close-filters{display:none !important;font-size:1.4em}:host(.small) .filters__close-filters{display:inline-block !important;margin-inline:auto 0;margin-block:0}.filters__old-posts{-webkit-margin-start:1rem;margin-inline-start:1rem}:host(.small) .filters-wrap{position:absolute;inset-block-start:0;inset-inline-end:0;background:#f7f6f6;transform:translateX(100%);width:300px;min-width:200px;max-width:80vw;transition:transform 0.3s ease;padding:1em;color:black;overflow:auto;height:100vh}:host(.small) .filters.show .filters-wrap{transform:translateX(0%);box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1)}.filters ul{margin:0;padding:0;list-style:none}.filters li{margin:0;padding:0}.filters nano-details{--padding:0.8em;margin:0.8em 0}.filters nano-details strong[slot]{display:block;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em)}.filters nano-details nano-icon[slot=icon-end]{-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);-webkit-padding-end:calc(20px - 0.8em);padding-inline-end:calc(20px - 0.8em)}.filters li:last-child .filter-label{-webkit-margin-after:0;margin-block-end:0}.filters .filter-label{display:flex;align-items:center;position:relative;margin:0.5em 0;line-height:1.4;z-index:0}.filters .filter-label::before{margin-inline:0 1em;margin-block:0;content:"";border:1px solid #007495;background:#fff;border-radius:3px;height:1em;width:1em;min-width:1em;min-height:1em;display:inline-block}.filters .filter-label::after{background-image:url("data:image/svg+xml;charset=utf-8,<svg%20xmlns=\'http://www.w3.org/2000/svg\'%20viewBox=\'0%200%20512%20512\'><path%20fill=\'%23ffffff\'%20d=\'M173.898%20439.404l-166.4-166.4c-9.997-9.997-9.997-26.206%200-36.204l36.203-36.204c9.997-9.998%2026.207-9.998%2036.204%200L192%20312.69%20432.095%2072.596c9.997-9.997%2026.207-9.997%2036.204%200l36.203%2036.204c9.997%209.997%209.997%2026.206%200%2036.204l-294.4%20294.401c-9.998%209.997-26.207%209.997-36.204-.001z\'/></svg>");content:"";height:0.7em;width:0.7em;position:absolute;inset-inline-start:2px;inset-block-start:50%;transform:translateY(-50%);z-index:1;display:block;background-size:100%;background-position:center center;background-repeat:no-repeat}.filters .filter-cb{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.filters .filter-cb:checked+.filter-label::before{background:#245a6f}.filters .filter-cb:focus+.filter-label::before{box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7)}.filters-header{display:flex;align-items:center;-webkit-border-after:1px solid #90c6e7;border-block-end:1px solid #90c6e7;-webkit-padding-after:0.5rem;padding-block-end:0.5rem;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.filters-reset{color:#007495;font-size:12px;text-decoration:underline;margin-inline:auto 0;margin-block:0}:host(.small) .filters-reset{margin:0}.filters-title{margin:0;text-transform:uppercase;color:rgba(69, 85, 86, 0.85);font-weight:bold;font-size:14px}:host(.small) .filters-title{display:none}.result{text-decoration:none;display:flex;flex-flow:row wrap;-webkit-padding-after:14px;padding-block-end:14px;-webkit-border-after:1px solid #90c6e7;border-block-end:1px solid #90c6e7}.result *{word-wrap:break-word;word-break:break-word}.result__title{margin:1em 0 0.5em;width:70%;display:flex}.result__title a{color:#0084a9;font-size:14px;line-height:1.43;text-decoration:none;font-weight:600}.result__title nano-icon{margin-inline:0 0.5em;margin-block:0;min-width:20px;min-height:20px;opacity:0.8}@media (max-width: 992px){.result__title{width:100%}}.result__body{color:#455556;font-size:13px;width:70%;text-decoration:none}@media (max-width: 992px){.result__body{width:100%}}.result__pdf{display:inline-block;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;color:#b5aea7}.result__meta{display:flex;flex-flow:row wrap;color:#455556;font-size:11px;line-height:13px;width:100%;align-items:center}.result__meta>*{-webkit-margin-before:0.5rem;margin-block-start:0.5rem}.result__meta>*:not(:last-child){-webkit-padding-end:0;padding-inline-end:0}.result__meta>*:not(:last-child)::after{content:"";height:1rem;width:1px;background:#90c6e7;display:inline-block;-webkit-margin-start:0.7rem;margin-inline-start:0.7rem;-webkit-margin-end:0.7rem;margin-inline-end:0.7rem}@media (max-width: 576px){.result__meta>*:not(:last-child)::after{display:none}}@media (max-width: 576px){.result__meta{flex-flow:column;align-items:flex-start}}.result__tags{display:flex;flex-flow:row wrap}@media (max-width: 576px){.result__tags{-webkit-padding-start:0;padding-inline-start:0}}.result__tags-tag{color:#455556;display:inline-block;font-size:0.4375rem;letter-spacing:1.4px;background:#fff;border-radius:2px;text-transform:uppercase;padding:0 4px 1px 5px;font-weight:600;margin:3px 0.25rem 0.25rem 0;border:1px solid #b5aea7;white-space:nowrap;line-height:13px}.result__type{font-weight:600;text-transform:capitalize;white-space:nowrap;display:flex;align-items:center}.result__date{display:flex;align-items:center;color:#455556}.result__source{color:#455556;-webkit-padding-end:0.75rem;padding-inline-end:0.75rem}.result__authors{font-size:12px;color:#455556;-webkit-margin-after:0.25rem;margin-block-end:0.25rem;text-decoration:none;width:70%}.result__buttons{width:70%;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.result__buttons-button{background-color:#007495;color:#fff;padding:5px 8px 1px;border-radius:4px;display:inline-block;font-size:11px;text-decoration:none;border:none}.result__promo{width:70%;-webkit-margin-after:0.5rem;margin-block-end:0.5rem;text-decoration:none;color:#455556}.result__promo-box{width:300px;background-color:#e3eef1;padding:12px 12px 8px 4px;display:flex;flex-flow:row nowrap;-webkit-margin-before:1rem;margin-block-start:1rem}.result__promo-bigdate{flex:0 1 60px;text-align:center;font-weight:600;color:#007495;text-transform:uppercase;line-height:1.25;letter-spacing:1.5px}@media (max-width: 992px){.result__promo-bigdate{width:100%}}.result__promo-bigdate span{color:#455556;display:block}.result__promo-bigdate~div{-webkit-padding-start:1rem;padding-inline-start:1rem;-webkit-border-start:1px solid #c5dbe1;border-inline-start:1px solid #c5dbe1}.result__promo-date{font-size:12px}.result__promo-venue{font-size:12px}.result__promo nano-icon{color:#007495;position:relative;inset-block-start:1px;-webkit-padding-end:2px;padding-inline-end:2px}.result__image{display:block;background-size:cover;background-repeat:no-repeat;background-position:center;border-radius:4px;position:relative;width:100%;height:150px;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}@media (min-width: 576px){.result__image{width:142px;height:80px}}.result__image nano-icon{position:absolute;inset-block-start:calc(50% - 0.75rem);inset-inline-start:calc(50% - 0.75rem);font-size:1.5rem;color:#0084a9;--primary-color:#fff;--secondary-color:#0084a9;--primary-opacity:1}@media (max-width: 576px){.result__image nano-icon{font-size:3rem;inset-block-start:calc(50% - 1.5rem);inset-inline-start:calc(50% - 1.5rem)}}.result__video-body{width:70%;text-decoration:none;display:flex;flex-flow:row wrap}@media (max-width: 992px){.result__video-body{width:100%}}@media (max-width: 576px){.result__video-body{flex-flow:column}}.result__video-body .result__body{-webkit-padding-start:1rem;padding-inline-start:1rem;display:flex;flex-direction:column;-webkit-margin-after:0;margin-block-end:0;flex:1}@media (max-width: 576px){.result__video-body .result__body{-webkit-padding-start:0;padding-inline-start:0}}.result__video-body .result__body p{display:inline;margin:0}.result__video-body .result__body u,.result__video-body .result__body li,.result__video-body .result__body a{text-decoration:none}.result__video-body .result__body .result__meta{-webkit-margin-before:0.5rem;margin-block-start:0.5rem}.result__video-body .result__body .result__description{flex:1 0 auto}.search-empty{padding:3rem 0;text-align:center;-webkit-border-before:1px solid #e5eef1;border-block-start:1px solid #e5eef1}.search-empty h2{color:#455556;font-size:1.125rem;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.search-empty-icon{font-size:7rem;--icon-color:#e4e6e8;-webkit-margin-after:2rem;margin-block-end:2rem}.search__highlight{background:#fbffbf;font-style:normal}';const i="created > "+Math.floor((Date.now()-631152e5)/1e3);const r=class{constructor(n){e(this,n);this.nanoSearchGoBack=t(this,"nanoSearchGoBack",7);this.tagClick=e=>{e.preventDefault();let t=e.target.dataset.value;t=t==="publication"?"publications":t;t=t.toLowerCase();const n=this.algoliaEle.querySelector('nano-algolia-filter[filter-name="tags"]');if(n.value.indexOf(t)===-1){n.value=n.value?[...n.value,t]:[t]}};this.algoliaEle=undefined;this.currentWidth=undefined;this.apiKey=undefined;this.appId=undefined;this.index=undefined}handleAlgoliaCredsChange(){if(!this.apiKey||!this.appId||!this.algoliaEle)return;this.algoliaEle.apiKey=this.apiKey;this.algoliaEle.appId=this.appId}handleAlgoliaIndexChange(){if(!this.index||!this.algoliaEle)return;this.algoliaEle.searchIndex=this.index}handleGlobalNavReset(e){if(e.target.tagName!=="NANO-GLOBAL-NAV")return;this.algoliaResultsEle=null;this.goback()}handleGlobalNavSearch(e){if(e.target.tagName!=="NANO-GLOBAL-NAV")return;const{detail:{results:t,client:n}}=e;const a=t.find((e=>e.selected));this.apiKey=n.apiKey;this.appId=n.appId;this.index={name:a.indexName,index:a.index,domain:a.domain,filters:a.filters};this.algoliaEle.query=a.query}handleReorder(e){if(e.composedPath().find((e=>e.classList&&e.classList.contains("indexchange")))&&!!this.algoliaResultsEle){this.changeOrder(e)}}attachListeners(e){if(!e.composedPath().find((e=>e.id&&e.id==="main-search")))return;this.algoliaResultsEle=this.algoliaEle.querySelector("#main-search-results");this.attachResultListeners();this.algoliaEle.querySelectorAll(".filters-reset").forEach((e=>{e.addEventListener("click",(()=>{this.removeAllFilters()}))}));this.algoliaEle.querySelectorAll(".close-filters").forEach((e=>{e.addEventListener("click",(()=>{this.closefilters()}))}));const t=this.algoliaEle.querySelector(".filters-wrap");if(t){t.addEventListener("click",(e=>{e.stopPropagation()}))}this.filtersDiv=this.algoliaEle.querySelector("#main-search-filters");const n=this.algoliaEle.querySelector(".old-posts");if(n){n.addEventListener("change",(e=>{this.toggleOldResults(e.target.checked)}))}}attachResultListeners(e){if(e&&e.composedPath().find((e=>e===this.algoliaEle))){this.algoliaResultsEle=this.algoliaEle.querySelector("nano-algolia-results")}if(!this.algoliaResultsEle)return;const t=this.algoliaResultsEle;t.querySelectorAll(".remove-filter").forEach((e=>{e.addEventListener("click",(e=>{const t=e.target;this.removeFilter(t.dataset.filter,t.dataset.filterVal)}))}));t.querySelectorAll(".back-btn").forEach((e=>{e.addEventListener("click",(()=>{this.goback()}))}));t.querySelectorAll(".topbar__show-filters").forEach((e=>{this.openFilterBtn=e;e.addEventListener("click",(()=>{this.filtersDiv.tabIndex=-1;this.filtersDiv.classList.add("show");this.filtersDiv.setAttribute("aria-expanded","true");document.body.style.overflow="hidden";setTimeout((()=>this.filtersDiv.focus()),20)}))}));const n=Array.from(t.querySelectorAll(".result__tags-tag"));n.forEach((e=>{e.removeEventListener("click",this.tagClick);e.addEventListener("click",this.tagClick)}))}changeOrder(e){this.algoliaEle.replicaIndex=e.detail.value}goback(){const e=this.nanoSearchGoBack.emit();if(e.defaultPrevented)return;this.removeAllFilters();this.algoliaEle.query="";this.algoliaEle.showResults=false}removeFilter(e,t){this.algoliaEle.removeFilters(e,t)}removeAllFilters(){this.algoliaEle.removeFilters()}closefilters(){if(!this.filtersDiv)return;this.filtersDiv.tabIndex=null;this.filtersDiv.classList.remove("show");this.filtersDiv.setAttribute("aria-expanded","false");document.body.style.overflow="";setTimeout((()=>this.openFilterBtn.focus()),20)}toggleOldResults(e){if(e)this.algoliaEle.filters=this.algoliaEle.filters.filter((e=>!e.startsWith("created > ")));else this.algoliaEle.filters=[...this.algoliaEle.filters,i]}componentDidLoad(){this.algoliaEle.filters=[i];if(!window["ResizeObserver"])return;this.ro=new ResizeObserver((e=>{for(const t of e){if(!t.contentRect.width)return;this.currentWidth=t.contentRect.width}}));this.ro.observe(this.el)}render(){return n(a,{class:{small:this.currentWidth<677},dir:this.el.ownerDocument.dir==="rtl"?"rtl":undefined},n("nano-algolia",{"store-id":"searchq","store-method":"url-hash-push",class:"main-search__wrap sc-nano-global-search-results",ref:e=>this.algoliaEle=e,id:"main-search"},n("template",{slot:"template"},`<div class="main-search sc-nano-global-search-results">\n <nano-algolia-results id="main-search-results" class="main-search__results sc-nano-global-search-results" infinite-scroll>\n <script type="text/template" slot="start-template">\n <div class="sc-nano-global-search-results main-search__topbar topbar">\n <button class="sc-nano-global-search-results topbar__bkbtn back-btn icon-button">\n <nano-icon class="sc-nano-global-search-results" name="light/chevron-left" size="small"></nano-icon>\n </button>\n <div>\n <em class="sc-nano-global-search-results topbar__query">'{{ it.query }}' - </em> <strong>{{ it.totalHitsWithFilters }}</strong> Results\n </div>\n\n <div class="sc-nano-global-search-results topbar__filtering">\n {{ @if (it.results.length) }}\n\n {{ @if (it.indexName === 'All') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="all_prod_en">Sort by: Most relevant</nano-option>\n <nano-option value="all_prod_en_date_desc">Sort by: Newest</nano-option>\n <nano-option value="all_prod_en_date_asc">Sort by: Oldest</nano-option>\n <nano-option value="all_prod_en_activity_date_desc">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'www') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="cws_english_en">Sort by: Most relevant</nano-option>\n <nano-option value="cws_english_en_date_desc">Sort by: Newest</nano-option>\n <nano-option value="cws_english_en_date_asc">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Resources') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="cws_english_resources_en">Sort by: Most relevant</nano-option>\n <nano-option value="cws_english_resources_en_featured_desc">Sort by: Newest</nano-option>\n <nano-option value="cws_english_resources_en_featured_asc">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Store') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="store_prod">Sort by: Most relevant</nano-option>\n <nano-option value="store_prod_date_desc">Sort by: Newest</nano-option>\n <nano-option value="store_prod_date_asc">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Community') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--community indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="community_prod">Sort by: Most relevant</nano-option>\n <nano-option value="community_prod_date_desc">Sort by: Newest</nano-option>\n <nano-option value="community_prod_date_asc">Sort by: Oldest</nano-option>\n <nano-option value="community_prod_activity_date_desc">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n {{ /if }}\n\n <button class="sc-nano-global-search-results topbar__show-filters filters-title" aria-controls="main-search-filters">\n {{ @if (it.appliedFilters && it.appliedFilters.length > 0) }}\n <span class="sc-nano-global-search-results topbar__filter-count">\n {{ (it.appliedFilters.reduce(function(a, b) { return a + (b.values ? b.values.length : 0) }, 0)) }}\n </span>\n {{ /if }}\n <nano-icon class="sc-nano-global-search-results" name="light/filter"></nano-icon>\n </button>\n </div>\n </div>\n\n {{ @if (it.results.length) }}\n <div class="sc-nano-global-search-results main-search__applied-filters">\n {{ @if (it.appliedFilters) }}\n {{ @each(it.appliedFilters) => filterObj }}\n {{ @each(filterObj.values) => filterVal }}\n <span class="sc-nano-global-search-results main-search__applied-filter">\n {{ filterVal | public_name }}\n <button class="sc-nano-global-search-results icon-button remove-filter" data-filter="{{ filterObj.name }}" data-filter-val="{{ filterVal }}">\n <nano-icon class="sc-nano-global-search-results" name="light/times"></nano-icon>\n </button>\n </span>\n {{ /each }}\n {{ /each }}\n {{ #else }}\n <span class="sc-nano-global-search-results main-search__applied-nofilter">&nbsp;</span>\n {{ /if }}\n </div>\n {{ /if }}\n <\/script>\n\n <script type="text/template" slot="result-template">\n \x3c!-- START NO CONTENT --\x3e\n {{ @if ((!it.results || !it.results.length)) }}\n <div class="search-empty">\n <nano-icon name="light/search" class="search-empty-icon"></nano-icon>\n <h2>No matches found...</h2>\n <p>Please try a different search query.</p>\n </div>\n {{ /if }}\n \x3c!-- END NO CONTENT --\x3e\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n {{ contentType = result.content_type ? result.content_type : result.type }}\n <li class="sc-nano-global-search-results">\n <div class="sc-nano-global-search-results result">\n <h4 class="sc-nano-global-search-results result__title" data-icon-set="{{(iconSet = false)}}">\n <a href="{{ result.url | abs_url(it, result) }}">\n {{ result._snippetResult.title.value | safe }}\n {{ @if (contentType === 'technical_document' || contentType === 'literature' || contentType === 'white_paper' || contentType === 'protocol') }}\n <span class="sc-nano-global-search-results result__pdf">PDF</span>\n {{ /if }}\n </a>\n </h4>\n {{ @if (result.authors) }}\n {{ @if (typeof result.authors === 'string') }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">Authors: {{ result.authors | trim_to(50) }}</a>\n {{ #else }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">\n {{ @each(result.authors) => author, index }}\n \x3c!-- {{ @if(index == 0)}} --\x3e\n Authors: {{ author | trim_to(60) }}\n \x3c!-- {{ /if }} --\x3e\n {{ /each }}\n </a>\n {{ /if }}\n {{ /if }}\n {{ @if (contentType === 'video' || contentType === 'lc_lightning_talk' ) }}\n {{ @if (result.name) }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">Speaker: {{ result.name | trim_to(50) }}</a>\n {{ /if }}\n <a class="sc-nano-global-search-results result__video-body" href="{{ result.url | abs_url(it, result) }}">\n {{ @if (result.image) }}\n <div class="sc-nano-global-search-results result__image" style="background-image: url('{{ result.image | abs_url(it, result) }}')">\n <nano-icon class="sc-nano-global-search-results" name="duotone/play-circle"></nano-icon>\n </div>\n {{ /if }}\n <div class="sc-nano-global-search-results result__body">\n <div class="sc-nano-global-search-results result__description">\n {{ @if (result.description) }}\n {{ result._snippetResult.description.value | safe }}\n {{ /if }}\n </div>\n </div>\n <div class="sc-nano-global-search-results result__meta">\n {{ @if (result.type || result.content_type) }}\n <div class="sc-nano-global-search-results result__type">\n {{ @if (contentType === 'lc_lightning_talk') }}\n Presentation\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.tags) }}\n <div class="sc-nano-global-search-results result__tags">\n {{ @if (typeof result.tags === 'string') }}\n <button data-value="{{ result.tags | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ result.tags }}</button>\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== "No video" && tag !== "Resources" && tag !== "Video") }}\n <button data-value="{{ tag | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class="sc-nano-global-search-results result__source">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n </a>\n {{ /if }}\n {{ @if (result.body) }}\n <a class="sc-nano-global-search-results result__body" href="{{ result.url | abs_url(it, result) }}">{{ result._snippetResult.body.value | safe }}</a>\n {{ /if }}\n {{ @if (contentType === 'product' }}\n <div class="sc-nano-global-search-results result__buttons">\n <a class="sc-nano-global-search-results result__buttons-button" href="{{ result.url | abs_url(it, result) }}">View product</a>\n </div>\n {{ /if }}\n {{ @if (contentType === 'event') }}\n <a class="sc-nano-global-search-results result__promo" href="{{ result.url | abs_url(it, result) }}">\n <div class="sc-nano-global-search-results result__promo-box">\n <div class="sc-nano-global-search-results result__promo-bigdate">\n {{ result.start_date | date_long({year: undefined, month: 'short', day: undefined}) }}\n <span>{{ result.start_date | date_long({year: undefined, month: undefined, day: 'numeric'}) }}</span>\n </div>\n <div>\n <div class="sc-nano-global-search-results result__promo-date">\n <nano-icon class="sc-nano-global-search-results" name="light/calendar-alt"></nano-icon>\n {{ @if (result.end_date) }}\n {{ @if (result.end_date !== result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', month: 'short'}) }} - {{ result.end_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ #else }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ #else }}\n {{ @if (result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ /if }}\n </div>\n <div class="sc-nano-global-search-results result__promo-venue">\n <nano-icon class="sc-nano-global-search-results" name="light/map-marker-alt"></nano-icon>\n Venue\n </div>\n </div>\n </div>\n </a>\n {{ /if }}\n {{ @if (contentType !== 'lc_lightning_talk' && contentType !== 'video') }}\n <div class="sc-nano-global-search-results result__meta">\n {{ @if (result.type || result.content_type) }}\n <div class="sc-nano-global-search-results result__type">\n {{ @if (contentType === 'news_item') }}\n News\n {{ #elif (contentType === 'static_page' || contentType === 'bespoke') }}\n Page\n {{ #elif (contentType === 'case_study') }}\n Case study\n {{ #elif (contentType === 'lc_poster') }}\n Poster\n {{ #elif (contentType === 'nanopore_live') }}\n Live stream\n {{ #elif (contentType === 'data_release') }}\n Data release\n {{ #elif (contentType === 'research_area') }}\n Research area\n {{ #elif (contentType === 'white_paper') }}\n White paper\n {{ #elif (contentType === 'technical_document') }}\n Technical document\n {{ #elif (contentType === 'info_sheet') }}\n Info sheet\n {{ #elif (contentType === 'lc_home' || contentType === 'lc_venue') }}\n London Calling\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (contentType !== 'event') }}\n {{ @if (result.updated) }}\n <div class="sc-nano-global-search-results result__date">{{ result.updated | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class="sc-nano-global-search-results result__date">{{ result.created | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ /if }}\n {{ /if }}\n {{ /if }}\n {{ @if (result.tags) }}\n <div class="sc-nano-global-search-results result__tags">\n {{ @if (typeof result.tags === 'string') }}\n {{ @if (result.tags !== "Resources" && result.tags !== "Tools" && result.tags !== "Publications" && result.tags !== "Case studies") }}\n <button data-value="{{ result.tags | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ result.tags }}</button>\n {{ /if }}\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== "Resources" && tag !== "Tools" && tag !== "Publications" && tag !== "Case studies") }}\n <button data-value="{{ tag | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class="sc-nano-global-search-results result__source">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n {{ /if }}\n </div>\n </li>\n {{ /each }}\n {{ /if }}\n <\/script>\n\n <div slot="start-output"></div>\n <ul slot="result-output" class="sc-nano-global-search-results"></ul>\n </nano-algolia-results>\n\n {{ @if(Object.keys(it.origFilters).length) }}\n <div class="sc-nano-global-search-results main-search__filters filters close-filters" id="main-search-filters">\n <div class="sc-nano-global-search-results filters-wrap">\n {{ @if(it.totalHits) }}\n <div class="sc-nano-global-search-results filters-header">\n <strong class="sc-nano-global-search-results filters-title">Filters</strong>\n <button class="sc-nano-global-search-results filters-reset">Reset</button>\n <button class="sc-nano-global-search-results filters__close-filters close-filters icon-button" aria-controls="main-search-filters">\n <nano-icon class="sc-nano-global-search-results" name="light/times"></nano-icon>\n </button>\n </div>\n {{ /if }}\n\n <div>\n <input class="sc-nano-global-search-results filter-cb old-posts filters__old-posts" type="checkbox" name="old-posts" id="old-posts" value="nice" />\n <label class="sc-nano-global-search-results filter-label" for="old-posts">\n <span>Include posts older than 2 years</span>\n </label>\n {{ @if(it.origFilters['type']) }}\n <nano-details class="sc-nano-global-search-results" open={true} icon-rotation="180">\n <strong slot="label">Type</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf1" store-method="url-hash-push" filter-name="type">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="sc-nano-global-search-results filter-cb" type="checkbox" value="{{ filter }}" id="type-{{ filter }}-{{x}}" />\n <label class="sc-nano-global-search-results filter-label" for="type-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['channel']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Channels</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf2" store-method="url-hash-push" filter-name="channel">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter }}" id="channel-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="channel-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['authors']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Authors</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf3" store-method="url-hash-push" filter-name="authors">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter }}" id="authors-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="authors-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['categories_without_path']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Category</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf4" store-method="url-hash-push" filter-name="categories_without_path">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n {{ @if(!filter.match(/publication/)) }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="sc-nano-global-search-results filter-cb" type="checkbox" value="{{ filter }}" id="cwp-{{ filter }}-{{x}}" />\n <label class="sc-nano-global-search-results filter-label" for="cwp-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /if }}\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['tags']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Tags</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf5" store-method="url-hash-push" filter-name="tags">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter | lowercase }}" id="tags-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="tags-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n </div>\n </div>\n </div>\n {{ /if }}\n </div>`),n("div",{slot:"output"}),n("slot",null)))}get el(){return s(this)}static get watchers(){return{algoliaEle:["handleAlgoliaCredsChange","handleAlgoliaIndexChange"],apiKey:["handleAlgoliaCredsChange"],appId:["handleAlgoliaCredsChange"],index:["handleAlgoliaIndexChange"]}}};r.style=l;export{r as nano_global_search_results};
5
- //# sourceMappingURL=p-02b727d3.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["globalSearchResultsCss","filterOldPosts","Math","floor","Date","now","GlobalSearchResults","this","tagClick","e","preventDefault","tagVal","target","dataset","value","toLowerCase","filter","algoliaEle","querySelector","indexOf","handleAlgoliaCredsChange","apiKey","appId","handleAlgoliaIndexChange","index","searchIndex","handleGlobalNavReset","tagName","algoliaResultsEle","goback","handleGlobalNavSearch","detail","results","client","result","find","selected","name","indexName","domain","filters","query","handleReorder","composedPath","ele","classList","contains","changeOrder","attachListeners","id","attachResultListeners","querySelectorAll","forEach","item","addEventListener","removeAllFilters","closefilters","filterWrap","stopPropagation","filtersDiv","oldResults","toggleOldResults","checked","el","resultEle","clickEv","removeFilter","filterVal","openFilterBtn","tabIndex","add","setAttribute","document","body","style","overflow","setTimeout","focus","tags","Array","from","tag","removeEventListener","ev","replicaIndex","goBackEvent","nanoSearchGoBack","emit","defaultPrevented","showResults","facet","removeFilters","remove","show","f","startsWith","componentDidLoad","window","ro","ResizeObserver","entries","entry","contentRect","width","currentWidth","observe","render","h","Host","class","small","dir","ownerDocument","undefined","ref","slot"],"sources":["./src/components/global-search-results/global-search-results.scss?tag=nano-global-search-results&encapsulation=shadow","./src/components/global-search-results/global-search-results.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n\n:host {\n display: block;\n flex: 1 1 100%;\n}\n\n.main-search {\n display: flex;\n background: white;\n font-size: 14px;\n min-height: calc(100vh - 63px);\n justify-content: space-between;\n\n &__wrap {\n /* autoprefixer: ignore next */\n display: contents;\n height: 100%;\n }\n\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n li {\n margin: 0;\n padding: 0;\n }\n\n button:not(.result__tags-tag) {\n appearance: none;\n border: none;\n background: none;\n position: relative;\n inset-block-start: -2px;\n }\n\n .icon-button {\n color: inherit;\n align-self: normal;\n padding: 9px 7px;\n cursor: pointer;\n display: flex;\n align-items: center;\n }\n\n &__topbar {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n margin-block-end: 1em;\n\n &::after {\n content: '';\n width: calc(100% - 30px);\n inset-inline-start: 30px;\n position: relative;\n border-block-end: 1px solid #e5eef1;\n padding-block-start: 0.9em;\n }\n }\n\n &__applied-filters {\n border: solid 1px map.get($colors, lightgrey);\n text-transform: uppercase;\n border-radius: 3px;\n font-weight: bold;\n display: flex;\n align-items: center;\n line-height: 0.9;\n padding: 5px 5px 0;\n letter-spacing: 2px;\n flex-wrap: wrap;\n margin-block-end: 0.5rem;\n\n span {\n display: flex;\n align-items: center;\n }\n\n :host(.small) & {\n display: none;\n }\n }\n\n &__applied-nofilter {\n margin-inline: 0 5px;\n margin-block: 0 3px;\n padding-inline: 7px;\n padding-block: 10px;\n font-size: 12px;\n color: rgb(69 85 86 / 85%);\n }\n\n &__applied-filter {\n padding-inline: 8px 2px;\n padding-block: 5px 3px;\n margin-inline: 0 5px;\n margin-block: 0 5px;\n color: map.get($colors, darkgrey);\n font-size: 11px;\n border-radius: 2px;\n border: solid 1px rgb(0 132 169 / 50%);\n background-color: rgb(0 132 169 / 20%);\n line-height: 1;\n\n .icon-button {\n padding-inline: 10px 4px;\n padding-block: 2px 1px;\n\n nano-icon {\n pointer-events: none;\n }\n }\n }\n\n .topbar {\n &__bkbtn {\n position: relative;\n inset-inline-start: -7px;\n }\n\n &__query {\n :host(.small) & {\n display: none;\n }\n }\n\n &__filtering {\n display: flex;\n align-items: center;\n margin-block: 0;\n margin-inline: 1em 0;\n flex: 1;\n }\n\n &__order {\n min-width: 175px;\n max-width: 200px;\n margin-inline-start: auto;\n\n :host(.small) & {\n max-width: 300px;\n }\n }\n\n nano-select {\n opacity: 1;\n transition: 0.1s ease opacity;\n\n &:not(.hydrated) {\n opacity: 0;\n }\n }\n\n &__show-filters {\n margin-inline-start: 0.5em;\n text-transform: uppercase;\n display: none;\n flex-direction: column;\n align-items: center;\n\n nano-icon {\n font-size: 20px;\n }\n\n :host(.small) & {\n display: flex;\n }\n }\n\n &__filter-count {\n width: 12px;\n height: 12px;\n box-shadow: inset 0 3px 4px 0 rgb(0 0 0 / 20%);\n border: solid 1px #005c76;\n background-color: #005c76;\n color: white;\n font-size: 7px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n margin-block-end: 3px;\n }\n }\n\n &__results {\n font-size: 14px;\n padding: 1em 40px;\n color: rgb(69 85 86 / 85%);\n width: 70%;\n height: 100%;\n\n @include media-breakpoint-down('sm') {\n padding: 1em 20px;\n }\n\n :host(.small) & {\n width: 100%;\n }\n }\n\n &__filters {\n outline: none;\n padding-inline: 0 40px;\n padding-block: 1.8em 1em;\n\n @include media-breakpoint-down('sm') {\n padding-inline-end: 20px;\n }\n\n flex: 1 1 30%;\n box-sizing: border-box;\n\n :host(:not(.small)) & {\n max-width: 350px;\n min-width: 220px;\n }\n }\n}\n\n.filters {\n color: map.get($colors, darkgrey);\n background: white;\n font-size: 14px;\n\n :host(.small) & {\n position: fixed;\n width: 0;\n height: 0;\n z-index: 10;\n inset-block-start: 0;\n inset-inline-end: 0;\n transition: all 0s ease 0.5s;\n background: none;\n\n &.show {\n height: 100vh;\n width: 100vw;\n transition: all 0s ease 0s;\n\n &::after {\n opacity: 1;\n }\n }\n\n &::after {\n content: '';\n background: rgb(0 0 0 / 50%);\n position: absolute;\n inset: 0;\n z-index: -1;\n opacity: 0;\n transition: 0.1s ease opacity;\n }\n }\n\n &__close-filters {\n display: none !important;\n font-size: 1.4em;\n\n :host(.small) & {\n display: inline-block !important;\n margin-inline: auto 0;\n margin-block: 0;\n }\n }\n\n &__old-posts {\n margin-inline-start: 1rem;\n }\n\n &-wrap {\n :host(.small) & {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n background: rgb(247 246 246);\n transform: translateX(100%);\n width: 300px;\n min-width: 200px;\n max-width: 80vw;\n transition: transform 0.3s ease;\n padding: 1em;\n color: black;\n overflow: auto;\n height: 100vh;\n }\n }\n\n &.show {\n .filters-wrap {\n :host(.small) & {\n transform: translateX(0%);\n box-shadow: -3px -3px 7px rgb(0 0 0 / 10%);\n }\n }\n }\n\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n li {\n margin: 0;\n padding: 0;\n }\n\n nano-details {\n --padding: 0.8em;\n\n margin: 0.8em 0;\n\n strong[slot] {\n display: block;\n padding-inline-start: calc(20px - 0.8em);\n }\n\n nano-icon[slot='icon-end'] {\n padding-inline-start: calc(20px - 0.8em);\n padding-inline-end: calc(20px - 0.8em);\n }\n }\n\n li:last-child .filter-label {\n margin-block-end: 0;\n }\n\n .filter-label {\n display: flex;\n align-items: center;\n position: relative;\n margin: 0.5em 0;\n line-height: 1.4;\n z-index: 0;\n\n &::before {\n margin-inline: 0 1em;\n margin-block: 0;\n content: '';\n border: 1px solid map.get($colors, blue);\n background: map.get($colors, white);\n border-radius: 3px;\n height: 1em;\n width: 1em;\n min-width: 1em;\n min-height: 1em;\n display: inline-block;\n }\n\n &::after {\n @include svg-background-image(\n \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path fill='#ffffff' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/></svg>\"\n );\n\n content: '';\n height: 0.7em;\n width: 0.7em;\n position: absolute;\n inset-inline-start: 2px;\n inset-block-start: 50%;\n transform: translateY(-50%);\n z-index: 1;\n display: block;\n background-size: 100%;\n background-position: center center;\n background-repeat: no-repeat;\n }\n }\n\n .filter-cb {\n @include visually-hide;\n\n &:checked + .filter-label {\n &::before {\n background: map.get($colors, blue--darker);\n }\n }\n\n &:focus + .filter-label {\n &::before {\n box-shadow: 0 0 0 1px rgb(0 0 0 / 70%);\n }\n }\n }\n\n &-header {\n display: flex;\n align-items: center;\n border-block-end: 1px solid map.get($colors, lightblue);\n padding-block-end: 0.5rem;\n margin-block-end: 0.5rem;\n }\n\n &-reset {\n color: map.get($colors, blue);\n font-size: 12px;\n text-decoration: underline;\n margin-inline: auto 0;\n margin-block: 0;\n\n :host(.small) & {\n margin: 0;\n }\n }\n\n &-title {\n margin: 0;\n text-transform: uppercase;\n color: rgb(69 85 86 / 85%);\n font-weight: bold;\n font-size: 14px;\n\n :host(.small) & {\n display: none;\n }\n }\n}\n\n.result {\n text-decoration: none;\n display: flex;\n flex-flow: row wrap;\n padding-block-end: 14px;\n border-block-end: 1px solid map.get($colors, lightblue);\n\n * {\n word-wrap: break-word;\n word-break: break-word;\n }\n\n &__title {\n margin: 1em 0 0.5em;\n width: 70%;\n display: flex;\n\n a {\n color: lighten(map.get($colors, blue), 4%);\n font-size: 14px;\n line-height: 1.43;\n text-decoration: none;\n font-weight: 600;\n }\n\n nano-icon {\n margin-inline: 0 0.5em;\n margin-block: 0;\n min-width: 20px;\n min-height: 20px;\n opacity: 0.8;\n }\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n }\n\n &__body {\n color: map.get($colors, darkgrey);\n font-size: 13px;\n width: 70%;\n text-decoration: none;\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n }\n\n &__pdf {\n display: inline-block;\n margin-inline-start: 0.5rem;\n color: map.get($colors, palegrey);\n }\n\n &__meta {\n display: flex;\n flex-flow: row wrap;\n color: map.get($colors, darkgrey);\n font-size: 11px;\n line-height: 13px;\n width: 100%;\n align-items: center;\n\n > * {\n margin-block-start: 0.5rem;\n\n &:not(:last-child) {\n padding-inline-end: 0;\n\n &::after {\n content: '';\n height: 1rem;\n width: 1px;\n background: #90c6e7;\n display: inline-block;\n margin-inline-start: 0.7rem;\n margin-inline-end: 0.7rem;\n\n @include media-breakpoint-down('sm') {\n display: none;\n }\n }\n }\n }\n\n @include media-breakpoint-down('sm') {\n flex-flow: column;\n align-items: flex-start;\n }\n }\n\n &__tags {\n display: flex;\n flex-flow: row wrap;\n\n @include media-breakpoint-down('sm') {\n padding-inline-start: 0;\n }\n\n &-tag {\n color: map.get($colors, darkgrey);\n display: inline-block;\n font-size: 0.4375rem;\n letter-spacing: 1.4px;\n background: #fff;\n border-radius: 2px;\n text-transform: uppercase;\n padding: 0 4px 1px 5px;\n font-weight: 600;\n margin: 3px 0.25rem 0.25rem 0;\n border: 1px solid #b5aea7;\n white-space: nowrap;\n line-height: 13px;\n }\n }\n\n &__type {\n font-weight: 600;\n text-transform: capitalize;\n white-space: nowrap;\n display: flex;\n align-items: center;\n }\n\n &__date {\n display: flex;\n align-items: center;\n color: map.get($colors, darkgrey);\n }\n\n &__source {\n color: map.get($colors, darkgrey);\n padding-inline-end: 0.75rem;\n }\n\n &__authors {\n font-size: 12px;\n color: map.get($colors, darkgrey);\n margin-block-end: 0.25rem;\n text-decoration: none;\n width: 70%;\n }\n\n &__buttons {\n width: 70%;\n margin-block-end: 0.5rem;\n\n &-button {\n background-color: map.get($colors, blue);\n color: #fff;\n padding: 5px 8px 1px;\n border-radius: 4px;\n display: inline-block;\n font-size: 11px;\n text-decoration: none;\n border: none;\n }\n }\n\n &__promo {\n width: 70%;\n margin-block-end: 0.5rem;\n text-decoration: none;\n color: map.get($colors, darkgrey);\n\n &-box {\n width: 300px;\n background-color: #e3eef1;\n padding: 12px 12px 8px 4px;\n display: flex;\n flex-flow: row nowrap;\n margin-block-start: 1rem;\n }\n\n &-bigdate {\n flex: 0 1 60px;\n text-align: center;\n font-weight: 600;\n color: map.get($colors, blue);\n text-transform: uppercase;\n line-height: 1.25;\n letter-spacing: 1.5px;\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n\n span {\n color: map.get($colors, darkgrey);\n display: block;\n }\n\n & ~ div {\n padding-inline-start: 1rem;\n border-inline-start: 1px solid #c5dbe1;\n }\n }\n\n &-date {\n font-size: 12px;\n }\n\n &-venue {\n font-size: 12px;\n }\n\n nano-icon {\n color: map.get($colors, blue);\n position: relative;\n inset-block-start: 1px;\n padding-inline-end: 2px;\n }\n }\n\n &__image {\n display: block;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n border-radius: 4px;\n position: relative;\n width: 100%;\n height: 150px;\n margin-block-end: 0.5rem;\n\n @include media-breakpoint-up('sm') {\n width: 142px;\n height: 80px;\n }\n\n nano-icon {\n position: absolute;\n inset-block-start: calc(50% - 0.75rem);\n inset-inline-start: calc(50% - 0.75rem);\n font-size: 1.5rem;\n color: #0084a9;\n\n --primary-color: #fff;\n --secondary-color: #0084a9;\n --primary-opacity: 1;\n\n @include media-breakpoint-down('sm') {\n font-size: 3rem;\n inset-block-start: calc(50% - 1.5rem);\n inset-inline-start: calc(50% - 1.5rem);\n }\n }\n }\n\n &__video {\n &-body {\n width: 70%;\n text-decoration: none;\n display: flex;\n flex-flow: row wrap;\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n\n @include media-breakpoint-down('sm') {\n flex-flow: column;\n }\n\n .result__body {\n padding-inline-start: 1rem;\n display: flex;\n flex-direction: column;\n margin-block-end: 0;\n flex: 1;\n\n @include media-breakpoint-down('sm') {\n padding-inline-start: 0;\n }\n\n p {\n display: inline;\n margin: 0;\n }\n\n u,\n li,\n a {\n text-decoration: none;\n }\n\n .result__meta {\n margin-block-start: 0.5rem;\n }\n\n .result__description {\n flex: 1 0 auto;\n }\n }\n }\n }\n}\n\n.search-empty {\n padding: 3rem 0;\n text-align: center;\n border-block-start: 1px solid #e5eef1;\n\n h2 {\n color: #455556;\n font-size: 1.125rem;\n margin-block-end: 0.5rem;\n }\n\n &-icon {\n font-size: 7rem;\n\n --icon-color: #e4e6e8;\n\n margin-block-end: 2rem;\n }\n}\n\n.search__highlight {\n background: #fbffbf;\n font-style: normal;\n}\n","import {\n Component,\n h,\n Host,\n Element,\n State,\n ComponentInterface,\n Watch,\n Listen,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport type { AloliaSearchResultDetail, SearchIndex } from '../../interface';\n\nconst filterOldPosts =\n 'created > ' + Math.floor((Date.now() - 63115200000) / 1000);\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 /** Fired when the user clicks the 'back' button / closes the search panel\n * Calling `event.preventDefault()` will prevent it from being closed.\n */\n @Event() nanoSearchGoBack: EventEmitter;\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 const 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 const oldResults = this.algoliaEle.querySelector('.old-posts');\n if (oldResults) {\n oldResults.addEventListener(\n 'change',\n (e: Event & { target: HTMLInputElement }) => {\n this.toggleOldResults(e.target.checked);\n }\n );\n }\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 const resultEle = this.algoliaResultsEle;\n\n resultEle.querySelectorAll('.remove-filter').forEach((item) => {\n item.addEventListener('click', (clickEv: MouseEvent) => {\n const 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 const tags = Array.from(resultEle.querySelectorAll('.result__tags-tag'));\n tags.forEach((tag) => {\n tag.removeEventListener('click', this.tagClick);\n tag.addEventListener('click', this.tagClick);\n });\n }\n\n private tagClick = (e: MouseEvent & { target: HTMLElement }) => {\n e.preventDefault();\n let tagVal = e.target.dataset.value;\n tagVal = tagVal === 'publication' ? 'publications' : tagVal;\n tagVal = tagVal.toLowerCase();\n\n const filter: HTMLNanoAlgoliaFilterElement = this.algoliaEle.querySelector(\n 'nano-algolia-filter[filter-name=\"tags\"]'\n );\n if (filter.value.indexOf(tagVal) === -1) {\n filter.value = filter.value ? [...filter.value, tagVal] : [tagVal];\n }\n };\n\n private changeOrder(ev) {\n this.algoliaEle.replicaIndex = ev.detail.value;\n }\n\n private goback() {\n const goBackEvent = this.nanoSearchGoBack.emit();\n if (goBackEvent.defaultPrevented) return;\n\n this.removeAllFilters();\n this.algoliaEle.query = '';\n this.algoliaEle.showResults = false;\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 private toggleOldResults(show: boolean) {\n if (show)\n this.algoliaEle.filters = this.algoliaEle.filters.filter(\n (f) => !f.startsWith('created > ')\n );\n else this.algoliaEle.filters = [...this.algoliaEle.filters, filterOldPosts];\n }\n\n componentDidLoad() {\n this.algoliaEle.filters = [filterOldPosts]; // only get last 2 years\n\n if (!window['ResizeObserver']) return;\n\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 }\n\n render() {\n return (\n <Host\n class={{ small: this.currentWidth < 677 }}\n dir={\n (this.el.ownerDocument as Document).dir === 'rtl' ? 'rtl' : undefined\n }\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 id=\"main-search\"\n >\n <template slot=\"template\">\n {\n /* html */ `<div class=\"main-search sc-nano-global-search-results\">\n <nano-algolia-results id=\"main-search-results\" class=\"main-search__results sc-nano-global-search-results\" infinite-scroll>\n <script type=\"text/template\" slot=\"start-template\">\n <div class=\"sc-nano-global-search-results main-search__topbar topbar\">\n <button class=\"sc-nano-global-search-results topbar__bkbtn back-btn icon-button\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/chevron-left\" size=\"small\"></nano-icon>\n </button>\n <div>\n <em class=\"sc-nano-global-search-results topbar__query\">'{{ it.query }}' - </em> <strong>{{ it.totalHitsWithFilters }}</strong> Results\n </div>\n\n <div class=\"sc-nano-global-search-results topbar__filtering\">\n {{ @if (it.results.length) }}\n\n {{ @if (it.indexName === 'All') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"all_prod_en\">Sort by: Most relevant</nano-option>\n <nano-option value=\"all_prod_en_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"all_prod_en_date_asc\">Sort by: Oldest</nano-option>\n <nano-option value=\"all_prod_en_activity_date_desc\">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'www') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"cws_english_en\">Sort by: Most relevant</nano-option>\n <nano-option value=\"cws_english_en_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"cws_english_en_date_asc\">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Resources') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"cws_english_resources_en\">Sort by: Most relevant</nano-option>\n <nano-option value=\"cws_english_resources_en_featured_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"cws_english_resources_en_featured_asc\">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Store') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"store_prod\">Sort by: Most relevant</nano-option>\n <nano-option value=\"store_prod_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"store_prod_date_asc\">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Community') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--community indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"community_prod\">Sort by: Most relevant</nano-option>\n <nano-option value=\"community_prod_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"community_prod_date_asc\">Sort by: Oldest</nano-option>\n <nano-option value=\"community_prod_activity_date_desc\">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n {{ /if }}\n\n <button class=\"sc-nano-global-search-results topbar__show-filters filters-title\" aria-controls=\"main-search-filters\">\n {{ @if (it.appliedFilters && it.appliedFilters.length > 0) }}\n <span class=\"sc-nano-global-search-results topbar__filter-count\">\n {{ (it.appliedFilters.reduce(function(a, b) { return a + (b.values ? b.values.length : 0) }, 0)) }}\n </span>\n {{ /if }}\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/filter\"></nano-icon>\n </button>\n </div>\n </div>\n\n {{ @if (it.results.length) }}\n <div class=\"sc-nano-global-search-results main-search__applied-filters\">\n {{ @if (it.appliedFilters) }}\n {{ @each(it.appliedFilters) => filterObj }}\n {{ @each(filterObj.values) => filterVal }}\n <span class=\"sc-nano-global-search-results main-search__applied-filter\">\n {{ filterVal | public_name }}\n <button class=\"sc-nano-global-search-results icon-button remove-filter\" data-filter=\"{{ filterObj.name }}\" data-filter-val=\"{{ filterVal }}\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </span>\n {{ /each }}\n {{ /each }}\n {{ #else }}\n <span class=\"sc-nano-global-search-results main-search__applied-nofilter\">&nbsp;</span>\n {{ /if }}\n </div>\n {{ /if }}\n </script>\n\n <script type=\"text/template\" slot=\"result-template\">\n <!-- START NO CONTENT -->\n {{ @if ((!it.results || !it.results.length)) }}\n <div class=\"search-empty\">\n <nano-icon name=\"light/search\" class=\"search-empty-icon\"></nano-icon>\n <h2>No matches found...</h2>\n <p>Please try a different search query.</p>\n </div>\n {{ /if }}\n <!-- END NO CONTENT -->\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n {{ contentType = result.content_type ? result.content_type : result.type }}\n <li class=\"sc-nano-global-search-results\">\n <div class=\"sc-nano-global-search-results result\">\n <h4 class=\"sc-nano-global-search-results result__title\" data-icon-set=\"{{(iconSet = false)}}\">\n <a href=\"{{ result.url | abs_url(it, result) }}\">\n {{ result._snippetResult.title.value | safe }}\n {{ @if (contentType === 'technical_document' || contentType === 'literature' || contentType === 'white_paper' || contentType === 'protocol') }}\n <span class=\"sc-nano-global-search-results result__pdf\">PDF</span>\n {{ /if }}\n </a>\n </h4>\n {{ @if (result.authors) }}\n {{ @if (typeof result.authors === 'string') }}\n <a class=\"sc-nano-global-search-results result__authors\" href=\"{{ result.url | abs_url(it, result) }}\">Authors: {{ result.authors | trim_to(50) }}</a>\n {{ #else }}\n <a class=\"sc-nano-global-search-results result__authors\" href=\"{{ result.url | abs_url(it, result) }}\">\n {{ @each(result.authors) => author, index }}\n <!-- {{ @if(index == 0)}} -->\n Authors: {{ author | trim_to(60) }}\n <!-- {{ /if }} -->\n {{ /each }}\n </a>\n {{ /if }}\n {{ /if }}\n {{ @if (contentType === 'video' || contentType === 'lc_lightning_talk' ) }}\n {{ @if (result.name) }}\n <a class=\"sc-nano-global-search-results result__authors\" href=\"{{ result.url | abs_url(it, result) }}\">Speaker: {{ result.name | trim_to(50) }}</a>\n {{ /if }}\n <a class=\"sc-nano-global-search-results result__video-body\" href=\"{{ result.url | abs_url(it, result) }}\">\n {{ @if (result.image) }}\n <div class=\"sc-nano-global-search-results result__image\" style=\"background-image: url('{{ result.image | abs_url(it, result) }}')\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"duotone/play-circle\"></nano-icon>\n </div>\n {{ /if }}\n <div class=\"sc-nano-global-search-results result__body\">\n <div class=\"sc-nano-global-search-results result__description\">\n {{ @if (result.description) }}\n {{ result._snippetResult.description.value | safe }}\n {{ /if }}\n </div>\n </div>\n <div class=\"sc-nano-global-search-results result__meta\">\n {{ @if (result.type || result.content_type) }}\n <div class=\"sc-nano-global-search-results result__type\">\n {{ @if (contentType === 'lc_lightning_talk') }}\n Presentation\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.tags) }}\n <div class=\"sc-nano-global-search-results result__tags\">\n {{ @if (typeof result.tags === 'string') }}\n <button data-value=\"{{ result.tags | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ result.tags }}</button>\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== \"No video\" && tag !== \"Resources\" && tag !== \"Video\") }}\n <button data-value=\"{{ tag | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class=\"sc-nano-global-search-results result__source\">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n </a>\n {{ /if }}\n {{ @if (result.body) }}\n <a class=\"sc-nano-global-search-results result__body\" href=\"{{ result.url | abs_url(it, result) }}\">{{ result._snippetResult.body.value | safe }}</a>\n {{ /if }}\n {{ @if (contentType === 'product' }}\n <div class=\"sc-nano-global-search-results result__buttons\">\n <a class=\"sc-nano-global-search-results result__buttons-button\" href=\"{{ result.url | abs_url(it, result) }}\">View product</a>\n </div>\n {{ /if }}\n {{ @if (contentType === 'event') }}\n <a class=\"sc-nano-global-search-results result__promo\" href=\"{{ result.url | abs_url(it, result) }}\">\n <div class=\"sc-nano-global-search-results result__promo-box\">\n <div class=\"sc-nano-global-search-results result__promo-bigdate\">\n {{ result.start_date | date_long({year: undefined, month: 'short', day: undefined}) }}\n <span>{{ result.start_date | date_long({year: undefined, month: undefined, day: 'numeric'}) }}</span>\n </div>\n <div>\n <div class=\"sc-nano-global-search-results result__promo-date\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/calendar-alt\"></nano-icon>\n {{ @if (result.end_date) }}\n {{ @if (result.end_date !== result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', month: 'short'}) }} - {{ result.end_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ #else }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ #else }}\n {{ @if (result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ /if }}\n </div>\n <div class=\"sc-nano-global-search-results result__promo-venue\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/map-marker-alt\"></nano-icon>\n Venue\n </div>\n </div>\n </div>\n </a>\n {{ /if }}\n {{ @if (contentType !== 'lc_lightning_talk' && contentType !== 'video') }}\n <div class=\"sc-nano-global-search-results result__meta\">\n {{ @if (result.type || result.content_type) }}\n <div class=\"sc-nano-global-search-results result__type\">\n {{ @if (contentType === 'news_item') }}\n News\n {{ #elif (contentType === 'static_page' || contentType === 'bespoke') }}\n Page\n {{ #elif (contentType === 'case_study') }}\n Case study\n {{ #elif (contentType === 'lc_poster') }}\n Poster\n {{ #elif (contentType === 'nanopore_live') }}\n Live stream\n {{ #elif (contentType === 'data_release') }}\n Data release\n {{ #elif (contentType === 'research_area') }}\n Research area\n {{ #elif (contentType === 'white_paper') }}\n White paper\n {{ #elif (contentType === 'technical_document') }}\n Technical document\n {{ #elif (contentType === 'info_sheet') }}\n Info sheet\n {{ #elif (contentType === 'lc_home' || contentType === 'lc_venue') }}\n London Calling\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (contentType !== 'event') }}\n {{ @if (result.updated) }}\n <div class=\"sc-nano-global-search-results result__date\">{{ result.updated | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class=\"sc-nano-global-search-results result__date\">{{ result.created | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ /if }}\n {{ /if }}\n {{ /if }}\n {{ @if (result.tags) }}\n <div class=\"sc-nano-global-search-results result__tags\">\n {{ @if (typeof result.tags === 'string') }}\n {{ @if (result.tags !== \"Resources\" && result.tags !== \"Tools\" && result.tags !== \"Publications\" && result.tags !== \"Case studies\") }}\n <button data-value=\"{{ result.tags | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ result.tags }}</button>\n {{ /if }}\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== \"Resources\" && tag !== \"Tools\" && tag !== \"Publications\" && tag !== \"Case studies\") }}\n <button data-value=\"{{ tag | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class=\"sc-nano-global-search-results result__source\">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n {{ /if }}\n </div>\n </li>\n {{ /each }}\n {{ /if }}\n </script>\n\n <div slot=\"start-output\"></div>\n <ul slot=\"result-output\" class=\"sc-nano-global-search-results\"></ul>\n </nano-algolia-results>\n\n {{ @if(Object.keys(it.origFilters).length) }}\n <div class=\"sc-nano-global-search-results main-search__filters filters close-filters\" id=\"main-search-filters\">\n <div class=\"sc-nano-global-search-results filters-wrap\">\n {{ @if(it.totalHits) }}\n <div class=\"sc-nano-global-search-results filters-header\">\n <strong class=\"sc-nano-global-search-results filters-title\">Filters</strong>\n <button class=\"sc-nano-global-search-results filters-reset\">Reset</button>\n <button class=\"sc-nano-global-search-results filters__close-filters close-filters icon-button\" aria-controls=\"main-search-filters\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </div>\n {{ /if }}\n\n <div>\n <input class=\"sc-nano-global-search-results filter-cb old-posts filters__old-posts\" type=\"checkbox\" name=\"old-posts\" id=\"old-posts\" value=\"nice\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"old-posts\">\n <span>Include posts older than 2 years</span>\n </label>\n {{ @if(it.origFilters['type']) }}\n <nano-details class=\"sc-nano-global-search-results\" open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Type</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf1\" store-method=\"url-hash-push\" filter-name=\"type\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"type-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"type-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['channel']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Channels</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf2\" store-method=\"url-hash-push\" filter-name=\"channel\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"channel-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"channel-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['authors']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Authors</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf3\" store-method=\"url-hash-push\" filter-name=\"authors\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"authors-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"authors-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['categories_without_path']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Category</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf4\" store-method=\"url-hash-push\" filter-name=\"categories_without_path\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n {{ @if(!filter.match(/publication/)) }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"cwp-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"cwp-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /if }}\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['tags']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Tags</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf5\" store-method=\"url-hash-push\" filter-name=\"tags\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter | lowercase }}\" id=\"tags-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"tags-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n </div>\n </div>\n </div>\n {{ /if }}\n </div>`\n }\n </template>\n <div slot=\"output\"></div>\n <slot />\n </nano-algolia>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import{r as o,c as n,h as t,a as i,g as r}from"./p-d6a04b3a.js";import{g as s}from"./p-411bb8f1.js";import{d as e}from"./p-7bff5224.js";const a='.sc-nano-checkbox-group-h{box-sizing:border-box}*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}.sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:0;--control-margin-bottom:0;--control-margin-start:0;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, "currentcolor");--label-color--invalid:var(--nano-input-label-color-invalid, "currentcolor");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));display:block}.sc-nano-checkbox-group-h *.sc-nano-checkbox-group{box-sizing:inherit}[types-tag].sc-nano-checkbox-group-h,[types-segment].sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:8px;--control-margin-bottom:6px;--control-margin-start:0}[types-checkbox].sc-nano-checkbox-group-h,[types-radio].sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:10px;--control-margin-bottom:6px;--control-margin-start:0}.nanogroupcb.sc-nano-checkbox-group{border:none;margin:0;padding:0}.nanogroupcb__error.sc-nano-checkbox-group,.nanogroupcb__help.sc-nano-checkbox-group,.nanogroupcb__more.sc-nano-checkbox-group{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.nanogroupcb__legend.sc-nano-checkbox-group{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1.5;white-space:normal;display:block;width:100%}[invalid].sc-nano-checkbox-group-h:not([invalid=false]) .nanogroupcb__legend.sc-nano-checkbox-group{color:var(--label-color--invalid)}.nanogroupcb__more.sc-nano-checkbox-group{height:1em;-webkit-margin-before:calc(var(--label-padding) - var(--control-margin-bottom));margin-block-start:calc(var(--label-padding) - var(--control-margin-bottom));-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-after:var(--label-padding);margin-block-end:var(--label-padding);-webkit-margin-start:3px;margin-inline-start:3px;position:relative}.nanogroupcb__error.sc-nano-checkbox-group,.nanogroupcb__help.sc-nano-checkbox-group{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;transition:0.3s ease-out opacity}.show-error.sc-nano-checkbox-group .nanogroupcb__error.sc-nano-checkbox-group,.show-error.sc-nano-checkbox-group .nanogroupcb__help.sc-nano-checkbox-group{opacity:1}.nanogroupcb__error.sc-nano-checkbox-group{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.show-error.sc-nano-checkbox-group .nanogroupcb__error.sc-nano-checkbox-group{opacity:1}.nanogroupcb__help.sc-nano-checkbox-group{font-style:italic;opacity:1;color:var(--help-msg-color)}.show-error.sc-nano-checkbox-group .nanogroupcb__help.sc-nano-checkbox-group{opacity:0}.nanogroupcb__cbs.sc-nano-checkbox-group{margin:0;padding:0;line-height:1;display:flex;flex-wrap:wrap}.nanogroupcb__cbs.sc-nano-checkbox-group-s>*:not([type=tag]):not([type=segment]):not([type=segment-pill]),.nanogroupcb__cbs .sc-nano-checkbox-group-s>*:not([type=tag]):not([type=segment]):not([type=segment-pill]){--check-base-size:1.2em;font-size:0.85em}.nanogroupcb__cbs.sc-nano-checkbox-group-s>*,.nanogroupcb__cbs .sc-nano-checkbox-group-s>*{margin-inline:var(--control-margin-start) var(--control-margin-end);margin-block:var(--control-margin-top) var(--control-margin-bottom)}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.nanogroupcb__cbs.sc-nano-checkbox-group-s>*,.nanogroupcb__cbs .sc-nano-checkbox-group-s>*{-webkit-margin-start:var(--control-margin-start);margin-inline-start:var(--control-margin-start);-webkit-margin-end:var(--control-margin-end);margin-inline-end:var(--control-margin-end)}}';const c=class{constructor(t){o(this,t);this.nanoChange=n(this,"nanoChange",7);this.nanoValidate=n(this,"nanoValidate",7);this.grpId=`nano-checkbox-group-${h++}`;this.ignoreValueSet=false;this.handleInvalid=o=>{this._invalid=true;if(this.validateOn==="submit"){this._invalid=this.showErrorMsg=this.customValidate()}if(!!this.showInlineError)o.preventDefault();this.showInlineValidation(o)};this.showInlineValidation=o=>{if(!this.nativeCbs||!this.nativeCbs.length)return;if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.showErrorMsg=false;this._invalid=false;this.nativeCbs.forEach(((o,n)=>{if(!o.validity.valid){this.errorMessage=o.validationMessage;this.showErrorMsg=true;this._invalid=true}}));this.nanoValidate.emit({isValid:!this.invalid,errorMessage:this.errorMessage,originalEvent:o})};this.checkboxes=undefined;this.nativeCbs=undefined;this.errorMessage="";this.showErrorMsg=false;this.hasHelperSlot=false;this.validateOn="submitThenDirty";this.showInlineError=true;this.min=0;this.max=null;this.disabled=null;this.legend="";this._invalid=false;this.value=undefined}get invalid(){return this._invalid}get validityMessage(){return this.errorMessage}handleValuePropChange(){this.nanoChange.emit(this.value);if(this.ignoreValueSet)return;this.setCbValue()}async reportValidity(o){return new Promise((n=>{if(o){this.customValidate();this.showInlineValidation()}setTimeout((()=>{n({isValid:!this.invalid,errorMessage:this.errorMessage})}),50)}))}async showError(o,n){let t;if(!this.checkboxes)return;if(n)t=this.checkboxes.find((o=>o.value===n));if(!t)t=this.checkboxes[0];if(!t)return;this.errorMessage=o;await t.setError(o);if(!!this.showInlineError)this.showInlineValidation()}handleValueChange(o){if(o.target===this.host)return;this.setInteralValue()}handleCbChange(){if(this.invalid)this.showErrorMsg=this._invalid=false;this.customValidate();if(this.validateOn!=="dirty")return;this.showInlineValidation()}customValidate(){if(!this.nativeCbs||!this.nativeCbs.length||!this.checkboxes)return;const o=this.nativeCbs.filter((o=>(o===null||o===void 0?void 0:o.type)==="radio"));if(o&&o.length&&(this.showErrorMsg||this.validateOn==="dirty")){const n=o.find((o=>o.required));const t=o.filter((o=>o.checked));if(n&&t){this.checkboxes.forEach((o=>o.reportValidity(false)));return false}else if(n&&!t)return true}const n=this.nativeCbs.filter((o=>(o===null||o===void 0?void 0:o.type)==="checkbox"));if(!n||!n.length)return;const t=n.filter((o=>o.checked));const i=n.find((o=>o.required));let r=false;if(i&&!t.find((o=>o===i)))return true;this.checkboxes.forEach(((o,n)=>{const i=this.nativeCbs[n];o.setError("");i.setCustomValidity("");if(this.min&&t.length<this.min){this.errorMessage=`You must select a minimum of ${this.min} values.`;r=true}if(this.max&&t.length>this.max){this.errorMessage=`Only up to ${this.max} values are allowed.`;r=true}if(r){o.setError(this.errorMessage,this.showErrorMsg);i.setCustomValidity(this.errorMessage)}}));return r}handleComponentChange(){var o;if(!((o=this.checkboxes)===null||o===void 0?void 0:o.length))return;this.checkboxTypes=s(this.checkboxes.map((o=>"types-"+o.type)))}handleDisabledChange(){var o;if(this.disabled===null||!((o=this.checkboxes)===null||o===void 0?void 0:o.length))return;this.checkboxes.map((o=>o.disabled=this.disabled))}setInteralValue(){var o;this.ignoreValueSet=true;const n=this.nativeCbs.filter((o=>(o===null||o===void 0?void 0:o.type)==="radio"));if(n===null||n===void 0?void 0:n.length){this.value=((o=n.find((o=>o.checked)))===null||o===void 0?void 0:o.value)||null;return}this.value=this.checkboxes.flatMap((o=>o.checked?[o.value]:[]));requestAnimationFrame((()=>this.ignoreValueSet=false))}setCbValue(){this.checkboxes.forEach((o=>{if(o.value===this.value||Array.isArray(this.value)&&this.value.includes(o.value)){o.checked=true}}))}attachSlotObserver(){if(!!this.mo||!window["MutationObserver"])return;const o=this.mo=new MutationObserver((()=>this.handleSlotChange()));o.observe(this.host,{childList:true})}async handleSlotChange(){this.checkboxes=Array.from(this.host.querySelectorAll("nano-checkbox"));this.hasHelperSlot=!!this.host.querySelector('[slot="helper"]');this.nativeCbs=await Promise.all(this.checkboxes.reduce(((o,n)=>{o.push(n.getInputElement());return o}),[]));this.nativeCbs.forEach((o=>{if(o)o.addEventListener("invalid",this.handleInvalid)}))}componentWillLoad(){this.showInlineValidation=e(this.showInlineValidation,50);this.customValidate=this.customValidate.bind(this);this.handleDisabledChange();this.handleSlotChange()}connectedCallback(){this.attachSlotObserver()}disconnectedCallback(){if(this.mo)this.mo.disconnect();this.nativeCbs.forEach((o=>{if(o)o.removeEventListener("invalid",this.handleInvalid)}))}componentDidLoad(){this.handleComponentChange()}render(){const o=this.grpId+"-lbl";const n=this.showInlineError||this.hasHelperSlot?this.grpId+"-more":"";return t(i,Object.assign({},this.checkboxTypes),t("fieldset",{disabled:this.disabled,class:{nanogroupcb:true,"show-error":this.showErrorMsg}},t("legend",{class:"nanogroupcb__legend",id:o},this.legend),t("div",{class:"nanogroupcb__cbs",role:"group","aria-labelledby":o+" "+n},t("slot",null)),(this.showInlineError||this.hasHelperSlot)&&t("div",{class:"nanogroupcb__more",id:n},!!this.showInlineError?t("div",{class:"nanogroupcb__error"},this.errorMessage):"",t("div",{class:"nanogroupcb__help"},t("slot",{name:"helper"})))))}get host(){return r(this)}static get watchers(){return{value:["handleValuePropChange"],min:["handleCbChange"],max:["handleCbChange"],nativeCbs:["customValidate"],checkboxes:["handleComponentChange","handleDisabledChange"],disabled:["handleDisabledChange"]}}};let h=0;c.style=a;export{c as nano_checkbox_group};
5
- //# sourceMappingURL=p-0563e812.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkboxGroupCss","CheckboxGroup","this","grpId","grpIds","ignoreValueSet","handleInvalid","ev","_invalid","validateOn","showErrorMsg","customValidate","showInlineError","preventDefault","showInlineValidation","nativeCbs","length","forEach","cb","_i","validity","valid","errorMessage","validationMessage","nanoValidate","emit","isValid","invalid","originalEvent","validityMessage","handleValuePropChange","nanoChange","value","setCbValue","async","validateFirst","Promise","resolve","setTimeout","message","optVal","checkboxes","find","c","setError","handleValueChange","target","host","setInteralValue","handleCbChange","onlyRadios","filter","type","required","checked","rd","reportValidity","onlyCbs","i","nativeCb","setCustomValidity","min","max","handleComponentChange","_a","checkboxTypes","getClassMap","map","handleDisabledChange","disabled","radios","flatMap","requestAnimationFrame","Array","isArray","includes","attachSlotObserver","mo","window","MutationObserver","handleSlotChange","observe","childList","from","querySelectorAll","hasHelperSlot","querySelector","all","reduce","acc","push","getInputElement","addEventListener","componentWillLoad","debounce","bind","connectedCallback","disconnectedCallback","disconnect","removeEventListener","componentDidLoad","render","legendId","moreId","h","Host","Object","assign","class","nanogroupcb","id","legend","role","name"],"sources":["./src/components/checkbox/checkbox-group.scss?tag=nano-checkbox-group&encapsulation=scoped","./src/components/checkbox/checkbox-group.tsx"],"sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n\n:host {\n /**\n * @prop --control-margin-top: Margin between controls. Default depends on control type;\n * @prop --control-margin-end: Margin between controls. Default depends on control type;\n * @prop --control-margin-bottom: Margin between controls. Default depends on control type;\n * @prop --control-margin-start: Margin between controls. Default depends on control type;\n\n * @prop --invalid-msg-color: Default #{nano-color(danger, base)};\n * @prop --invalid-msg-font-size: Default #{$input-help-font-size};\n\n * @prop --help-msg-color: Font color applied to slot=\"helper\". Default #{$input-help-color};\n\n * @prop --label-color: Default #{$label-color};\n * @prop --label-color--invalid: Default #{$label-color-invalid};\n * @prop --label-font-size: Default #{$label-font-size};\n * @prop --label-padding: space between legend and control. Default #{$input-padding-bottom};\n */\n\n --control-margin-top: 0;\n --control-margin-end: 0;\n --control-margin-bottom: 0;\n --control-margin-start: 0;\n --invalid-msg-color: #{nano-color(danger, base)};\n --invalid-msg-font-size: #{$input-help-font-size};\n --help-msg-color: #{$input-help-color};\n --label-color: #{$label-color};\n --label-color--invalid: #{$label-color-invalid};\n --label-font-size: #{$label-font-size};\n --label-padding: #{$input-padding-bottom};\n\n display: block;\n\n * {\n box-sizing: inherit;\n }\n}\n\n:host([types-tag]),\n:host([types-segment]) {\n --control-margin-top: 0;\n --control-margin-end: 8px;\n --control-margin-bottom: 6px;\n --control-margin-start: 0;\n}\n\n:host([types-checkbox]),\n:host([types-radio]) {\n --control-margin-top: 0;\n --control-margin-end: 10px;\n --control-margin-bottom: 6px;\n --control-margin-start: 0;\n}\n\n.nanogroupcb {\n border: none;\n margin: 0;\n padding: 0;\n\n &__error,\n &__help,\n &__more {\n display: block;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &__legend {\n font-size: var(--label-font-size);\n padding: 0 0 var(--label-padding);\n margin: 0;\n line-height: 1.5;\n white-space: normal;\n display: block;\n width: 100%;\n\n :host([invalid]:not([invalid='false'])) & {\n color: var(--label-color--invalid);\n }\n }\n\n &__more {\n height: 1em;\n margin-block-start:\n calc(\n var(--label-padding) - var(--control-margin-bottom)\n );\n margin-inline-end: 0;\n margin-block-end: var(--label-padding);\n margin-inline-start: 3px;\n position: relative;\n }\n\n &__error,\n &__help {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__error {\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n opacity: 0;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__help {\n font-style: italic;\n opacity: 1;\n color: var(--help-msg-color);\n\n .show-error & {\n opacity: 0;\n }\n }\n\n &__cbs {\n margin: 0;\n padding: 0;\n line-height: 1;\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(*:not([type='tag']):not([type='segment']):not([type='segment-pill'])) {\n --check-base-size: 1.2em;\n\n font-size: 0.85em;\n }\n\n ::slotted(*) {\n margin-inline: var(--control-margin-start) var(--control-margin-end);\n margin-block: var(--control-margin-top) var(--control-margin-bottom);\n }\n }\n}\n\n/* autoprefixer: ignore next */\n@supports ((margin-inline-start: 0) or (-webkit-margin-start: 0)) {\n .nanogroupcb__cbs {\n &::slotted(*),\n ::slotted(*) {\n margin-inline-start: var(--control-margin-start);\n margin-inline-end: var(--control-margin-end);\n }\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n ComponentInterface,\n State,\n Listen,\n Watch,\n Host,\n Method,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { getClassMap } from '../../utils/theme';\nimport { debounce } from '../../utils/throttle';\nimport type {\n CssClassMap,\n ControlValidityEventDetail,\n ControlValidity,\n} from '../../interface';\n\n/**\n * `nano-checkbox-group` is an optional wrapper for all `nano-checkbox` controls.\n * It provides a convenient place to anchor a collective label and any validation issues.\n *\n * @slot - Used for grouping checkboxes inside the group wrapper\n * @slot helper - helper text to accompany the form field underneath.\n */\n@Component({\n tag: 'nano-checkbox-group',\n styleUrl: 'checkbox-group.scss',\n scoped: true,\n})\nexport class CheckboxGroup implements ComponentInterface {\n private mo?: MutationObserver;\n private checkboxTypes: CssClassMap;\n private grpId = `nano-checkbox-group-${grpIds++}`;\n private ignoreValueSet = false;\n\n @Element() host: HTMLNanoCheckboxGroupElement;\n\n // internal state\n\n @State() checkboxes?: HTMLNanoCheckboxElement[];\n @State() nativeCbs: HTMLInputElement[];\n @State() errorMessage: string = '';\n @State() showErrorMsg = false;\n @State() hasHelperSlot = false;\n\n // public properties\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop() showInlineError = true;\n\n /**\n * The minimum number of checkboxes required to be valid. Only relevant for checkbox type controls.\n * A validation error will be thrown if not enough controls are checked.\n */\n @Prop() min: number = 0;\n\n /**\n * The maximum number of checkboxes allowed. Only relevant for checkbox type controls.\n * Other controls will automatically be disabled upon reaching this number.\n */\n @Prop() max: number = null;\n\n /**\n * Disable all the nested form controls\n */\n @Prop({ reflect: true }) disabled: boolean | null = null;\n\n /**\n * A common label for children controls\n */\n @Prop() legend: string = '';\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n return this.errorMessage;\n }\n\n /** The current, collective checkbox value */\n @Prop({ mutable: true }) value: string[] | string;\n\n @Watch('value')\n handleValuePropChange() {\n this.nanoChange.emit(this.value);\n\n // this change is coming from a checkbox being checked\n // so don't then change the checkbox state\n // (would cause an infinite loop)\n if (this.ignoreValueSet) return;\n\n // value has changed via prop directly, so update the checkbox's state\n this.setCbValue();\n }\n\n // Public methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return new Promise((resolve) => {\n if (validateFirst) {\n this.customValidate();\n this.showInlineValidation();\n }\n setTimeout(() => {\n resolve({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n });\n }, 50);\n });\n }\n\n /**\n * Invalidate the field and show a custom error message.\n * To clear the error you will need to re-call this method with an empty string.\n * @param message - the error message to show\n * @param optVal - optionally supply an option value to target which checkbox to show invalidate against (default is the first)\n */\n @Method()\n async showError(message: string, optVal?: string) {\n let cb: HTMLNanoCheckboxElement;\n if (!this.checkboxes) return;\n if (optVal) cb = this.checkboxes.find((c) => c.value === optVal);\n if (!cb) cb = this.checkboxes[0];\n if (!cb) return;\n\n this.errorMessage = message;\n await cb.setError(message);\n if (!!this.showInlineError) this.showInlineValidation();\n }\n\n // Events\n\n /**\n * Called when a nested checkbox changes\n */\n @Event() nanoChange: EventEmitter<string | string[]>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // listeners & watchers\n\n @Listen('nanoChange')\n handleValueChange(ev: CustomEvent) {\n if (ev.target === this.host) return;\n this.setInteralValue();\n }\n\n /**\n * Notes on validation... custom validation messages should be set\n * no matter whether we show inline messages or native html5.\n * this will mean forms cannot submit when there are pending validation issues.\n */\n @Listen('nanoChange')\n @Watch('min')\n @Watch('max')\n handleCbChange() {\n if (this.invalid) this.showErrorMsg = this._invalid = false;\n this.customValidate();\n\n if (this.validateOn !== 'dirty') return;\n this.showInlineValidation();\n }\n\n @Watch('nativeCbs')\n customValidate() {\n if (!this.nativeCbs || !this.nativeCbs.length || !this.checkboxes) return;\n\n const onlyRadios = this.nativeCbs.filter((cb) => cb?.type === 'radio');\n\n if (\n onlyRadios &&\n onlyRadios.length &&\n (this.showErrorMsg || this.validateOn === 'dirty')\n ) {\n const required = onlyRadios.find((cb) => cb.required);\n const checked = onlyRadios.filter((cb) => cb.checked);\n\n if (required && checked) {\n this.checkboxes.forEach((rd) => rd.reportValidity(false));\n return false;\n } else if (required && !checked) return true;\n }\n\n // we only care about checkbox controls.\n const onlyCbs = this.nativeCbs.filter((cb) => cb?.type === 'checkbox');\n if (!onlyCbs || !onlyCbs.length) return;\n\n const checked = onlyCbs.filter((cb) => cb.checked);\n const required = onlyCbs.find((cb) => cb.required);\n let invalid = false;\n\n if (required && !checked.find((cb) => cb === required)) return true;\n\n this.checkboxes.forEach((cb, i) => {\n const nativeCb = this.nativeCbs[i];\n cb.setError('');\n nativeCb.setCustomValidity('');\n\n if (this.min && checked.length < this.min) {\n this.errorMessage = `You must select a minimum of ${this.min} values.`;\n invalid = true;\n }\n if (this.max && checked.length > this.max) {\n this.errorMessage = `Only up to ${this.max} values are allowed.`;\n invalid = true;\n }\n\n if (invalid) {\n cb.setError(this.errorMessage, this.showErrorMsg);\n // bit fugly. We're just doing this 'cos stencil\n // methods are async and we want the validity message\n // asap to keep things in sync\n nativeCb.setCustomValidity(this.errorMessage);\n }\n });\n return invalid;\n }\n\n @Watch('checkboxes')\n handleComponentChange() {\n if (!this.checkboxes?.length) return;\n\n this.checkboxTypes = getClassMap(\n this.checkboxes.map((cb) => 'types-' + cb.type)\n );\n }\n\n @Watch('disabled')\n @Watch('checkboxes')\n handleDisabledChange() {\n if (this.disabled === null || !this.checkboxes?.length) return;\n this.checkboxes.map((cb) => (cb.disabled = this.disabled));\n }\n\n // private methods\n\n private setInteralValue() {\n this.ignoreValueSet = true;\n const radios = this.nativeCbs.filter((cb) => cb?.type === 'radio');\n if (radios?.length) {\n this.value = radios.find((cb) => cb.checked)?.value || null;\n return;\n }\n this.value = this.checkboxes.flatMap((cb) =>\n cb.checked ? [cb.value] : []\n );\n requestAnimationFrame(() => (this.ignoreValueSet = false));\n }\n\n private setCbValue() {\n this.checkboxes.forEach((cb) => {\n if (\n cb.value === this.value ||\n (Array.isArray(this.value) && this.value.includes(cb.value))\n ) {\n cb.checked = true;\n }\n });\n }\n\n private attachSlotObserver() {\n if (!!this.mo || !window['MutationObserver']) return;\n const mo = (this.mo = new MutationObserver(() => this.handleSlotChange()));\n mo.observe(this.host, { childList: true });\n }\n\n private async handleSlotChange() {\n this.checkboxes = Array.from(this.host.querySelectorAll('nano-checkbox'));\n this.hasHelperSlot = !!this.host.querySelector('[slot=\"helper\"]');\n\n this.nativeCbs = await Promise.all(\n this.checkboxes.reduce((acc: Array<Promise<HTMLInputElement>>, cb) => {\n acc.push(cb.getInputElement());\n return acc;\n }, [])\n );\n\n this.nativeCbs.forEach((cb) => {\n if (cb) cb.addEventListener('invalid', this.handleInvalid);\n });\n }\n\n private handleInvalid = (ev: Event) => {\n this._invalid = true;\n\n if (this.validateOn === 'submit') {\n this._invalid = this.showErrorMsg = this.customValidate();\n }\n if (!!this.showInlineError) ev.preventDefault();\n\n this.showInlineValidation(ev);\n };\n\n private showInlineValidation = (ev?: Event) => {\n if (!this.nativeCbs || !this.nativeCbs.length) return;\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.showErrorMsg = false;\n this._invalid = false;\n\n this.nativeCbs.forEach((cb, _i) => {\n if (!cb.validity.valid) {\n this.errorMessage = cb.validationMessage;\n this.showErrorMsg = true;\n this._invalid = true;\n }\n });\n\n this.nanoValidate.emit({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n originalEvent: ev,\n });\n };\n\n // stencil hooks\n\n componentWillLoad() {\n this.showInlineValidation = debounce(this.showInlineValidation, 50);\n this.customValidate = this.customValidate.bind(this);\n this.handleDisabledChange();\n this.handleSlotChange();\n }\n\n connectedCallback() {\n this.attachSlotObserver();\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n\n this.nativeCbs.forEach((cb) => {\n if (cb) cb.removeEventListener('invalid', this.handleInvalid);\n });\n }\n\n componentDidLoad() {\n this.handleComponentChange();\n }\n\n render() {\n const legendId = this.grpId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.grpId + '-more' : '';\n\n return (\n <Host {...this.checkboxTypes}>\n <fieldset\n disabled={this.disabled}\n class={{ nanogroupcb: true, 'show-error': this.showErrorMsg }}\n >\n <legend class=\"nanogroupcb__legend\" id={legendId}>\n {this.legend}\n </legend>\n <div\n class=\"nanogroupcb__cbs\"\n role=\"group\"\n aria-labelledby={legendId + ' ' + moreId}\n >\n <slot />\n </div>\n {(this.showInlineError || this.hasHelperSlot) && (\n <div class=\"nanogroupcb__more\" id={moreId}>\n {!!this.showInlineError ? (\n <div class=\"nanogroupcb__error\">{this.errorMessage}</div>\n ) : (\n ''\n )}\n <div class=\"nanogroupcb__help\">\n <slot name=\"helper\" />\n </div>\n </div>\n )}\n </fieldset>\n </Host>\n );\n }\n}\n\nlet grpIds = 0;\n"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import{c as t}from"./p-d18c0a7a.js";import"./p-d6a04b3a.js";import"./p-ee045579.js";import"./p-7bff5224.js";import"./p-70747f20.js";const o="table.worker";const p="stencil.table.worker";const s=new URL("p-f258383d.js",import.meta.url).href;const r=new Blob(['importScripts("'+s+'")'],{type:"text/javascript"});const e=URL.createObjectURL(r);const c=t(e,o,p);URL.revokeObjectURL(e);export{c as worker,p as workerMsgId,o as workerName,s as workerPath};
5
- //# sourceMappingURL=p-06c85b64.js.map
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- export{T as nano_table}from"./p-d18c0a7a.js";import"./p-d6a04b3a.js";import"./p-ee045579.js";import"./p-7bff5224.js";import"./p-70747f20.js";
5
- //# sourceMappingURL=p-0b7c676c.entry.js.map
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import{r as i,c as o,h as n,a,g as t}from"./p-d6a04b3a.js";const e='.sc-nano-file-upload-h{box-sizing:border-box}*.sc-nano-file-upload,*.sc-nano-file-upload::before,*.sc-nano-file-upload::after{box-sizing:border-box}[hidden].sc-nano-file-upload{display:none !important}.sc-nano-file-upload-h{min-height:1rem;display:block;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, "currentcolor");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--label-color--invalid:var(--nano-input-label-color-invalid, "currentcolor");--drop-bg:#f2f7f9;--drop-text:#756f6a;--drop-height:3.5em;--drop-border-tint:var(--nano-color-primary-rgb, 0 116 149);--drop-border-width:2px;--drop-border-radius:5px;--drop-bg--invalid:var(--nano-input-background-color, white);--drop-border--invalid:var(--nano-color-danger-rgb, 239 65 53);--btn-bg:var(--nano-color-primary, #007495);--btn-text:var(--nano-color-primary-contrast, #fff);--btn-icon-size:var(--nano-btn-icon-size, 1.4em);--btn-padding-top:var(--nano-btn-padding-top, 0.5em);--btn-padding-bottom:var(--nano-btn-padding-bottom, 0.5em);--btn-padding-start:var(--nano-btn-padding-start, 1rem);--btn-padding-end:var(--nano-btn-padding-end, 1rem)}[disabled].sc-nano-file-upload-h:not([disabled=false]){opacity:0.7}[disabled].sc-nano-file-upload-h:not([disabled=false]) *.sc-nano-file-upload{pointer-events:none !important}.file-upload__label.sc-nano-file-upload{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1}[invalid].sc-nano-file-upload-h:not([invalid=false]) .file-upload__label.sc-nano-file-upload{color:var(--label-color--invalid)}.file-upload__input.sc-nano-file-upload{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}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload,.file-upload__more.sc-nano-file-upload,.file-upload__label.sc-nano-file-upload{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-upload__more.sc-nano-file-upload{height:1em;-webkit-margin-before:calc(var(--label-padding) / 2);margin-block-start:calc(var(--label-padding) / 2);-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-after:var(--label-padding);margin-block-end:var(--label-padding);-webkit-margin-start:3px;margin-inline-start:3px;position:relative}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;transition:0.3s ease-out opacity}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload,.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:1}.file-upload__error.sc-nano-file-upload{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload{opacity:1}.file-upload__help.sc-nano-file-upload{font-style:italic;opacity:1;color:var(--help-msg-color)}.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:0}.file-upload__drop.sc-nano-file-upload{position:relative;width:100%;display:inline-block}.file-upload__drop-area.sc-nano-file-upload{flex-direction:column;background-color:var(--drop-bg);color:var(--drop-text);min-height:var(--drop-height);display:flex;align-items:center;justify-content:center;font-size:0.9em;position:relative;transition:background-color 0.15s ease-in-out;padding:0.5rem}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__drop-area.sc-nano-file-upload{opacity:0.7}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:var(--drop-bg--invalid)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:#fff}.file-upload__drop-area.sc-nano-file-upload::after{content:"";position:absolute;border-radius:var(--drop-border-radius);border-width:var(--drop-border-width);border-color:rgb(var(--drop-border-tint)/50%);border-style:dashed;inset:0;transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{border-color:rgb(var(--drop-border--invalid)/100%)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{inset:5px}.file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{color:rgb(var(--drop-border-tint)/100%);text-decoration:underline;border-radius:2px;z-index:1;cursor:pointer;position:relative}.file-upload--focus.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__list.sc-nano-file-upload{list-style:none;margin:0;padding:0}.file-upload__list-wrap.sc-nano-file-upload{position:relative;inset-block-start:-4px}.file-upload__list-item.sc-nano-file-upload{width:100%;margin:0 0 2px;display:flex;align-items:center;transform:translateZ(0);animation:hideListItem 0.3s ease-in-out forwards}@keyframes hideListItem{0%{opacity:1;transform:translateY(0);transform:translateZ(0)}100%{opacity:0;transform:translateY(10px);transform:translateZ(0)}}.file-upload__list-item--active.sc-nano-file-upload{animation:showListItem 0.3s ease-in-out forwards}@keyframes showListItem{0%{opacity:0;transform:translateY(10px);transform:translateZ(0)}100%{opacity:1;transform:translateY(0);transform:translateZ(0)}}.file-upload__list.sc-nano-file-upload .list-title.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;padding:5px;-webkit-margin-end:2px;margin-inline-end:2px;display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.9em;color:var(--help-msg-color)}.file-upload__list.sc-nano-file-upload .list-button.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;margin:2px}.file-upload__list.sc-nano-file-upload .list-error.sc-nano-file-upload{--color:rgb(var(--drop-border--invalid) / 100%)}.file-upload__button.sc-nano-file-upload{padding:0;border:none;background-color:transparent;font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out;padding-inline:var(--nano-btn-padding-start, 1rem) var(--nano-btn-padding-end, 1rem);padding-block:var(--nano-btn-padding-top, 0.5rem) var(--nano-btn-padding-bottom, 0.5rem);box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5em);font-weight:400;cursor:pointer;background:rgba(0, 0, 0, 0.02);background-color:var(--btn-bg);color:var(--btn-text);--nano-btn-icon-size:var(--btn-icon-size);--nano-btn-line-height:var(--btn-icon-size);--nano-btn-padding-top:var(--btn-padding-top);--nano-btn-padding-bottom:var(--btn-padding-bottom);--nano-btn-padding-start:var(--btn-padding-start);--nano-btn-padding-end:var(--btn-padding-end);max-width:100%;font-size:0.9em}.file-upload__button.sc-nano-file-upload::-moz-focus-inner{border:0;padding:0}.file-upload__button.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:focus{text-decoration:none;color:inherit}@media print{.file-upload__button.sc-nano-file-upload{display:none}}.file-upload__button.sc-nano-file-upload:focus,.file-upload__button.button--focus.sc-nano-file-upload{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload nano-spinner.sc-nano-file-upload{--base-color-rgb:255 255 255;-webkit-margin-start:0.5em;margin-inline-start:0.5em;-webkit-margin-end:0;margin-inline-end:0;font-size:var(--nano-btn-icon-size, 1em);vertical-align:middle;-webkit-margin-before:-0.188em;margin-block-start:-0.188em;display:inline-block}.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload,.file-upload__button.button--icon-start.sc-nano-file-upload nano-spinner.sc-nano-file-upload{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5em;margin-inline-end:0.5em}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled){box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.file-upload__button.sc-nano-file-upload:active:not(.button--disabled):not(:disabled){box-shadow:none}.file-upload__button--disabled.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload:disabled{opacity:0.6}.file-upload__button--disabled.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:disabled:hover{cursor:default}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--active.sc-nano-file-upload{background-color:var(--nano-color-primary-shade, #00637f);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled).button--keyline,.file-upload__button.button--active.button--keyline.sc-nano-file-upload{background-color:var(--btn-bg);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:focus{color:var(--btn-text)}.file-upload__button.button--keyline.sc-nano-file-upload{background:transparent;border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);padding-block:calc(var(--nano-btn-padding-top, 0.5rem) - var(--nano-btn-border-width, 2px)) calc(var(--nano-btn-padding-bottom, 0.5rem) - var(--nano-btn-border-width, 2px));color:var(--btn-bg);border-color:var(--btn-bg)}.file-upload__button.button--keyline.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--keyline.sc-nano-file-upload:not(:focus):not(.button--focus),.file-upload__button.button--keyline.button--active.sc-nano-file-upload{box-shadow:none}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__button.sc-nano-file-upload{opacity:0.4}.file-upload--dragging.sc-nano-file-upload .file-upload__button.sc-nano-file-upload{--nano-btn-border-style:dashed}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{margin:0;font-size:inherit;padding:0;border:0;outline:none;background-color:transparent;display:flex;align-items:stretch;width:auto;color:var(--clear-btn-color)}.is-invalid.sc-nano-file-upload-h .file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{color:var(--clear-btn-color--invalid)}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-inline:0.4rem 0;margin-block:0}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload{display:flex;align-items:center}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload span.sc-nano-file-upload{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}';let l=0;let s=()=>new DataTransfer;try{s()}catch(i){try{s=()=>new ClipboardEvent("").clipboardData;s()}catch(i){s=null}}const r=class{constructor(a){i(this,a);this.nanoChange=o(this,"nanoChange",7);this.nanoFocus=o(this,"nanoFocus",7);this.nanoBlur=o(this,"nanoBlur",7);this.nanoValidate=o(this,"nanoValidate",7);this.fileInputId=`nano-file-upload-${l++}`;this.canChangeFileList=!!s;this.removeFiles=[];this.onClearClick=()=>{this.value=""};this.onBlur=()=>{this.hasFocus=false;this.validate();if(this.validateOn==="dirty")this.showInlineValidation();this.nanoBlur.emit()};this.onFocus=()=>{this.hasFocus=true;this.nanoFocus.emit()};this.validate=()=>{this.errorMessage="";this.inputEl.setCustomValidity("");let i;if(!this.inputEl.validity.valid){i=this.inputEl.validationMessage}else{this.fileList.forEach((o=>{i=null;if(!this.checkFileSize(o.file.size)){i="Maximum file size exceeded. Max file size is "+this.maxFileSize+"Mb"}else if(!this.checkFileType(o.file.type))i=`File type is not allowed (${this.accept})`;o.validationMessage=i;o.valid=!i}));if(this.fileList.length>this.maxFiles)i=`Maxinum number of files exceeded (${this.maxFiles})`}if(!!i)this.inputEl.setCustomValidity(i)};this.onInvalid=i=>{if(this.showInlineError)i.preventDefault();this.validate();this.showInlineValidation(i)};this.onFileChoose=i=>{const o=i.target.files;if(o&&o.length)this.addNewFiles(i.target.files)};this.onFileRemoveFileClick=(i,o)=>{if(!this.canChangeFileList)return;this.removeFiles.push(o);i.target.closest(".file-upload__list-item--active").classList.remove("file-upload__list-item--active")};this.onFileRemoveAnim=()=>{if(!this.canChangeFileList||!this.removeFiles.length)return;this.fileList=this.fileList.filter((i=>!this.removeFiles.find((o=>o===i))));try{this.removeFiles.forEach((i=>i.location?URL.revokeObjectURL(i.location):""))}catch(i){}this.removeFiles=[]};this.onInputChange=()=>{this.nanoChange.emit({value:this.value,files:this.files})};this.onDragStop=i=>{i.preventDefault();i.stopPropagation();this.isDragging=false};this.onDragStart=i=>{i.preventDefault();i.stopPropagation();this.isDragging=true};this.onDrop=i=>{this.onDragStop(i);if(i.dataTransfer.files&&i.dataTransfer.files.length)this.addNewFiles(i.dataTransfer.files)};this.FileUploadInput=(i,o)=>{const a=this.fileInputId+"-lbl";const t=this.showInlineError||this.hasHelperSlot?this.fileInputId+"-more":"";return[n("div",{class:"file-upload__"+i+"-wrap"},n("label",{class:`file-upload__`+i,htmlFor:this.fileInputId,id:a,onDrop:i=>{this.onDrop(i);this.onDragStop(i)},onDragEnd:this.onDragStop,onDragLeave:this.onDragStop,onDragEnter:this.onDragStart,onDragOver:this.onDragStart},(!!this.label||this.hasLabelSlot&&i!=="drop")&&n("div",{class:`file-upload__label ${this.hideLabel?"visually-hide":""}`},!!this.label&&!!this.label.length?this.label:"",!this.label&&this.hasLabelSlot&&i!=="drop"&&n("slot",{name:"label"})),i==="drop"&&n("div",{class:"file-upload__drop-area"},n("div",null,this.hasLabelSlot&&n("slot",{name:"label"})),n("div",null,"Drag and drop or ",n("span",null,"browse"))),i==="btn"&&n("div",{class:`file-upload__button button--keyline button--icon-start ${this.hasFocus?"button--focus":""}`},n("div",{class:`file-upload__btn-content`},n("nano-icon",{name:"regular/cloud-upload"}),n("span",null,!!this.fileList.length?this.fileList[0].file.name:this.placeholder),!!this.value&&this.clearInput&&!this.disabled&&n("button",{type:"button",class:"icon file-upload__clear-btn",tabindex:"-1",onClick:this.onClearClick},n("nano-icon",{name:"light/times"})))),n("input",{"aria-labelledby":a+" "+t+" "+o,type:"file",id:this.fileInputId,accept:this.accept,class:"file-upload__input",multiple:this.maxFiles>1,disabled:this.disabled,name:this.canChangeFileList?undefined:this.name,form:this.form,ref:i=>{if(this.canChangeFileList){this.publicInputEl=i;return}this.inputEl=i},onChange:this.onFileChoose,onFocus:this.onFocus,onReset:this.onInputChange})),n("input",{name:!this.canChangeFileList?undefined:this.name,form:this.form,ref:i=>{if(!this.canChangeFileList)return;this.inputEl=i},type:"file",id:this.fileInputId+"-hidden",tabIndex:-1,multiple:true,class:"file-upload__input",disabled:this.disabled,required:this.required,accept:this.accept,onInvalid:this.onInvalid,onChange:this.onInputChange})),this.showInlineError||this.hasHelperSlot?n("div",{class:"file-upload__more",id:t},this.showInlineError&&!!this.errorMessage.length?n("div",{class:"file-upload__error"},this.errorMessage):"",n("div",{class:"file-upload__help"},n("slot",{name:"helper"}))):""]};this.button=()=>this.FileUploadInput("btn");this.dropArea=()=>{const i=this.fileInputId+"-list";return[this.FileUploadInput("drop",i),n("output",{class:"file-upload__list-wrap",id:i},!!this.fileList&&this.fileList.length>0&&n("ul",{class:"file-upload__list list"},this.fileList.map((i=>n("li",{key:i.file.name,class:"file-upload__list-item file-upload__list-item--active list-item",onAnimationEnd:i=>this.onFileRemoveAnim()},n("span",{class:"list-title"},i.file.name),!i.valid&&n("nano-tooltip",{content:i.validationMessage,placement:"left"},n("nano-icon-button",{class:"list-button list-error",iconName:"light/exclamation-triangle",label:"File error"})),this.canChangeFileList&&n("nano-icon-button",{class:"list-button list-button--view",type:"button",iconName:"light/eye",label:"View file",target:"_blank",href:i.location}),this.canChangeFileList&&n("nano-icon-button",{onClick:o=>this.onFileRemoveFileClick(o,i),class:"list-button list-button--remove",iconName:"light/times",label:"Remove file"}))))))]};this.hasHelperSlot=undefined;this.hasLabelSlot=undefined;this.errorMessage="";this.isDragging=false;this.fileList=[];this.hasFocus=undefined;this.name=undefined;this.accept=undefined;this.capture=undefined;this.maxFileSize=1;this.maxFiles=1;this.label=undefined;this.placeholder="Choose a file...";this.hideLabel=false;this.required=false;this.disabled=false;this.clearInput=false;this.showInlineError=true;this.validateOn="submit";this.form=undefined;this._invalid=false}fileListChange(){if(this.canChangeFileList){this.publicInputEl.value="";this.inputEl.files=this.arrToFileList(this.fileList.map((i=>i.file)));setTimeout((()=>{this.nanoChange.emit({value:this.value,files:this.files})}),20)}}shouldValidate(){if(!this.inputEl)return;this.validate();requestAnimationFrame((()=>{if(this.validateOn==="dirty")this.showInlineValidation()}))}get invalid(){return this._invalid}get validityMessage(){if(!this.inputEl)return"";return this.inputEl.validationMessage}get files(){return this.inputEl?Array.from(this.inputEl.files).map((i=>{i.objectURL=URL.createObjectURL(i);return i})):[]}set files(i){this.addNewFiles(this.arrToFileList(i))}get value(){return this.inputEl?this.inputEl.value:""}set value(i){if(i===""&&this.inputEl){this.fileList=[];this.inputEl.value=""}}async reportValidity(i){if(i){this.validate();this.showInlineValidation()}return{isValid:!this.invalid,errorMessage:this.inputEl.validationMessage}}async setFocus(){if(this.inputEl)this.inputEl.focus()}getInputElement(){return Promise.resolve(this.inputEl)}async showError(i){if(this.inputEl){this.inputEl.setCustomValidity(i);this.validate();this.showInlineValidation()}}globalClickHandler(i){if(!this.hasFocus)return;if(i.composedPath().every((i=>i!==this.host)))this.onBlur()}globalKeydownHandler(i){if(!this.hasFocus||i.key!=="Tab")return;if(i.target!==this.inputEl)this.onBlur()}onReset(i){const o=this.form?document.querySelector("#"+this.form):this.host.closest("form");if(!o||i.target!==this.host.closest("form"))return;this.value=""}arrToFileList(i){const o=s();for(let n=0,a=i.length;n<a;n++)o.items.add(i[n]);return o.files}checkFileSize(i){return i/1e6<=this.maxFileSize}checkFileType(i){if(!this.accept)return true;return this.accept.match(i)&&this.accept.match(i).length>0}showInlineValidation(i){if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this._invalid=false;this.errorMessage="";if(!this.inputEl.validity.valid){this.errorMessage=this.inputEl.validationMessage;this._invalid=true}this.nanoValidate.emit({isValid:!this._invalid,errorMessage:this.inputEl.validationMessage,originalEvent:i})}slotChangeObserver(){if(this.mo)this.mo.disconnect();const i=this.mo=new MutationObserver((()=>this.processSlottedContent()));i.observe(this.host,{childList:true,subtree:true})}processSlottedContent(){this.hasLabelSlot=!!this.host.querySelectorAll('[slot="label"]');this.hasHelperSlot=!!this.host.querySelector('[slot="helper"]')}addNewFiles(i){const o=Array.from(i).map((i=>({file:i,location:URL.createObjectURL(i),valid:true,validationMessage:null})));if(this.canChangeFileList&&this.maxFiles>1){const i=o.filter((i=>!this.fileList.find((o=>o.file.name===i.file.name))));this.fileList=[...this.fileList,...i]}else this.fileList=o}disconnectedCallback(){if(this.mo)this.mo.disconnect()}componentDidLoad(){this.slotChangeObserver()}componentWillLoad(){this.processSlottedContent()}render(){return n(a,null,n("div",{class:{"file-upload":true,"file-upload--dragging":this.isDragging,"file-upload--focus":this.hasFocus,"file-upload--invalid":this._invalid}},this.maxFiles>1?n(this.dropArea,null):n(this.button,null)))}get host(){return t(this)}static get watchers(){return{fileList:["fileListChange","shouldValidate"],maxFiles:["shouldValidate"],maxFileSize:["shouldValidate"],capture:["shouldValidate"],accept:["shouldValidate"],required:["shouldValidate"],disabled:["shouldValidate"]}}};r.style=e;export{r as nano_file_upload};
5
- //# sourceMappingURL=p-0bc40dd1.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["fileUploadCss","fileInputIds","getDataTransfer","DataTransfer","_a","ClipboardEvent","clipboardData","_b","FileUpload","this","fileInputId","canChangeFileList","removeFiles","onClearClick","value","onBlur","hasFocus","validate","validateOn","showInlineValidation","nanoBlur","emit","onFocus","nanoFocus","errorMessage","inputEl","setCustomValidity","error","validity","valid","validationMessage","fileList","forEach","fileItem","checkFileSize","file","size","maxFileSize","checkFileType","type","accept","length","maxFiles","onInvalid","ev","showInlineError","preventDefault","onFileChoose","e","files","target","addNewFiles","onFileRemoveFileClick","push","closest","classList","remove","onFileRemoveAnim","filter","find","rmFile","f","location","URL","revokeObjectURL","onInputChange","nanoChange","onDragStop","stopPropagation","isDragging","onDragStart","onDrop","dataTransfer","FileUploadInput","eleType","listId","labelId","moreId","hasHelperSlot","h","class","htmlFor","id","onDragEnd","onDragLeave","onDragEnter","onDragOver","label","hasLabelSlot","hideLabel","name","placeholder","clearInput","disabled","tabindex","onClick","multiple","undefined","form","ref","input","publicInputEl","onChange","onReset","tabIndex","required","button","dropArea","map","key","onAnimationEnd","_","content","placement","iconName","href","fileListChange","arrToFileList","setTimeout","shouldValidate","requestAnimationFrame","invalid","_invalid","validityMessage","Array","from","objectURL","createObjectURL","fs","val","async","validateFirst","isValid","focus","getInputElement","Promise","resolve","message","globalClickHandler","composedPath","every","node","host","globalKeydownHandler","document","querySelector","i","len","items","add","match","nanoValidate","originalEvent","slotChangeObserver","mo","disconnect","MutationObserver","processSlottedContent","observe","childList","subtree","querySelectorAll","newFiles","findFile","disconnectedCallback","componentDidLoad","componentWillLoad","render","Host"],"sources":["./src/components/file-upload/file-upload.scss?tag=nano-file-upload&encapsulation=scoped","./src/components/file-upload/file-upload.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/button';\n\n:host {\n /**\n * @prop --invalid-msg-color: Default value #{nano-color(danger, base)};\n * @prop --invalid-msg-font-size: Default value #{$input-help-font-size};\n\n * @prop --help-msg-color: Default value #{$input-help-color};\n\n * @prop --label-color: Default value #{$label-color};\n * @prop --label-color--invalid: Default value #{$label-color-invalid};\n * @prop --label-font-size: Default value #{$label-font-size};\n * @prop --label-padding: Default value #{$input-padding-bottom};\n * @prop --label-color--invalid: Default value #{$label-color-invalid};\n\n * @prop --drop-bg: Default value #{map.get($colors, blue--faded)};\n * @prop --drop-text: Default value #{map.get($colors, dimgrey)};\n * @prop --drop-height: Default value 3.5em;\n * @prop --drop-border-tint: Default value #{nano-color(primary, base, null, true)};\n * @prop --drop-border-width: Default value 2px;\n * @prop --drop-border-radius: Default value 5px;\n * @prop --drop-bg--invalid: Default value #{$input-background-color--invalid};\n * @prop --drop-border--invalid: Default value #{nano-color(danger, base, null, true)};\n\n * @prop --btn-bg: Default value #{nano-color(primary, base)};\n * @prop --btn-text: Default value #{nano-color(primary, contrast)};\n * @prop --btn-icon-size: Default value var(--nano-btn-icon-size, 1.4em);\n * @prop --btn-padding-top: Default value var(--nano-btn-padding-top, .5em);\n * @prop --btn-padding-bottom: Default value var(--nano-btn-padding-bottom, .5em);\n * @prop --btn-padding-start: Default value var(--nano-btn-padding-start, 1em);\n * @prop --btn-padding-end: Default value var(--nano-btn-padding-end, 1em);\n */\n\n min-height: 1rem;\n display: block;\n\n --invalid-msg-color: #{nano-color(danger, base)};\n --invalid-msg-font-size: #{$input-help-font-size};\n --help-msg-color: #{$input-help-color};\n --label-color: #{$label-color};\n --label-font-size: #{$label-font-size};\n --label-padding: #{$input-padding-bottom};\n --label-color--invalid: #{$label-color-invalid};\n --drop-bg: #{map.get($colors, blue--faded)};\n --drop-text: #{darken(map.get($colors, dimgrey), 11%)};\n --drop-height: 3.5em;\n --drop-border-tint: #{nano-color(primary, base, null, true)};\n --drop-border-width: 2px;\n --drop-border-radius: 5px;\n --drop-bg--invalid: #{$input-background-color--invalid};\n --drop-border--invalid: #{nano-color(danger, base, null, true)};\n --btn-bg: #{nano-color(primary, base)};\n --btn-text: #{nano-color(primary, contrast)};\n --btn-icon-size: var(--nano-btn-icon-size, 1.4em);\n --btn-padding-top: var(--nano-btn-padding-top, 0.5em);\n --btn-padding-bottom: var(--nano-btn-padding-bottom, 0.5em);\n --btn-padding-start: var(--nano-btn-padding-start, 1rem);\n --btn-padding-end: var(--nano-btn-padding-end, 1rem);\n}\n\n:host([disabled]:not([disabled='false'])) {\n opacity: 0.7;\n\n * {\n pointer-events: none !important;\n }\n}\n\n.file-upload {\n $self: &;\n\n /* Common */\n\n &__label {\n font-size: var(--label-font-size);\n padding: 0 0 var(--label-padding);\n margin: 0;\n line-height: 1;\n\n :host([invalid]:not([invalid='false'])) & {\n color: var(--label-color--invalid);\n }\n }\n\n &__input {\n @include visually-hide();\n }\n\n &__error,\n &__help,\n &__more,\n &__label {\n display: block;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &__more {\n height: 1em;\n margin-block-start: calc(var(--label-padding) / 2);\n margin-inline-end: 0;\n margin-block-end: var(--label-padding);\n margin-inline-start: 3px;\n position: relative;\n }\n\n &__error,\n &__help {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n\n .file-upload--invalid & {\n opacity: 1;\n }\n }\n\n &__error {\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n opacity: 0;\n\n .file-upload--invalid & {\n opacity: 1;\n }\n }\n\n &__help {\n font-style: italic;\n opacity: 1;\n color: var(--help-msg-color);\n\n .file-upload--invalid & {\n opacity: 0;\n }\n }\n\n /* Drop area / Multi file upload */\n\n &__drop {\n position: relative;\n width: 100%;\n display: inline-block;\n }\n\n &__drop-area {\n flex-direction: column;\n background-color: var(--drop-bg);\n color: var(--drop-text);\n min-height: var(--drop-height);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.9em;\n position: relative;\n transition: background-color 0.15s ease-in-out;\n padding: 0.5rem;\n\n :host([disabled]:not([disabled='false'])) & {\n opacity: 0.7;\n }\n\n .file-upload--invalid & {\n background-color: var(--drop-bg--invalid);\n }\n\n .file-upload--dragging & {\n background-color: #{map.get($colors, white)};\n }\n\n &::after {\n content: '';\n position: absolute;\n border-radius: var(--drop-border-radius);\n border-width: var(--drop-border-width);\n border-color: rgb(var(--drop-border-tint) / 50%);\n border-style: dashed;\n inset: 0;\n transition:\n top 0.1s ease-in-out,\n bottom 0.1s ease-in-out,\n left 0.1s ease-in-out,\n right 0.1s ease-in-out;\n\n .file-upload--invalid & {\n border-color: rgb(var(--drop-border--invalid) / 100%);\n }\n\n .file-upload--dragging & {\n inset: 5px;\n }\n }\n\n span {\n color: rgb(var(--drop-border-tint) / 100%);\n text-decoration: underline;\n border-radius: 2px;\n z-index: 1;\n cursor: pointer;\n position: relative;\n\n .file-upload--focus & {\n box-shadow: #{$control-focus-style};\n }\n }\n }\n\n &__list {\n list-style: none;\n margin: 0;\n padding: 0;\n\n &-wrap {\n position: relative;\n inset-block-start: -4px;\n }\n\n &-item {\n width: 100%;\n margin: 0 0 2px;\n display: flex;\n align-items: center;\n transform: translateZ(0);\n animation: hideListItem 0.3s ease-in-out forwards;\n\n @keyframes hideListItem {\n 0% {\n opacity: 1;\n transform: translateY(0);\n transform: translateZ(0);\n }\n\n 100% {\n opacity: 0;\n transform: translateY(10px);\n transform: translateZ(0);\n }\n }\n\n &--active {\n animation: showListItem 0.3s ease-in-out forwards;\n\n @keyframes showListItem {\n 0% {\n opacity: 0;\n transform: translateY(10px);\n transform: translateZ(0);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n transform: translateZ(0);\n }\n }\n }\n }\n\n .list-title {\n background: var(--nano-color-blue--faded);\n border-radius: 5px;\n padding: 5px;\n margin-inline-end: 2px;\n display: block;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 0.9em;\n color: var(--help-msg-color);\n }\n\n .list-button {\n background: var(--nano-color-blue--faded);\n border-radius: 5px;\n margin: 2px;\n }\n\n .list-error {\n --color: rgb(var(--drop-border--invalid) / 100%);\n }\n }\n\n /* Button display / Single file upload */\n\n &__button {\n @include button-base;\n @include button-standard(\n var(--btn-bg),\n var(--btn-text),\n #{nano-color(primary, shade)}\n );\n\n --nano-btn-icon-size: var(--btn-icon-size);\n --nano-btn-line-height: var(--btn-icon-size);\n --nano-btn-padding-top: var(--btn-padding-top);\n --nano-btn-padding-bottom: var(--btn-padding-bottom);\n --nano-btn-padding-start: var(--btn-padding-start);\n --nano-btn-padding-end: var(--btn-padding-end);\n\n max-width: 100%;\n font-size: 0.9em;\n\n :host([disabled]:not([disabled='false'])) & {\n opacity: 0.4;\n }\n\n .file-upload--dragging & {\n --nano-btn-border-style: dashed;\n }\n #{$self}__clear-btn {\n margin: 0;\n font-size: inherit;\n padding: 0;\n border: 0;\n outline: none;\n background-color: transparent;\n display: flex;\n align-items: stretch;\n width: auto;\n color: var(--clear-btn-color);\n\n :host(.is-invalid) & {\n color: var(--clear-btn-color--invalid);\n }\n\n nano-icon {\n margin-inline: 0.4rem 0;\n margin-block: 0;\n }\n }\n #{$self}__btn-content {\n display: flex;\n align-items: center;\n\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n }\n }\n }\n}\n","import {\n Component,\n Prop,\n h,\n Host,\n Element,\n ComponentInterface,\n State,\n Event,\n EventEmitter,\n Watch,\n VNode,\n Method,\n Listen,\n} from '@stencil/core';\nimport type {\n ControlValidity,\n ControlValidityEventDetail,\n FileInputChangeEventDetail,\n FileWithUrl,\n} from '../../interface';\n\nlet fileInputIds = 0;\n\nlet getDataTransfer = () => new DataTransfer();\ntry {\n getDataTransfer();\n} catch {\n try {\n getDataTransfer = () => new ClipboardEvent('').clipboardData;\n getDataTransfer();\n } catch {\n getDataTransfer = null;\n }\n}\n\ninterface FileValidation {\n file: File;\n valid: boolean;\n validationMessage?: string;\n location?: string;\n}\n/**\n * A better UI experience for `input type=\"file\"` form controls.\n *\n * - Drag and Drop\n * - Validation options\n * - Preview and manage multiple files\n */\n@Component({\n tag: 'nano-file-upload',\n styleUrl: 'file-upload.scss',\n scoped: true,\n})\nexport class FileUpload implements ComponentInterface {\n private inputEl: HTMLInputElement;\n private publicInputEl: HTMLInputElement;\n private mo!: MutationObserver;\n private fileInputId = `nano-file-upload-${fileInputIds++}`;\n private canChangeFileList = !!getDataTransfer;\n private removeFiles: FileValidation[] = [];\n\n @State() hasHelperSlot: boolean;\n @State() hasLabelSlot: boolean;\n @State() errorMessage: string = '';\n @State() isDragging = false;\n @State() fileList: FileValidation[] = [];\n @Watch('fileList')\n fileListChange() {\n if (this.canChangeFileList) {\n this.publicInputEl.value = '';\n this.inputEl.files = this.arrToFileList(\n this.fileList.map((file) => file.file)\n );\n setTimeout(() => {\n this.nanoChange.emit({ value: this.value, files: this.files });\n }, 20);\n }\n }\n @State() hasFocus: boolean;\n\n @Element() host: HTMLNanoFileUploadElement;\n\n // public props\n\n /** Name of the form control. Submitted with the form as part of a name/value pair. */\n @Prop() name!: string;\n\n /** The accept attribute value is a string that defines the file types the file input should accept.\n * E.g. for a MS Word file: `.doc, .docx,application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document` */\n @Prop() accept?: string;\n\n /** Specifies which camera to use for capture of image or video data. `user` for the user-facing camera and/or microphone.\n * `environment` specifies the the outward-facing camera and/or microphone. If the requested facing mode isn't available,\n * the user agent may fall back to its preferred default mode. */\n @Prop() capture?: 'user' | 'environment';\n\n /** The maximum file size allowed per file (Megabytes) */\n @Prop() maxFileSize: number = 1;\n\n /** The maximum file size allowed per file (bytes). */\n @Prop() maxFiles: number = 1;\n\n /** String to place within a label element. */\n @Prop() label!: string;\n\n /** Placeholder only used within single file uploads. */\n @Prop() placeholder: string = 'Choose a file...';\n\n /** Visually hide the label - but make it accessible. */\n @Prop() hideLabel?: boolean = false;\n\n /** If `true`, the user must select a file to upload before submitting a form. */\n @Prop() required = false;\n\n /** If `true`, the user cannot interact with the select. */\n @Prop({ reflect: true }) disabled = false;\n\n /** If `true`, a clear icon will appear in the input when there is a value.\n * Clicking it clears the input. Only used within single file uploads. */\n @Prop() clearInput = false;\n\n /** Whether to show validation errors underneath input */\n @Prop({ reflect: true }) showInlineError = true;\n\n /** When should the field perform validation */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submit';\n\n /** The form element to associate with this input (its form owner). Must be the id of a form. */\n @Prop() form?: string | null;\n\n @Watch('maxFiles')\n @Watch('maxFileSize')\n @Watch('capture')\n @Watch('accept')\n @Watch('required')\n @Watch('disabled')\n @Watch('fileList')\n protected shouldValidate() {\n if (!this.inputEl) return;\n\n this.validate();\n requestAnimationFrame(() => {\n if (this.validateOn === 'dirty') this.showInlineValidation();\n });\n }\n\n @State() _invalid = false;\n /** This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n if (!this.inputEl) return '';\n return this.inputEl.validationMessage;\n }\n\n /** A File array that lists every selected file.\n * Has an added `objectURL` property returning a `DOMString`\n * containing an object URL that can be used to reference the contents of the specified source\n * This list has no more than one member unless the multiple attribute is specified */\n @Prop()\n get files(): FileWithUrl[] {\n return this.inputEl\n ? Array.from(this.inputEl.files).map((file: FileWithUrl) => {\n file.objectURL = URL.createObjectURL(file);\n return file;\n })\n : [];\n }\n set files(fs: FileWithUrl[]) {\n this.addNewFiles(this.arrToFileList(fs));\n }\n\n /** A file input's value attribute contains a DOMString that represents the path to the selected file(s).\n * If the user selected multiple files, the value represents the first file in the list of files they selected.\n * You can reset the file-upload control by setting the value to an empty string e.g. `var input.value = ''` */\n @Prop()\n get value() {\n return this.inputEl ? this.inputEl.value : '';\n }\n set value(val: string) {\n if (val === '' && this.inputEl) {\n this.fileList = [];\n this.inputEl.value = '';\n }\n }\n\n // Events\n\n /** Emitted when the value has changed. */\n @Event() nanoChange!: EventEmitter<FileInputChangeEventDetail>;\n\n /** Emited when the checkbox is focused */\n @Event() nanoFocus: EventEmitter;\n\n /** Emited when the checkbox is blurred */\n @Event() nanoBlur: EventEmitter;\n\n /** Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`. */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // Public methods\n\n /** Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }` */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n if (validateFirst) {\n this.validate();\n this.showInlineValidation();\n }\n return {\n isValid: !this.invalid,\n errorMessage: this.inputEl.validationMessage,\n };\n }\n\n /** Sets focus on the specified `nano-input`. Use this method instead of the global\n * `input.focus()`. */\n @Method()\n async setFocus() {\n if (this.inputEl) this.inputEl.focus();\n }\n\n /** @returns the native `<input>` element used under the hood */\n @Method()\n getInputElement(): Promise<HTMLInputElement | HTMLTextAreaElement> {\n return Promise.resolve(this.inputEl!);\n }\n\n /** Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.\n * @param message */\n @Method()\n async showError(message: string) {\n if (this.inputEl) {\n this.inputEl.setCustomValidity(message);\n this.validate();\n this.showInlineValidation();\n }\n }\n\n // Listeners\n\n @Listen('click', { target: 'window' })\n globalClickHandler(e: Event) {\n if (!this.hasFocus) return;\n if (e.composedPath().every((node) => node !== this.host)) this.onBlur();\n }\n\n @Listen('keydown', { target: 'window' })\n globalKeydownHandler(e: KeyboardEvent) {\n if (!this.hasFocus || e.key !== 'Tab') return;\n if (e.target !== this.inputEl) this.onBlur();\n }\n\n @Listen('reset', { target: 'body' })\n onReset(e) {\n const form = this.form\n ? document.querySelector('#' + this.form)\n : this.host.closest('form');\n if (!form || e.target !== this.host.closest('form')) return;\n\n this.value = '';\n }\n\n // Private methods\n\n private onClearClick = () => {\n this.value = '';\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n this.validate();\n if (this.validateOn === 'dirty') this.showInlineValidation();\n this.nanoBlur.emit();\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.nanoFocus.emit();\n };\n\n private arrToFileList(files: File[]): FileList {\n const fileList = getDataTransfer();\n for (let i = 0, len = files.length; i < len; i++)\n fileList.items.add(files[i]);\n return fileList.files;\n }\n\n private checkFileSize(size: number): boolean {\n return size / 1000000 <= this.maxFileSize;\n }\n\n private checkFileType(type: string): boolean {\n if (!this.accept) return true;\n return this.accept.match(type) && this.accept.match(type).length > 0;\n }\n\n private validate = () => {\n this.errorMessage = '';\n this.inputEl.setCustomValidity('');\n let error: string;\n\n if (!this.inputEl.validity.valid) {\n error = this.inputEl.validationMessage;\n } else {\n this.fileList.forEach((fileItem) => {\n error = null;\n if (!this.checkFileSize(fileItem.file.size)) {\n error =\n 'Maximum file size exceeded. Max file size is ' +\n this.maxFileSize +\n 'Mb';\n } else if (!this.checkFileType(fileItem.file.type))\n error = `File type is not allowed (${this.accept})`;\n\n fileItem.validationMessage = error;\n fileItem.valid = !error;\n });\n if (this.fileList.length > this.maxFiles)\n error = `Maxinum number of files exceeded (${this.maxFiles})`;\n }\n\n if (!!error) this.inputEl.setCustomValidity(error);\n };\n\n private showInlineValidation(ev?: Event) {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n this._invalid = false;\n this.errorMessage = '';\n\n if (!this.inputEl.validity.valid) {\n this.errorMessage = this.inputEl.validationMessage;\n this._invalid = true;\n }\n\n this.nanoValidate.emit({\n isValid: !this._invalid,\n errorMessage: this.inputEl.validationMessage,\n originalEvent: ev,\n });\n }\n\n private slotChangeObserver() {\n if (this.mo) this.mo.disconnect();\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.host, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have slot content\n this.hasLabelSlot = !!this.host.querySelectorAll('[slot=\"label\"]');\n this.hasHelperSlot = !!this.host.querySelector('[slot=\"helper\"]');\n }\n\n private addNewFiles(files: FileList) {\n const fileList: FileValidation[] = Array.from(files).map((file) => {\n return {\n file: file,\n location: URL.createObjectURL(file),\n valid: true,\n validationMessage: null,\n };\n });\n\n // if we have a list and we're in a browser that can amend files\n // append files to the list, otherwise replace\n if (this.canChangeFileList && this.maxFiles > 1) {\n const newFiles = fileList.filter(\n (findFile) =>\n !this.fileList.find((file) => file.file.name === findFile.file.name)\n );\n this.fileList = [...this.fileList, ...newFiles];\n } else this.fileList = fileList;\n }\n\n // event handlers & hooks\n\n private onInvalid = (ev: Event) => {\n if (this.showInlineError) ev.preventDefault();\n this.validate();\n this.showInlineValidation(ev);\n };\n\n private onFileChoose = (e: Event) => {\n const files = (e.target as HTMLInputElement).files;\n if (files && files.length)\n this.addNewFiles((e.target as HTMLInputElement).files);\n };\n\n private onFileRemoveFileClick = (e: Event, file: FileValidation) => {\n if (!this.canChangeFileList) return;\n this.removeFiles.push(file);\n\n (e.target as HTMLElement)\n .closest('.file-upload__list-item--active')\n .classList.remove('file-upload__list-item--active');\n };\n\n private onFileRemoveAnim = () => {\n if (!this.canChangeFileList || !this.removeFiles.length) return;\n this.fileList = this.fileList.filter(\n (fileItem) => !this.removeFiles.find((rmFile) => rmFile === fileItem)\n );\n try {\n this.removeFiles.forEach((f) =>\n f.location ? URL.revokeObjectURL(f.location) : ''\n );\n } catch (e) {}\n this.removeFiles = [];\n };\n\n private onInputChange = () => {\n this.nanoChange.emit({ value: this.value, files: this.files });\n };\n\n private onDragStop = (e: DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n this.isDragging = false;\n };\n\n private onDragStart = (e: DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n this.isDragging = true;\n };\n\n private onDrop = (e: DragEvent) => {\n this.onDragStop(e);\n if (e.dataTransfer.files && e.dataTransfer.files.length)\n this.addNewFiles(e.dataTransfer.files);\n };\n\n // Component lifecycle\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n private FileUploadInput = (\n eleType: 'drop' | 'btn',\n listId?: string\n ): VNode[] => {\n const labelId = this.fileInputId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot\n ? this.fileInputId + '-more'\n : '';\n\n return [\n <div class={'file-upload__' + eleType + '-wrap'}>\n <label\n class={`file-upload__` + eleType}\n htmlFor={this.fileInputId}\n id={labelId}\n onDrop={(e) => {\n this.onDrop(e);\n this.onDragStop(e);\n }}\n onDragEnd={this.onDragStop}\n onDragLeave={this.onDragStop}\n onDragEnter={this.onDragStart}\n onDragOver={this.onDragStart}\n >\n {(!!this.label || (this.hasLabelSlot && eleType !== 'drop')) && (\n <div\n class={`file-upload__label ${\n this.hideLabel ? 'visually-hide' : ''\n }`}\n >\n {!!this.label && !!this.label.length ? this.label : ''}\n {!this.label && this.hasLabelSlot && eleType !== 'drop' && (\n <slot name=\"label\" />\n )}\n </div>\n )}\n {eleType === 'drop' && (\n <div class=\"file-upload__drop-area\">\n <div>{this.hasLabelSlot && <slot name=\"label\" />}</div>\n <div>\n Drag and drop or&nbsp;<span>browse</span>\n </div>\n </div>\n )}\n {eleType === 'btn' && (\n <div\n class={`file-upload__button button--keyline button--icon-start ${\n this.hasFocus ? 'button--focus' : ''\n }`}\n >\n <div class={`file-upload__btn-content`}>\n <nano-icon name=\"regular/cloud-upload\" />\n <span>\n {!!this.fileList.length\n ? this.fileList[0].file.name\n : this.placeholder}\n </span>\n {!!this.value && this.clearInput && !this.disabled && (\n <button\n type=\"button\"\n class=\"icon file-upload__clear-btn\"\n tabindex=\"-1\"\n onClick={this.onClearClick}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n </button>\n )}\n </div>\n </div>\n )}\n <input\n aria-labelledby={labelId + ' ' + moreId + ' ' + listId}\n type=\"file\"\n id={this.fileInputId}\n accept={this.accept}\n class=\"file-upload__input\"\n multiple={this.maxFiles > 1}\n disabled={this.disabled}\n name={this.canChangeFileList ? undefined : this.name}\n form={this.form}\n ref={(input) => {\n if (this.canChangeFileList) {\n this.publicInputEl = input;\n return;\n }\n this.inputEl = input;\n }}\n onChange={this.onFileChoose}\n onFocus={this.onFocus}\n onReset={this.onInputChange}\n />\n </label>\n <input\n name={!this.canChangeFileList ? undefined : this.name}\n form={this.form}\n ref={(input) => {\n if (!this.canChangeFileList) return;\n this.inputEl = input;\n }}\n type=\"file\"\n id={this.fileInputId + '-hidden'}\n tabIndex={-1}\n multiple={true}\n class=\"file-upload__input\"\n disabled={this.disabled}\n required={this.required}\n accept={this.accept}\n onInvalid={this.onInvalid}\n onChange={this.onInputChange}\n />\n </div>,\n this.showInlineError || this.hasHelperSlot ? (\n <div class=\"file-upload__more\" id={moreId}>\n {this.showInlineError && !!this.errorMessage.length ? (\n <div class=\"file-upload__error\">{this.errorMessage}</div>\n ) : (\n ''\n )}\n <div class=\"file-upload__help\">\n <slot name=\"helper\" />\n </div>\n </div>\n ) : (\n ''\n ),\n ];\n };\n\n private button = (): VNode[] => {\n return this.FileUploadInput('btn');\n };\n\n private dropArea = (): VNode[] => {\n const listId = this.fileInputId + '-list';\n return [\n this.FileUploadInput('drop', listId),\n <output class=\"file-upload__list-wrap\" id={listId}>\n {!!this.fileList && this.fileList.length > 0 && (\n <ul class=\"file-upload__list list\">\n {this.fileList.map((file) => {\n return (\n <li\n key={file.file.name}\n class=\"file-upload__list-item file-upload__list-item--active list-item\"\n onAnimationEnd={(_) => this.onFileRemoveAnim()}\n >\n <span class=\"list-title\">{file.file.name}</span>\n {!file.valid && (\n <nano-tooltip\n content={file.validationMessage}\n placement=\"left\"\n >\n <nano-icon-button\n class=\"list-button list-error\"\n iconName=\"light/exclamation-triangle\"\n label=\"File error\"\n />\n </nano-tooltip>\n )}\n {this.canChangeFileList && (\n <nano-icon-button\n class=\"list-button list-button--view\"\n type=\"button\"\n iconName=\"light/eye\"\n label=\"View file\"\n target=\"_blank\"\n href={file.location}\n />\n )}\n {this.canChangeFileList && (\n <nano-icon-button\n onClick={(e) => this.onFileRemoveFileClick(e, file)}\n class=\"list-button list-button--remove\"\n iconName=\"light/times\"\n label=\"Remove file\"\n />\n )}\n </li>\n );\n })}\n </ul>\n )}\n </output>,\n ];\n };\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'file-upload': true,\n 'file-upload--dragging': this.isDragging,\n 'file-upload--focus': this.hasFocus,\n 'file-upload--invalid': this._invalid,\n }}\n >\n {this.maxFiles > 1 ? <this.dropArea /> : <this.button />}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import{r as t,c as s,B as i,d as h,h as e,a as n,g as a}from"./p-d6a04b3a.js";import{S as l,W as d}from"./p-a26bdb65.js";const r=class{constructor(i){t(this,i);this.nanoPageChanged=s(this,"nanoPageChanged",7);this.nanoTplUpdated=s(this,"nanoTplUpdated",7);this.append=false;this.shouldClear=true;this.currHitNum=0;this.showResults=false;this.tplRenderFn=undefined;this.results=null;this.indexResults=null;this.resultsPage=0;this.changeEvent=l.Init;this.facets=undefined;this.isLoading=true;this.infiniteScroll=false;this.appendPages=false}addContentIndex(){this.shouldPageClear();if(this.shouldClear||this.resultsPage===0)this.currHitNum=0;if(this.indexResults&&this.indexResults.results){this.indexResults.results.map((t=>{t._uIndex=this.currHitNum++}))}}resultsChange(){this.shouldPageClear();this.updateResultContent();this.infiniteScrollChange()}headerFooterChange(){this.updateStartEndContent()}appendChange(){this.append=this.infiniteScroll?true:this.appendPages}infiniteScrollChange(){this.append=this.infiniteScroll?true:this.appendPages;this.infiniteScroll?this.attachIO():this.detachIO()}handlePageChage(){this.infiniteScroll?this.attachIO():this.detachIO()}handleLoading(){if(!this.isLoading)this.infiniteScrollChange()}shouldPageClear(){this.shouldClear=this.changeEvent===l.Page?!this.append:true}nextPage(){this.shouldClear=!this.append;this.nanoPageChanged.emit({page:this.resultsPage+1})}attachIO(){if(!this.infiniteScrollBar||!this.infiniteScroll||this.io||!i.isBrowser||typeof window==="undefined"||!window.IntersectionObserver)return;this.io=new window.IntersectionObserver((async t=>{if(t[0].isIntersecting||t[1]&&t[1].isIntersecting){this.nextPage();this.detachIO()}}),{document,rootMargin:"100px",threshold:1});this.io.observe(this.infiniteScrollBar)}detachIO(){if(this.io){this.io.disconnect();this.io=null}}updateStartEndContent(){if(this.startTpl&&this.startOutputSlot){this.startOutputSlot.innerHTML=this.tplRenderFn(this.startTpl,this.indexResults)}if(this.endOutputSlot&&this.endTpl){this.endOutputSlot.innerHTML=this.tplRenderFn(this.endTpl,this.indexResults)}this.nanoTplUpdated.emit(this.el)}updateResultContent(){this.outputTo=this.outputSlot||this.outputEle;if(!this.resultTpl||!this.indexResults)return;if(this.shouldClear)this.outputTo.innerHTML="";if(!this.tplRenderFn)return;const t=document.createElement("div");t.innerHTML=this.tplRenderFn(this.resultTpl,this.indexResults);Array.from(t.children).forEach((t=>{this.outputTo.appendChild(t)}));this.shouldClear=true;this.nanoTplUpdated.emit(this.el)}connectedCallback(){h((()=>{this.startTplSlot=this.el.querySelector('[slot="start-template"]');this.startOutputSlot=this.el.querySelector('[slot="start-output"]');if(!!this.startTplSlot){this.startTpl=this.startTplSlot.innerHTML;this.startTpl=this.startTpl.replace(/=&gt;/gm,"=>")}this.resultTplSlot=this.el.querySelector('[slot="result-template"]');this.outputSlot=this.el.querySelector('[slot="result-output"]');if(!!this.resultTplSlot){this.resultTpl=this.resultTplSlot.innerHTML;this.resultTpl=this.resultTpl.replace(/=&gt;/gm,"=>")}this.endTplSlot=this.el.querySelector('[slot="end-template"]');this.endOutputSlot=this.el.querySelector('[slot="end-output"]');if(!!this.endTplSlot){this.endTpl=this.endTplSlot.innerHTML;this.endTpl=this.endTpl.replace(/=&gt;/gm,"=>")}if(this.indexResults){this.addContentIndex();this.updateResultContent()}}))}componentDidLoad(){this.updateStartEndContent()}disconnectedCallback(){if(this.io){this.io.disconnect();this.io=undefined}}render(){return e(n,{class:{"show-results":this.showResults}},e("div",{class:"default"},e("slot",null)),e("div",{ref:t=>this.outputEle=t},e("slot",{name:"start-output"}),e("slot",{name:"result-output"}),e("div",{ref:t=>this.infiniteScrollBar=t}),e("slot",{name:"end-output"})))}get el(){return a(this)}static get watchers(){return{results:["addContentIndex","resultsChange"],tplRenderFn:["resultsChange"],facets:["headerFooterChange"],appendPages:["appendChange"],infiniteScroll:["infiniteScrollChange"],resultsPage:["handlePageChage"],isLoading:["handleLoading"]}}};d(r,["indexResults","results","tplRenderFn","resultsPage","changeEvent","facets","isLoading"]);export{r as nano_algolia_results};
5
- //# sourceMappingURL=p-0e0f07f0.entry.js.map