@nanoporetech-digital/components 5.11.9 → 5.12.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 (451) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/{component-store-149aeffe.js → component-store-7427cb36.js} +2 -2
  3. package/dist/cjs/component-store-7427cb36.js.map +1 -0
  4. package/dist/cjs/{drag-777bd8dd.js → drag-1cdd881b.js} +9 -9
  5. package/dist/cjs/drag-1cdd881b.js.map +1 -0
  6. package/dist/cjs/{fade-dcabf3c1.js → fade-738dbd13.js} +2 -2
  7. package/dist/cjs/{fade-dcabf3c1.js.map → fade-738dbd13.js.map} +1 -1
  8. package/dist/cjs/{form-control-cae1e493.js → form-control-9a2379b4.js} +3 -3
  9. package/dist/cjs/form-control-9a2379b4.js.map +1 -0
  10. package/dist/cjs/{fullscreen-d24940a1.js → fullscreen-a994dc5b.js} +2 -2
  11. package/dist/cjs/{fullscreen-d24940a1.js.map → fullscreen-a994dc5b.js.map} +1 -1
  12. package/dist/cjs/{index-72ee0363.js → index-ece1cb9e.js} +10 -2
  13. package/dist/cjs/index-ece1cb9e.js.map +1 -0
  14. package/dist/cjs/index.cjs.js +35 -9
  15. package/dist/cjs/index.cjs.js.map +1 -1
  16. package/dist/cjs/{lazyload-f6be7590.js → lazyload-d532de2a.js} +2 -2
  17. package/dist/cjs/{lazyload-f6be7590.js.map → lazyload-d532de2a.js.map} +1 -1
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/cjs/{modal-b9b40f6d.js → modal-f9dce001.js} +2 -3
  20. package/dist/cjs/modal-f9dce001.js.map +1 -0
  21. package/dist/cjs/nano-accordion.cjs.entry.js +5 -2
  22. package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nano-alert.cjs.entry.js +3 -3
  24. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
  26. package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
  28. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nano-checkbox-group.cjs.entry.js +12 -14
  30. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nano-checkbox.cjs.entry.js +2 -2
  32. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nano-components.cjs.js +1 -1
  34. package/dist/cjs/nano-datalist_3.cjs.entry.js +16 -25
  35. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nano-date-input.cjs.entry.js +4 -4
  37. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
  39. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nano-demo.cjs.entry.js +8 -12
  41. package/dist/cjs/nano-demo.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nano-details.cjs.entry.js +1 -1
  43. package/dist/cjs/nano-dialog.cjs.entry.js +2 -2
  44. package/dist/cjs/nano-drawer.cjs.entry.js +3 -3
  45. package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nano-dropdown.cjs.entry.js +6 -7
  47. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nano-field-validator.cjs.entry.js +3 -6
  49. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nano-file-upload.cjs.entry.js +2 -2
  51. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +101 -33
  53. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nano-global-nav.cjs.entry.js +18 -24
  55. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nano-icon-button_2.cjs.entry.js +2 -4
  57. package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nano-icon.cjs.entry.js +7 -2
  59. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nano-input.cjs.entry.js +21 -7
  61. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nano-range.cjs.entry.js +2 -2
  63. package/dist/cjs/{nano-slides-2f3dcc02.js → nano-slides-d8032939.js} +23 -22
  64. package/dist/cjs/nano-slides-d8032939.js.map +1 -0
  65. package/dist/cjs/nano-slides.cjs.entry.js +1 -1
  66. package/dist/cjs/nano-sortable.cjs.entry.js +7 -9
  67. package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -1
  68. package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
  69. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  70. package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nano-tab-group.cjs.entry.js +6 -8
  72. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  73. package/dist/cjs/{nano-table-43f4377f.js → nano-table-84da62a4.js} +53 -53
  74. package/dist/cjs/nano-table-84da62a4.js.map +1 -0
  75. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  76. package/dist/cjs/{page-dots-ae2cefb4.js → page-dots-d360366a.js} +2 -2
  77. package/dist/cjs/{page-dots-ae2cefb4.js.map → page-dots-d360366a.js.map} +1 -1
  78. package/dist/cjs/{table.worker-f258383d.js → table.worker-4aad752d.js} +1 -1
  79. package/dist/cjs/{table.worker-399650a3.js → table.worker-f386d031.js} +3 -3
  80. package/dist/cjs/table.worker-f386d031.js.map +1 -0
  81. package/dist/cjs/{theme-9cbe28c5.js → theme-50275e1a.js} +7 -2
  82. package/dist/cjs/theme-50275e1a.js.map +1 -0
  83. package/dist/cjs/{transitions-cc18619c.js → transitions-20fce787.js} +7 -2
  84. package/dist/cjs/transitions-20fce787.js.map +1 -0
  85. package/dist/collection/components/accordion/accordion.js +4 -1
  86. package/dist/collection/components/accordion/accordion.js.map +1 -1
  87. package/dist/collection/components/alert/alert.helpers.js +24 -6
  88. package/dist/collection/components/alert/alert.helpers.js.map +1 -1
  89. package/dist/collection/components/alert/alert.js +1 -1
  90. package/dist/collection/components/alert/alert.js.map +1 -1
  91. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  92. package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
  93. package/dist/collection/components/algolia/algolia.js +1 -1
  94. package/dist/collection/components/algolia/algolia.js.map +1 -1
  95. package/dist/collection/components/checkbox/checkbox-group.js +11 -13
  96. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  97. package/dist/collection/components/checkbox/checkbox.js +1 -1
  98. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  99. package/dist/collection/components/datalist/datalist.js +14 -21
  100. package/dist/collection/components/datalist/datalist.js.map +1 -1
  101. package/dist/collection/components/date-input/date-input.js +3 -3
  102. package/dist/collection/components/date-input/date-input.js.map +1 -1
  103. package/dist/collection/components/date-picker/date-picker.js +1 -1
  104. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  105. package/dist/collection/components/demo/demo.js +8 -12
  106. package/dist/collection/components/demo/demo.js.map +1 -1
  107. package/dist/collection/components/dialog/dialog.helpers.js +11 -3
  108. package/dist/collection/components/dialog/dialog.helpers.js.map +1 -1
  109. package/dist/collection/components/drawer/drawer.js +1 -1
  110. package/dist/collection/components/drawer/drawer.js.map +1 -1
  111. package/dist/collection/components/dropdown/dropdown.js +6 -7
  112. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  113. package/dist/collection/components/field-validator/field-validator.js +3 -6
  114. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  115. package/dist/collection/components/file-upload/file-upload.js +2 -2
  116. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  117. package/dist/collection/components/form-control/form-control.js +2 -2
  118. package/dist/collection/components/form-control/form-control.js.map +1 -1
  119. package/dist/collection/components/global-nav/assets/ont-logo-inverse.svg +47 -0
  120. package/dist/collection/components/global-nav/global-nav-user-profile.js +1 -2
  121. package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
  122. package/dist/collection/components/global-nav/global-nav.js +4 -8
  123. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  124. package/dist/collection/components/icon/icon.js +6 -1
  125. package/dist/collection/components/icon/icon.js.map +1 -1
  126. package/dist/collection/components/input/input.js +19 -5
  127. package/dist/collection/components/input/input.js.map +1 -1
  128. package/dist/collection/components/menu/menu.js +2 -4
  129. package/dist/collection/components/menu/menu.js.map +1 -1
  130. package/dist/collection/components/select/select.css +2 -1
  131. package/dist/collection/components/select/select.js +153 -31
  132. package/dist/collection/components/select/select.js.map +1 -1
  133. package/dist/collection/components/slides/slides.js +19 -46
  134. package/dist/collection/components/slides/slides.js.map +1 -1
  135. package/dist/collection/components/sortable/sortable.js +6 -8
  136. package/dist/collection/components/sortable/sortable.js.map +1 -1
  137. package/dist/collection/components/table/table.cell.js +8 -8
  138. package/dist/collection/components/table/table.cell.js.map +1 -1
  139. package/dist/collection/components/table/table.header.js +11 -4
  140. package/dist/collection/components/table/table.header.js.map +1 -1
  141. package/dist/collection/components/table/table.js +12 -17
  142. package/dist/collection/components/table/table.js.map +1 -1
  143. package/dist/collection/components/table/table.row.js +11 -11
  144. package/dist/collection/components/table/table.row.js.map +1 -1
  145. package/dist/collection/components/table/table.store.js +2 -3
  146. package/dist/collection/components/table/table.store.js.map +1 -1
  147. package/dist/collection/components/table/table.utils.js +7 -8
  148. package/dist/collection/components/table/table.utils.js.map +1 -1
  149. package/dist/collection/components/table/table.worker.js +3 -3
  150. package/dist/collection/components/table/table.worker.js.map +1 -1
  151. package/dist/collection/components/tabs/tab-content.css +0 -1
  152. package/dist/collection/components/tabs/tab-group.js +3 -5
  153. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  154. package/dist/collection/components/tooltip/tooltip.js +2 -4
  155. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  156. package/dist/collection/utils/drag.js +8 -8
  157. package/dist/collection/utils/drag.js.map +1 -1
  158. package/dist/collection/utils/fetch.js +12 -15
  159. package/dist/collection/utils/fetch.js.map +1 -1
  160. package/dist/collection/utils/gesture/index.js +9 -1
  161. package/dist/collection/utils/gesture/index.js.map +1 -1
  162. package/dist/collection/utils/modal.js +1 -2
  163. package/dist/collection/utils/modal.js.map +1 -1
  164. package/dist/collection/utils/store/get-set.js +1 -1
  165. package/dist/collection/utils/store/get-set.js.map +1 -1
  166. package/dist/collection/utils/testing/index.js +2 -2
  167. package/dist/collection/utils/testing/index.js.map +1 -1
  168. package/dist/collection/utils/theme.js +6 -1
  169. package/dist/collection/utils/theme.js.map +1 -1
  170. package/dist/collection/utils/transitions.js +6 -1
  171. package/dist/collection/utils/transitions.js.map +1 -1
  172. package/dist/components/algolia.js +1 -1
  173. package/dist/components/algolia.js.map +1 -1
  174. package/dist/components/component-store.js +1 -1
  175. package/dist/components/component-store.js.map +1 -1
  176. package/dist/components/datalist.js +14 -21
  177. package/dist/components/datalist.js.map +1 -1
  178. package/dist/components/date-picker.js +1 -1
  179. package/dist/components/date-picker.js.map +1 -1
  180. package/dist/components/drag.js +8 -8
  181. package/dist/components/drag.js.map +1 -1
  182. package/dist/components/dropdown.js +6 -7
  183. package/dist/components/dropdown.js.map +1 -1
  184. package/dist/components/form-control.js +2 -2
  185. package/dist/components/form-control.js.map +1 -1
  186. package/dist/components/global-nav-user-profile.js +1 -2
  187. package/dist/components/global-nav-user-profile.js.map +1 -1
  188. package/dist/components/icon.js +6 -1
  189. package/dist/components/icon.js.map +1 -1
  190. package/dist/components/index.js +35 -9
  191. package/dist/components/index.js.map +1 -1
  192. package/dist/components/index3.js +9 -1
  193. package/dist/components/index3.js.map +1 -1
  194. package/dist/components/input.js +19 -5
  195. package/dist/components/input.js.map +1 -1
  196. package/dist/components/menu.js +2 -4
  197. package/dist/components/menu.js.map +1 -1
  198. package/dist/components/modal.js +1 -2
  199. package/dist/components/modal.js.map +1 -1
  200. package/dist/components/nano-accordion.js +4 -1
  201. package/dist/components/nano-accordion.js.map +1 -1
  202. package/dist/components/nano-alert.js +1 -1
  203. package/dist/components/nano-alert.js.map +1 -1
  204. package/dist/components/nano-algolia-filter.js +2 -2
  205. package/dist/components/nano-algolia-filter.js.map +1 -1
  206. package/dist/components/nano-checkbox-group.js +11 -13
  207. package/dist/components/nano-checkbox-group.js.map +1 -1
  208. package/dist/components/nano-checkbox.js +1 -1
  209. package/dist/components/nano-checkbox.js.map +1 -1
  210. package/dist/components/nano-date-input.js +3 -3
  211. package/dist/components/nano-date-input.js.map +1 -1
  212. package/dist/components/nano-demo.js +8 -12
  213. package/dist/components/nano-demo.js.map +1 -1
  214. package/dist/components/nano-drawer.js +1 -1
  215. package/dist/components/nano-drawer.js.map +1 -1
  216. package/dist/components/nano-field-validator.js +3 -6
  217. package/dist/components/nano-field-validator.js.map +1 -1
  218. package/dist/components/nano-file-upload.js +2 -2
  219. package/dist/components/nano-file-upload.js.map +1 -1
  220. package/dist/components/nano-global-nav.js +16 -22
  221. package/dist/components/nano-global-nav.js.map +1 -1
  222. package/dist/components/nano-slides.js +19 -19
  223. package/dist/components/nano-slides.js.map +1 -1
  224. package/dist/components/nano-sortable.js +6 -8
  225. package/dist/components/nano-sortable.js.map +1 -1
  226. package/dist/components/nano-tab-content.js +1 -1
  227. package/dist/components/nano-tab-content.js.map +1 -1
  228. package/dist/components/nano-tab-group.js +3 -5
  229. package/dist/components/nano-tab-group.js.map +1 -1
  230. package/dist/components/select.js +100 -29
  231. package/dist/components/select.js.map +1 -1
  232. package/dist/components/table.js +51 -51
  233. package/dist/components/table.js.map +1 -1
  234. package/dist/components/table.worker.js +1 -1
  235. package/dist/components/theme.js +6 -1
  236. package/dist/components/theme.js.map +1 -1
  237. package/dist/components/tooltip.js +2 -4
  238. package/dist/components/tooltip.js.map +1 -1
  239. package/dist/components/transitions.js +6 -1
  240. package/dist/components/transitions.js.map +1 -1
  241. package/dist/esm/{component-store-f7eb0a56.js → component-store-486d9d7a.js} +2 -2
  242. package/dist/esm/component-store-486d9d7a.js.map +1 -0
  243. package/dist/esm/{drag-1723a4cc.js → drag-d948d158.js} +9 -9
  244. package/dist/esm/drag-d948d158.js.map +1 -0
  245. package/dist/esm/{fade-1aa7a6db.js → fade-00c7c18e.js} +2 -2
  246. package/dist/esm/{fade-1aa7a6db.js.map → fade-00c7c18e.js.map} +1 -1
  247. package/dist/esm/{form-control-8c2750f9.js → form-control-0bfcc7ea.js} +3 -3
  248. package/dist/esm/form-control-0bfcc7ea.js.map +1 -0
  249. package/dist/esm/{fullscreen-86fa276a.js → fullscreen-09677a62.js} +2 -2
  250. package/dist/esm/{fullscreen-86fa276a.js.map → fullscreen-09677a62.js.map} +1 -1
  251. package/dist/esm/{index-f626f476.js → index-dc076ea6.js} +10 -2
  252. package/dist/esm/index-dc076ea6.js.map +1 -0
  253. package/dist/esm/index.js +35 -9
  254. package/dist/esm/index.js.map +1 -1
  255. package/dist/esm/{lazyload-994232a6.js → lazyload-43fd583a.js} +2 -2
  256. package/dist/esm/{lazyload-994232a6.js.map → lazyload-43fd583a.js.map} +1 -1
  257. package/dist/esm/loader.js +1 -1
  258. package/dist/esm/{modal-bd9638c0.js → modal-88c117cd.js} +2 -3
  259. package/dist/esm/modal-88c117cd.js.map +1 -0
  260. package/dist/esm/nano-accordion.entry.js +5 -2
  261. package/dist/esm/nano-accordion.entry.js.map +1 -1
  262. package/dist/esm/nano-alert.entry.js +3 -3
  263. package/dist/esm/nano-alert.entry.js.map +1 -1
  264. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  265. package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
  266. package/dist/esm/nano-algolia.entry.js +2 -2
  267. package/dist/esm/nano-algolia.entry.js.map +1 -1
  268. package/dist/esm/nano-checkbox-group.entry.js +12 -14
  269. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  270. package/dist/esm/nano-checkbox.entry.js +2 -2
  271. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  272. package/dist/esm/nano-components.js +1 -1
  273. package/dist/esm/nano-datalist_3.entry.js +16 -25
  274. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  275. package/dist/esm/nano-date-input.entry.js +4 -4
  276. package/dist/esm/nano-date-input.entry.js.map +1 -1
  277. package/dist/esm/nano-date-picker.entry.js +2 -2
  278. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  279. package/dist/esm/nano-demo.entry.js +8 -12
  280. package/dist/esm/nano-demo.entry.js.map +1 -1
  281. package/dist/esm/nano-details.entry.js +1 -1
  282. package/dist/esm/nano-dialog.entry.js +2 -2
  283. package/dist/esm/nano-drawer.entry.js +3 -3
  284. package/dist/esm/nano-drawer.entry.js.map +1 -1
  285. package/dist/esm/nano-dropdown.entry.js +6 -7
  286. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  287. package/dist/esm/nano-field-validator.entry.js +3 -6
  288. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  289. package/dist/esm/nano-file-upload.entry.js +2 -2
  290. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  291. package/dist/esm/nano-global-nav-user-profile_3.entry.js +101 -33
  292. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  293. package/dist/esm/nano-global-nav.entry.js +18 -24
  294. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  295. package/dist/esm/nano-icon-button_2.entry.js +2 -4
  296. package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
  297. package/dist/esm/nano-icon.entry.js +7 -2
  298. package/dist/esm/nano-icon.entry.js.map +1 -1
  299. package/dist/esm/nano-input.entry.js +21 -7
  300. package/dist/esm/nano-input.entry.js.map +1 -1
  301. package/dist/esm/nano-range.entry.js +2 -2
  302. package/dist/esm/{nano-slides-9908c44d.js → nano-slides-4dab533a.js} +24 -23
  303. package/dist/esm/nano-slides-4dab533a.js.map +1 -0
  304. package/dist/esm/nano-slides.entry.js +1 -1
  305. package/dist/esm/nano-sortable.entry.js +7 -9
  306. package/dist/esm/nano-sortable.entry.js.map +1 -1
  307. package/dist/esm/nano-split-pane.entry.js +1 -1
  308. package/dist/esm/nano-tab-content.entry.js +1 -1
  309. package/dist/esm/nano-tab-content.entry.js.map +1 -1
  310. package/dist/esm/nano-tab-group.entry.js +6 -8
  311. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  312. package/dist/esm/{nano-table-85d83eb2.js → nano-table-7c8eb23e.js} +53 -53
  313. package/dist/esm/nano-table-7c8eb23e.js.map +1 -0
  314. package/dist/esm/nano-table.entry.js +1 -1
  315. package/dist/esm/{page-dots-467ace2e.js → page-dots-a055f884.js} +2 -2
  316. package/dist/esm/{page-dots-467ace2e.js.map → page-dots-a055f884.js.map} +1 -1
  317. package/dist/{nano-components/table.worker-f258383d.js → esm/table.worker-4aad752d.js} +1 -1
  318. package/dist/esm/{table.worker-c5463b23.js → table.worker-bdb6a68c.js} +3 -3
  319. package/dist/esm/table.worker-bdb6a68c.js.map +1 -0
  320. package/dist/esm/{theme-82feb8cf.js → theme-931bd452.js} +7 -2
  321. package/dist/esm/theme-931bd452.js.map +1 -0
  322. package/dist/esm/{transitions-fb09eb32.js → transitions-bd15e312.js} +7 -2
  323. package/dist/esm/transitions-bd15e312.js.map +1 -0
  324. package/dist/nano-assets/hash.txt +1 -1
  325. package/dist/nano-assets/ont-logo-inverse.svg +47 -0
  326. package/dist/nano-components/assets/ont-logo-inverse.svg +47 -0
  327. package/dist/nano-components/component-store-486d9d7a.js +5 -0
  328. package/dist/nano-components/component-store-486d9d7a.js.map +1 -0
  329. package/dist/nano-components/drag-d948d158.js +5 -0
  330. package/dist/nano-components/{drag-1723a4cc.js.map → drag-d948d158.js.map} +1 -1
  331. package/dist/nano-components/{fade-1aa7a6db.js → fade-00c7c18e.js} +2 -2
  332. package/dist/nano-components/form-control-0bfcc7ea.js +5 -0
  333. package/dist/nano-components/form-control-0bfcc7ea.js.map +1 -0
  334. package/dist/nano-components/{fullscreen-86fa276a.js → fullscreen-09677a62.js} +2 -2
  335. package/dist/nano-components/{index-f626f476.js → index-dc076ea6.js} +2 -2
  336. package/dist/nano-components/index-dc076ea6.js.map +1 -0
  337. package/dist/nano-components/index.esm.js +1 -1
  338. package/dist/nano-components/index.esm.js.map +1 -1
  339. package/dist/nano-components/{lazyload-994232a6.js → lazyload-43fd583a.js} +2 -2
  340. package/dist/nano-components/{modal-bd9638c0.js → modal-88c117cd.js} +2 -2
  341. package/dist/nano-components/modal-88c117cd.js.map +1 -0
  342. package/dist/nano-components/nano-accordion.entry.js +1 -1
  343. package/dist/nano-components/nano-accordion.entry.js.map +1 -1
  344. package/dist/nano-components/nano-alert.entry.js +1 -1
  345. package/dist/nano-components/nano-alert.entry.js.map +1 -1
  346. package/dist/nano-components/nano-algolia-filter.entry.js +1 -1
  347. package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -1
  348. package/dist/nano-components/nano-algolia.entry.js +1 -1
  349. package/dist/nano-components/nano-algolia.entry.js.map +1 -1
  350. package/dist/nano-components/nano-checkbox-group.entry.js +1 -1
  351. package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -1
  352. package/dist/nano-components/nano-checkbox.entry.js +1 -1
  353. package/dist/nano-components/nano-checkbox.entry.js.map +1 -1
  354. package/dist/nano-components/nano-components.css +1 -1
  355. package/dist/nano-components/nano-components.esm.js +1 -1
  356. package/dist/nano-components/nano-components.esm.js.map +1 -1
  357. package/dist/nano-components/nano-datalist_3.entry.js +1 -1
  358. package/dist/nano-components/nano-datalist_3.entry.js.map +1 -1
  359. package/dist/nano-components/nano-date-input.entry.js +1 -1
  360. package/dist/nano-components/nano-date-input.entry.js.map +1 -1
  361. package/dist/nano-components/nano-date-picker.entry.js +1 -1
  362. package/dist/nano-components/nano-date-picker.entry.js.map +1 -1
  363. package/dist/nano-components/nano-demo.entry.js +1 -1
  364. package/dist/nano-components/nano-demo.entry.js.map +1 -1
  365. package/dist/nano-components/nano-details.entry.js +1 -1
  366. package/dist/nano-components/nano-dialog.entry.js +1 -1
  367. package/dist/nano-components/nano-drawer.entry.js +1 -1
  368. package/dist/nano-components/nano-drawer.entry.js.map +1 -1
  369. package/dist/nano-components/nano-dropdown.entry.js +1 -1
  370. package/dist/nano-components/nano-dropdown.entry.js.map +1 -1
  371. package/dist/nano-components/nano-field-validator.entry.js +1 -1
  372. package/dist/nano-components/nano-field-validator.entry.js.map +1 -1
  373. package/dist/nano-components/nano-file-upload.entry.js +1 -1
  374. package/dist/nano-components/nano-file-upload.entry.js.map +1 -1
  375. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
  376. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
  377. package/dist/nano-components/nano-global-nav.entry.js +1 -1
  378. package/dist/nano-components/nano-global-nav.entry.js.map +1 -1
  379. package/dist/nano-components/nano-icon-button_2.entry.js +1 -1
  380. package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -1
  381. package/dist/nano-components/nano-icon.entry.js +1 -1
  382. package/dist/nano-components/nano-icon.entry.js.map +1 -1
  383. package/dist/nano-components/nano-input.entry.js +1 -1
  384. package/dist/nano-components/nano-input.entry.js.map +1 -1
  385. package/dist/nano-components/nano-range.entry.js +1 -1
  386. package/dist/nano-components/nano-slides-4dab533a.js +20 -0
  387. package/dist/nano-components/nano-slides-4dab533a.js.map +1 -0
  388. package/dist/nano-components/nano-slides.entry.js +1 -1
  389. package/dist/nano-components/nano-sortable.entry.js +1 -1
  390. package/dist/nano-components/nano-sortable.entry.js.map +1 -1
  391. package/dist/nano-components/nano-split-pane.entry.js +1 -1
  392. package/dist/nano-components/nano-tab-content.entry.js +1 -1
  393. package/dist/nano-components/nano-tab-content.entry.js.map +1 -1
  394. package/dist/nano-components/nano-tab-group.entry.js +1 -1
  395. package/dist/nano-components/nano-tab-group.entry.js.map +1 -1
  396. package/dist/nano-components/nano-table-7c8eb23e.js +5 -0
  397. package/dist/nano-components/nano-table-7c8eb23e.js.map +1 -0
  398. package/dist/nano-components/nano-table.entry.js +1 -1
  399. package/dist/nano-components/{page-dots-467ace2e.js → page-dots-a055f884.js} +2 -2
  400. package/dist/{esm/table.worker-f258383d.js → nano-components/table.worker-4aad752d.js} +1 -1
  401. package/dist/nano-components/{table.worker-c5463b23.js → table.worker-bdb6a68c.js} +2 -2
  402. package/dist/nano-components/theme-931bd452.js +5 -0
  403. package/dist/nano-components/{theme-82feb8cf.js.map → theme-931bd452.js.map} +1 -1
  404. package/dist/nano-components/transitions-bd15e312.js +5 -0
  405. package/dist/nano-components/transitions-bd15e312.js.map +1 -0
  406. package/dist/types/components/select/select.d.ts +18 -4
  407. package/dist/types/components/slides/slides.d.ts +0 -7
  408. package/dist/types/components.d.ts +22 -5
  409. package/docs-json.json +62 -22
  410. package/docs-vscode.json +5 -1
  411. package/hydrate/index.js +321 -243
  412. package/package.json +2 -2
  413. package/dist/cjs/component-store-149aeffe.js.map +0 -1
  414. package/dist/cjs/drag-777bd8dd.js.map +0 -1
  415. package/dist/cjs/form-control-cae1e493.js.map +0 -1
  416. package/dist/cjs/index-72ee0363.js.map +0 -1
  417. package/dist/cjs/modal-b9b40f6d.js.map +0 -1
  418. package/dist/cjs/nano-slides-2f3dcc02.js.map +0 -1
  419. package/dist/cjs/nano-table-43f4377f.js.map +0 -1
  420. package/dist/cjs/table.worker-399650a3.js.map +0 -1
  421. package/dist/cjs/theme-9cbe28c5.js.map +0 -1
  422. package/dist/cjs/transitions-cc18619c.js.map +0 -1
  423. package/dist/esm/component-store-f7eb0a56.js.map +0 -1
  424. package/dist/esm/drag-1723a4cc.js.map +0 -1
  425. package/dist/esm/form-control-8c2750f9.js.map +0 -1
  426. package/dist/esm/index-f626f476.js.map +0 -1
  427. package/dist/esm/modal-bd9638c0.js.map +0 -1
  428. package/dist/esm/nano-slides-9908c44d.js.map +0 -1
  429. package/dist/esm/nano-table-85d83eb2.js.map +0 -1
  430. package/dist/esm/table.worker-c5463b23.js.map +0 -1
  431. package/dist/esm/theme-82feb8cf.js.map +0 -1
  432. package/dist/esm/transitions-fb09eb32.js.map +0 -1
  433. package/dist/nano-components/component-store-f7eb0a56.js +0 -5
  434. package/dist/nano-components/component-store-f7eb0a56.js.map +0 -1
  435. package/dist/nano-components/drag-1723a4cc.js +0 -5
  436. package/dist/nano-components/form-control-8c2750f9.js +0 -5
  437. package/dist/nano-components/form-control-8c2750f9.js.map +0 -1
  438. package/dist/nano-components/index-f626f476.js.map +0 -1
  439. package/dist/nano-components/modal-bd9638c0.js.map +0 -1
  440. package/dist/nano-components/nano-slides-9908c44d.js +0 -20
  441. package/dist/nano-components/nano-slides-9908c44d.js.map +0 -1
  442. package/dist/nano-components/nano-table-85d83eb2.js +0 -5
  443. package/dist/nano-components/nano-table-85d83eb2.js.map +0 -1
  444. package/dist/nano-components/theme-82feb8cf.js +0 -5
  445. package/dist/nano-components/transitions-fb09eb32.js +0 -5
  446. package/dist/nano-components/transitions-fb09eb32.js.map +0 -1
  447. /package/dist/nano-components/{fade-1aa7a6db.js.map → fade-00c7c18e.js.map} +0 -0
  448. /package/dist/nano-components/{fullscreen-86fa276a.js.map → fullscreen-09677a62.js.map} +0 -0
  449. /package/dist/nano-components/{lazyload-994232a6.js.map → lazyload-43fd583a.js.map} +0 -0
  450. /package/dist/nano-components/{page-dots-467ace2e.js.map → page-dots-a055f884.js.map} +0 -0
  451. /package/dist/nano-components/{table.worker-c5463b23.js.map → table.worker-bdb6a68c.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{F as t,u as i}from"./nano-slides-9908c44d.js";import"./index-9695db0a.js";t.createMethods.push("_createLazyload");const s=t.prototype;s._createLazyload=function(){this.on("select",this.lazyLoad)};s.lazyLoad=function(){const t=this.options.lazyLoad;if(!t){return}const i=typeof t=="number"?t:0;const s=this.getAdjacentCellElements(i);let o=[];s.forEach((function(t){const i=a(t);o=o.concat(i)}));o.forEach((function(t){new c(t,this)}),this)};function a(t){if(t.nodeName=="IMG"){const i=t.getAttribute("data-flickity-lazyload");const s=t.getAttribute("data-flickity-lazyload-src");const a=t.getAttribute("data-flickity-lazyload-srcset");if(i||s||a){return[t]}}const s="img[data-flickity-lazyload], "+"img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]";const a=t.querySelectorAll(s);return i.makeArray(a)}function c(t,i){this.img=t;this.flickity=i;this.load()}c.prototype.handleEvent=i.handleEvent;c.prototype.load=function(){this.img.addEventListener("load",this);this.img.addEventListener("error",this);const t=this.img.getAttribute("data-flickity-lazyload")||this.img.getAttribute("data-flickity-lazyload-src");const i=this.img.getAttribute("data-flickity-lazyload-srcset");this.img.src=t;if(i){this.img.setAttribute("srcset",i)}this.img.removeAttribute("data-flickity-lazyload");this.img.removeAttribute("data-flickity-lazyload-src");this.img.removeAttribute("data-flickity-lazyload-srcset")};c.prototype.onload=function(t){this.complete(t,"flickity-lazyloaded")};c.prototype.onerror=function(t){this.complete(t,"flickity-lazyerror")};c.prototype.complete=function(t,i){this.img.removeEventListener("load",this);this.img.removeEventListener("error",this);const s=this.flickity.getParentCell(this.img);const a=s&&s.element;this.flickity.cellSizeChange(a);this.img.classList.add(i);this.flickity.dispatchEvent("lazyLoad",t,a)};t.LazyLoader=c;
5
- //# sourceMappingURL=lazyload-994232a6.js.map
4
+ import{F as t,u as i}from"./nano-slides-4dab533a.js";import"./index-9695db0a.js";t.createMethods.push("_createLazyload");const s=t.prototype;s._createLazyload=function(){this.on("select",this.lazyLoad)};s.lazyLoad=function(){const t=this.options.lazyLoad;if(!t){return}const i=typeof t=="number"?t:0;const s=this.getAdjacentCellElements(i);let o=[];s.forEach((function(t){const i=a(t);o=o.concat(i)}));o.forEach((function(t){new c(t,this)}),this)};function a(t){if(t.nodeName=="IMG"){const i=t.getAttribute("data-flickity-lazyload");const s=t.getAttribute("data-flickity-lazyload-src");const a=t.getAttribute("data-flickity-lazyload-srcset");if(i||s||a){return[t]}}const s="img[data-flickity-lazyload], "+"img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]";const a=t.querySelectorAll(s);return i.makeArray(a)}function c(t,i){this.img=t;this.flickity=i;this.load()}c.prototype.handleEvent=i.handleEvent;c.prototype.load=function(){this.img.addEventListener("load",this);this.img.addEventListener("error",this);const t=this.img.getAttribute("data-flickity-lazyload")||this.img.getAttribute("data-flickity-lazyload-src");const i=this.img.getAttribute("data-flickity-lazyload-srcset");this.img.src=t;if(i){this.img.setAttribute("srcset",i)}this.img.removeAttribute("data-flickity-lazyload");this.img.removeAttribute("data-flickity-lazyload-src");this.img.removeAttribute("data-flickity-lazyload-srcset")};c.prototype.onload=function(t){this.complete(t,"flickity-lazyloaded")};c.prototype.onerror=function(t){this.complete(t,"flickity-lazyerror")};c.prototype.complete=function(t,i){this.img.removeEventListener("load",this);this.img.removeEventListener("error",this);const s=this.flickity.getParentCell(this.img);const a=s&&s.element;this.flickity.cellSizeChange(a);this.img.classList.add(i);this.flickity.dispatchEvent("lazyLoad",t,a)};t.LazyLoader=c;
5
+ //# sourceMappingURL=lazyload-43fd583a.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{g as t}from"./tabbable-26a66a22.js";let s=[];class i{constructor(t){this.tabDirection="forward";this.element=t;this.handleFocusIn=this.handleFocusIn.bind(this);this.handleKeyDown=this.handleKeyDown.bind(this)}activate(){s.push(this.element);document.addEventListener("focusin",this.handleFocusIn);document.addEventListener("keydown",this.handleKeyDown)}deactivate(){s=s.filter((t=>t!==this.element));document.removeEventListener("focusin",this.handleFocusIn);document.removeEventListener("keydown",this.handleKeyDown)}isActive(){return s[s.length-1]===this.element}handleFocusIn(s){var i;const o=s.composedPath();if(this.isActive()&&!o.includes(this.element)){const s=t(this.element);const o=this.tabDirection==="backward"?s.length-1:0;(i=s[o])===null||i===void 0?void 0:i.focus({preventScroll:true})}}handleKeyDown(t){if(t.key==="Tab"&&t.shiftKey){this.tabDirection="backward";setTimeout((()=>this.tabDirection="forward"))}}}export{i as M};
5
- //# sourceMappingURL=modal-bd9638c0.js.map
4
+ import{g as t}from"./tabbable-26a66a22.js";let s=[];class i{constructor(t){this.tabDirection="forward";this.element=t;this.handleFocusIn=this.handleFocusIn.bind(this);this.handleKeyDown=this.handleKeyDown.bind(this)}activate(){s.push(this.element);document.addEventListener("focusin",this.handleFocusIn);document.addEventListener("keydown",this.handleKeyDown)}deactivate(){s=s.filter((t=>t!==this.element));document.removeEventListener("focusin",this.handleFocusIn);document.removeEventListener("keydown",this.handleKeyDown)}isActive(){return s[s.length-1]===this.element}handleFocusIn(s){const i=s.composedPath();if(this.isActive()&&!i.includes(this.element)){const s=t(this.element);const i=this.tabDirection==="backward"?s.length-1:0;s[i]?.focus({preventScroll:true})}}handleKeyDown(t){if(t.key==="Tab"&&t.shiftKey){this.tabDirection="backward";setTimeout((()=>this.tabDirection="forward"))}}}export{i as M};
5
+ //# sourceMappingURL=modal-88c117cd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["activeModals","Modal","constructor","element","this","tabDirection","handleFocusIn","bind","handleKeyDown","activate","push","document","addEventListener","deactivate","filter","modal","removeEventListener","isActive","length","event","path","composedPath","includes","tabbableElements","getTabbableElements","index","focus","preventScroll","key","shiftKey","setTimeout"],"sources":["./src/utils/modal.ts"],"sourcesContent":["import { getTabbableElements } from './tabbable';\n\nlet activeModals: HTMLElement[] = [];\n\nexport default class Modal {\n element: HTMLElement;\n tabDirection: 'forward' | 'backward' = 'forward';\n\n constructor(element: HTMLElement) {\n this.element = element;\n this.handleFocusIn = this.handleFocusIn.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n activate() {\n activeModals.push(this.element);\n document.addEventListener('focusin', this.handleFocusIn);\n document.addEventListener('keydown', this.handleKeyDown);\n }\n\n deactivate() {\n activeModals = activeModals.filter((modal) => modal !== this.element);\n document.removeEventListener('focusin', this.handleFocusIn);\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n isActive() {\n // The \"active\" modal is always the most recent one shown\n return activeModals[activeModals.length - 1] === this.element;\n }\n\n handleFocusIn(event: Event) {\n const path = event.composedPath();\n\n // Trap focus so it doesn't go out of the modal's boundary\n if (this.isActive() && !path.includes(this.element)) {\n const tabbableElements = getTabbableElements(this.element);\n const index =\n this.tabDirection === 'backward' ? tabbableElements.length - 1 : 0;\n tabbableElements[index]?.focus({ preventScroll: true });\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n // Quick hack to determine tab direction\n if (event.key === 'Tab' && event.shiftKey) {\n this.tabDirection = 'backward';\n setTimeout(() => (this.tabDirection = 'forward'));\n }\n }\n}\n"],"mappings":";;;2CAEA,IAAIA,EAA8B,G,MAEbC,EAInBC,YAAYC,GAFZC,KAAAC,aAAuC,UAGrCD,KAAKD,QAAUA,EACfC,KAAKE,cAAgBF,KAAKE,cAAcC,KAAKH,MAC7CA,KAAKI,cAAgBJ,KAAKI,cAAcD,KAAKH,K,CAG/CK,WACET,EAAaU,KAAKN,KAAKD,SACvBQ,SAASC,iBAAiB,UAAWR,KAAKE,eAC1CK,SAASC,iBAAiB,UAAWR,KAAKI,c,CAG5CK,aACEb,EAAeA,EAAac,QAAQC,GAAUA,IAAUX,KAAKD,UAC7DQ,SAASK,oBAAoB,UAAWZ,KAAKE,eAC7CK,SAASK,oBAAoB,UAAWZ,KAAKI,c,CAG/CS,WAEE,OAAOjB,EAAaA,EAAakB,OAAS,KAAOd,KAAKD,O,CAGxDG,cAAca,GACZ,MAAMC,EAAOD,EAAME,eAGnB,GAAIjB,KAAKa,aAAeG,EAAKE,SAASlB,KAAKD,SAAU,CACnD,MAAMoB,EAAmBC,EAAoBpB,KAAKD,SAClD,MAAMsB,EACJrB,KAAKC,eAAiB,WAAakB,EAAiBL,OAAS,EAAI,EACnEK,EAAiBE,IAAQC,MAAM,CAAEC,cAAe,M,EAIpDnB,cAAcW,GAEZ,GAAIA,EAAMS,MAAQ,OAAST,EAAMU,SAAU,CACzCzB,KAAKC,aAAe,WACpByB,YAAW,IAAO1B,KAAKC,aAAe,W"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as s,c as o,h as t,a as e,g as n}from"./index-9695db0a.js";import{g as i}from"./dom-8599fac1.js";import{c as r}from"./theme-82feb8cf.js";const a=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block}";const l=class{constructor(t){s(this,t);this.nanoToggle=o(this,"nanoToggle",7);this.itemOpened=undefined;this.color=undefined}onToggleHandler(s){s.stopPropagation();const o=i(this.el,"nano-details")||this.el.querySelectorAll("nano-details");o.forEach(((o,t)=>{if(o!==s.target)o.open=false;else this.itemOpened=t}));this.nanoToggle.emit()}onClosedHandler(s){s.stopPropagation();this.itemOpened=null;this.nanoToggle.emit()}render(){return t(e,{class:Object.assign(Object.assign({},r(this.color)),{[`nano-color-${this.itemOpened}`]:typeof this.itemOpened==="number"})},t("slot",null))}get el(){return n(this)}};l.style=a;export{l as nano_accordion};
4
+ import{r as s,c as o,h as t,a as n,g as e}from"./index-9695db0a.js";import{g as i}from"./dom-8599fac1.js";import{c as r}from"./theme-931bd452.js";const a=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block}";const d=class{constructor(t){s(this,t);this.nanoToggle=o(this,"nanoToggle",7);this.itemOpened=undefined;this.color=undefined}onToggleHandler(s){s.stopPropagation();const o=i(this.el,"nano-details")||this.el.querySelectorAll("nano-details");o.forEach(((o,t)=>{if(o!==s.target)o.open=false;else this.itemOpened=t}));this.nanoToggle.emit()}onClosedHandler(s){s.stopPropagation();this.itemOpened=null;this.nanoToggle.emit()}render(){return t(n,{class:{...r(this.color),[`nano-color-${this.itemOpened}`]:typeof this.itemOpened==="number"}},t("slot",null))}get el(){return e(this)}};d.style=a;export{d as nano_accordion};
5
5
  //# sourceMappingURL=nano-accordion.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["accordionCss","Accordion","onToggleHandler","event","stopPropagation","items","getDirectChildren","this","el","querySelectorAll","forEach","item","i","target","open","itemOpened","nanoToggle","emit","onClosedHandler","render","h","Host","class","Object","assign","createColorClasses","color"],"sources":["./src/components/accordion/accordion.scss?tag=nano-accordion&encapsulation=shadow","./src/components/accordion/accordion.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import {\n Component,\n h,\n Listen,\n Element,\n Host,\n Prop,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\n\nimport { getDirectChildren } from '../../utils/dom';\nimport { createColorClasses } from '../../utils/theme';\nimport type { Color } from '../../interface';\n\n/**\n * Simple accordion - only one item open at a time - must be used with [details](story/components-accordion--details) elements.\n */\n@Component({\n tag: 'nano-accordion',\n styleUrl: 'accordion.scss',\n shadow: true,\n})\nexport class Accordion {\n @State() itemOpened?: number;\n\n @Element() el: HTMLNanoAccordionElement;\n\n /**\n * Fires when accordion elements toggle\n */\n @Event() nanoToggle: EventEmitter;\n\n /**\n * Color to use from the color palette.\n */\n @Prop() color?: Color;\n\n @Listen('nanoOpened')\n onToggleHandler(event: CustomEvent) {\n event.stopPropagation();\n\n const items =\n getDirectChildren(this.el, 'nano-details') ||\n this.el.querySelectorAll('nano-details');\n items.forEach((item: HTMLNanoDetailsElement, i) => {\n if (item !== event.target) item.open = false;\n else this.itemOpened = i;\n });\n this.nanoToggle.emit();\n }\n\n @Listen('nanoClosed')\n onClosedHandler(event: CustomEvent) {\n event.stopPropagation();\n this.itemOpened = null;\n this.nanoToggle.emit();\n }\n\n render() {\n return (\n <Host\n class={{\n ...createColorClasses(this.color),\n [`nano-color-${this.itemOpened}`]:\n typeof this.itemOpened === 'number',\n }}\n >\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":";;;kJAAA,MAAMA,EAAe,+H,MCwBRC,EAAS,M,+GAgBpBC,gBAAgBC,GACdA,EAAMC,kBAEN,MAAMC,EACJC,EAAkBC,KAAKC,GAAI,iBAC3BD,KAAKC,GAAGC,iBAAiB,gBAC3BJ,EAAMK,SAAQ,CAACC,EAA8BC,KAC3C,GAAID,IAASR,EAAMU,OAAQF,EAAKG,KAAO,WAClCP,KAAKQ,WAAaH,CAAC,IAE1BL,KAAKS,WAAWC,M,CAIlBC,gBAAgBf,GACdA,EAAMC,kBACNG,KAAKQ,WAAa,KAClBR,KAAKS,WAAWC,M,CAGlBE,SACE,OACEC,EAACC,EAAI,CACHC,MAAKC,OAAAC,OAAAD,OAAAC,OAAA,GACAC,EAAmBlB,KAAKmB,QAAM,CACjC,CAAC,cAAcnB,KAAKQ,qBACXR,KAAKQ,aAAe,YAG/BK,EAAA,a"}
1
+ {"version":3,"names":["accordionCss","Accordion","onToggleHandler","event","stopPropagation","items","getDirectChildren","this","el","querySelectorAll","forEach","item","i","target","open","itemOpened","nanoToggle","emit","onClosedHandler","render","h","Host","class","createColorClasses","color"],"sources":["./src/components/accordion/accordion.scss?tag=nano-accordion&encapsulation=shadow","./src/components/accordion/accordion.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import {\n Component,\n h,\n Listen,\n Element,\n Host,\n Prop,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\n\nimport { getDirectChildren } from '../../utils/dom';\nimport { createColorClasses } from '../../utils/theme';\nimport type { Color } from '../../interface';\n\n/**\n * Simple accordion - only one item open at a time - must be used with [details](story/components-accordion--details) elements.\n */\n@Component({\n tag: 'nano-accordion',\n styleUrl: 'accordion.scss',\n shadow: true,\n})\nexport class Accordion {\n @State() itemOpened?: number;\n\n @Element() el: HTMLNanoAccordionElement;\n\n /**\n * Fires when accordion elements toggle\n */\n @Event() nanoToggle: EventEmitter;\n\n /**\n * Color to use from the color palette.\n */\n @Prop() color?: Color;\n\n @Listen('nanoOpened')\n onToggleHandler(event: CustomEvent) {\n event.stopPropagation();\n\n const items =\n getDirectChildren(this.el, 'nano-details') ||\n this.el.querySelectorAll('nano-details');\n items.forEach((item: HTMLNanoDetailsElement, i) => {\n if (item !== event.target) item.open = false;\n else this.itemOpened = i;\n });\n this.nanoToggle.emit();\n }\n\n @Listen('nanoClosed')\n onClosedHandler(event: CustomEvent) {\n event.stopPropagation();\n this.itemOpened = null;\n this.nanoToggle.emit();\n }\n\n render() {\n return (\n <Host\n class={{\n ...createColorClasses(this.color),\n [`nano-color-${this.itemOpened}`]:\n typeof this.itemOpened === 'number',\n }}\n >\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":";;;kJAAA,MAAMA,EAAe,+H,MCwBRC,EAAS,M,+GAgBpBC,gBAAgBC,GACdA,EAAMC,kBAEN,MAAMC,EACJC,EAAkBC,KAAKC,GAAI,iBAC3BD,KAAKC,GAAGC,iBAAiB,gBAC3BJ,EAAMK,SAAQ,CAACC,EAA8BC,KAC3C,GAAID,IAASR,EAAMU,OAAQF,EAAKG,KAAO,WAClCP,KAAKQ,WAAaH,CAAC,IAE1BL,KAAKS,WAAWC,M,CAIlBC,gBAAgBf,GACdA,EAAMC,kBACNG,KAAKQ,WAAa,KAClBR,KAAKS,WAAWC,M,CAGlBE,SACE,OACEC,EAACC,EAAI,CACHC,MAAO,IACFC,EAAmBhB,KAAKiB,OAC3B,CAAC,cAAcjB,KAAKQ,qBACXR,KAAKQ,aAAe,WAG/BK,EAAA,a"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as t,c as e,h as i,a,g as s}from"./index-9695db0a.js";import{M as n}from"./modal-bd9638c0.js";import{l as o,u as r}from"./scroll-ac332213.js";import{c as l}from"./theme-82feb8cf.js";import"./tabbable-26a66a22.js";import"./dom-8599fac1.js";const h=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--border-color:var(--nano-layer-border-color, rgba(0, 0, 0, 0.1));--border-width:var(--nano-layer-border-width, 1px);--background:var(--nano-layer-bg, #fff);--tint-color:var(--nano-color-base, var(--nano-color-primary, #007495));--icon-size:2rem;--scrim-color:var(--nano-layer-overlay-dark, rgb(74 74 74 / 50%));--close-button-color:#b5aea7;display:block}:host(.nano-color){--tint-color:var(--nano-color-base, var(--nano-color-primary, #007495))}.alert{position:relative;background-color:var(--background);border:solid var(--border-width) var(--border-color);border-block-start-width:4px;border-block-start-color:var(--tint-color);border-radius:var(--border-radius);opacity:0;transform:scale(0.9);transition:var(--nano-transition-medium, 0.5s) opacity ease, var(--nano-transition-fast, 0.3s) transform ease}.alert:focus{outline:none}.alert:not(.alert--showing){position:absolute;inline-size:1px;block-size:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;pointer-events:none;visibility:hidden}.alert--open{opacity:1;transform:none}.alert--toasty,.alert--modal{box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));margin:var(--nano-spacing-medium, 16px)}.alert--modal.alert--nodismiss{animation:cannotClose 0.25s ease-in-out 1}@keyframes cannotClose{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}.alert__content{display:flex;align-items:stretch}.alert__modal-wrap{position:fixed;display:flex;align-items:center;justify-content:center;inset:0;z-index:var(--nano-layer-index-alert, 800)}.alert__message{flex:1 1 auto;padding:var(--nano-spacing-medium, 16px);overflow:hidden;line-height:1.6}.alert__close{--color:var(--close-button-color);flex:0 0 auto;display:flex;align-items:center;font-size:1.1em;padding-inline:0 var(--nano-spacing-medium, 16px);padding-block:0}.alert__footer{padding:0 var(--nano-spacing-small, 8px) 0;display:flex;flex-direction:row;justify-content:space-around;align-items:center}.alert__footer ::slotted(*){flex:1;margin:0 var(--nano-spacing-small, 8px) var(--nano-spacing-medium, 16px) !important}.alert__overlay{position:fixed;inset:0;background-color:var(--scrim-color);opacity:0;transition:var(--nano-transition-fast, 0.3s) opacity;z-index:var(--nano-layer-index-alert, 800);-webkit-backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));pointer-events:all}.alert__overlay--open{opacity:1}.alert__icon{flex:0 0 auto;display:flex;align-items:center;font-size:var(--icon-size)}.alert__icon ::slotted(*){color:var(--tint-color);margin-inline-start:var(--nano-spacing-medium, 16px)}";let c;let d;let f;let u;if(globalThis["document"]){c=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--tr"});d=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--tl"});f=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--bl"});u=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--br"})}const m=class{constructor(a){t(this,a);this.nanoShow=e(this,"nanoShow",7);this.nanoAfterShow=e(this,"nanoAfterShow",7);this.nanoHide=e(this,"nanoHide",7);this.nanoAfterHide=e(this,"nanoAfterHide",7);this.addedTransEnd=false;this.goingToHide=false;this.goingToShow=false;this.handleMouseMove=()=>{this.restartAutoHide()};this.handleCloseClick=()=>{this.hide()};this.handleTransitionEnd=t=>{if(t.propertyName==="opacity"&&(t.target===this.panel||t.target===this.overlay)){this.host.hidden=!this.open;this.isShowing=this.open;this.open?this.nanoAfterShow.emit():this.nanoAfterHide.emit()}};this.handleButtonClick=t=>{if(t.defaultPrevented)return;if(t.target.tagName&&t.target.tagName.toLowerCase()==="button")this.hide()};this.restartAutoHide=()=>{clearTimeout(this.autoHideTimeout);if(this.open&&this.duration<Infinity){this.autoHideTimeout=setTimeout((()=>this.hide()),this.duration)}};this.Panel=()=>i("div",{ref:t=>this.panel=t,part:"panel",class:{alert:true,"alert--open":this.open,"alert--toasty":this.isToast,"alert--modal":!!this.isModal,"alert--showing":this.isShowing,"alert--nodismiss":this.noDismiss},role:!!this.isModal?"alertdialog":"alert","aria-live":"assertive","aria-atomic":"true","aria-hidden":this.open?"false":"true","aria-modal":!!this.isModal?"true":undefined,"aria-label":this.label?this.label:undefined,onMouseMove:this.handleMouseMove,tabIndex:!!this.isModal?0:undefined},i("div",{class:"alert__content"},i("div",{part:"icon",class:"alert__icon"},i("slot",{name:"icon"})),i("div",{part:"message",class:"alert__message"},i("slot",null)),this.closable&&i("div",{class:"alert__close"},i("nano-icon-button",{class:"alert__close",iconName:"light/times",label:"close menu",onClick:this.handleCloseClick}))),i("div",{class:"alert__footer"},i("slot",{name:"footer"})));this.isModal=false;this.isToast=false;this.isShowing=false;this.label=undefined;this.noDismiss=false;this.open=false;this.closable=false;this.color=undefined;this.duration=Infinity;this.hoist=false}handleOpenChange(){this.open?this.show():this.hide()}handleDurationChange(){this.restartAutoHide()}handleHoistChange(){if(!this.hoist||document.body.children[0]===this.host)return;document.body.prepend(this.host)}async show(){if(this.goingToShow){return}const t=this.nanoShow.emit();if(t.defaultPrevented){this.open=false;return false}this.host.hidden=false;this.goingToShow=true;this.open=true;requestAnimationFrame((()=>{this.isShowing=true;this.goingToShow=false}));if(this.duration<Infinity){clearTimeout(this.autoHideTimeout);this.autoHideTimeout=setTimeout((()=>this.hide()),this.duration)}}async hide(){if(this.goingToHide){return}const t=this.nanoHide.emit();if(t.defaultPrevented){this.open=true;return false}this.goingToHide=true;this.open=false;requestAnimationFrame((()=>this.goingToHide=false));clearTimeout(this.autoHideTimeout)}async toast(t="tr"){this.isToast=true;return new Promise((e=>{let i;switch(t){case"tl":i=d;break;case"bl":i=f;break;case"br":i=u;break;default:i=c;break}if(!i.parentElement){document.body.appendChild(i)}i.appendChild(this.host);this.connectedCallback();this.show();const a=()=>{this.host.remove();this.isToast=false;e();if(!i.querySelector("nano-alert")){i.remove()}};this.host.addEventListener("nanoAfterHide",a,{once:true});this.host.addEventListener("nano-after-hide",a,{once:true})}))}async alert(t){this.isModal=true;this.label=t;return new Promise((t=>{if(!document.body.contains(this.host)){document.body.appendChild(this.host)}this.modal.activate();o(this.host);this.originalTrigger=document.activeElement;requestAnimationFrame((()=>{this.show()}));const e=()=>requestAnimationFrame((()=>this.panel.focus({preventScroll:true})));const i=()=>{this.modal.deactivate();this.host.remove();this.label=undefined;this.isModal=false;t();if(this.originalTrigger&&typeof this.originalTrigger.focus==="function"){setTimeout((()=>this.originalTrigger.focus()))}};this.host.addEventListener("nanoAfterShow",e,{once:true});this.host.addEventListener("nano-after-show",e,{once:true});this.host.addEventListener("nanoAfterHide",i,{once:true});this.host.addEventListener("nano-after-hide",i,{once:true})}))}connectedCallback(){this.modal=new n(this.host);this.handleHoistChange();this.host.addEventListener("click",this.handleButtonClick);if(this.panel){this.addedTransEnd=true;this.panel.addEventListener("transitionend",this.handleTransitionEnd)}}disconnectedCallback(){r(this.host);this.host.removeEventListener("click",this.handleButtonClick);this.addedTransEnd=false;if(this.panel)this.panel.removeEventListener("transitionend",this.handleTransitionEnd)}componentDidLoad(){if(this.open){this.show()}if(!this.addedTransEnd){this.panel.addEventListener("transitionend",this.handleTransitionEnd)}}render(){return i(a,{class:Object.assign({},l(this.color)),showing:this.isShowing},this.isModal&&[i("div",{part:"overlay",class:{alert__overlay:true,"alert__overlay--open":this.open},ref:t=>this.overlay=t}),i("div",{class:"alert__modal-wrap",onClick:t=>{if(!t.target.classList.contains("alert__modal-wrap"))return;this.noDismiss=true;setTimeout((()=>this.noDismiss=false),250)}},i(this.Panel,null))],!this.isModal&&i(this.Panel,null))}get host(){return s(this)}static get watchers(){return{open:["handleOpenChange"],duration:["handleDurationChange"],hoist:["handleHoistChange"]}}};m.style=h;export{m as nano_alert};
4
+ import{r as t,c as e,h as i,a,g as s}from"./index-9695db0a.js";import{M as n}from"./modal-88c117cd.js";import{l as o,u as r}from"./scroll-ac332213.js";import{c as l}from"./theme-931bd452.js";import"./tabbable-26a66a22.js";import"./dom-8599fac1.js";const h=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--border-color:var(--nano-layer-border-color, rgba(0, 0, 0, 0.1));--border-width:var(--nano-layer-border-width, 1px);--background:var(--nano-layer-bg, #fff);--tint-color:var(--nano-color-base, var(--nano-color-primary, #007495));--icon-size:2rem;--scrim-color:var(--nano-layer-overlay-dark, rgb(74 74 74 / 50%));--close-button-color:#b5aea7;display:block}:host(.nano-color){--tint-color:var(--nano-color-base, var(--nano-color-primary, #007495))}.alert{position:relative;background-color:var(--background);border:solid var(--border-width) var(--border-color);border-block-start-width:4px;border-block-start-color:var(--tint-color);border-radius:var(--border-radius);opacity:0;transform:scale(0.9);transition:var(--nano-transition-medium, 0.5s) opacity ease, var(--nano-transition-fast, 0.3s) transform ease}.alert:focus{outline:none}.alert:not(.alert--showing){position:absolute;inline-size:1px;block-size:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;pointer-events:none;visibility:hidden}.alert--open{opacity:1;transform:none}.alert--toasty,.alert--modal{box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));margin:var(--nano-spacing-medium, 16px)}.alert--modal.alert--nodismiss{animation:cannotClose 0.25s ease-in-out 1}@keyframes cannotClose{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}.alert__content{display:flex;align-items:stretch}.alert__modal-wrap{position:fixed;display:flex;align-items:center;justify-content:center;inset:0;z-index:var(--nano-layer-index-alert, 800)}.alert__message{flex:1 1 auto;padding:var(--nano-spacing-medium, 16px);overflow:hidden;line-height:1.6}.alert__close{--color:var(--close-button-color);flex:0 0 auto;display:flex;align-items:center;font-size:1.1em;padding-inline:0 var(--nano-spacing-medium, 16px);padding-block:0}.alert__footer{padding:0 var(--nano-spacing-small, 8px) 0;display:flex;flex-direction:row;justify-content:space-around;align-items:center}.alert__footer ::slotted(*){flex:1;margin:0 var(--nano-spacing-small, 8px) var(--nano-spacing-medium, 16px) !important}.alert__overlay{position:fixed;inset:0;background-color:var(--scrim-color);opacity:0;transition:var(--nano-transition-fast, 0.3s) opacity;z-index:var(--nano-layer-index-alert, 800);-webkit-backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));pointer-events:all}.alert__overlay--open{opacity:1}.alert__icon{flex:0 0 auto;display:flex;align-items:center;font-size:var(--icon-size)}.alert__icon ::slotted(*){color:var(--tint-color);margin-inline-start:var(--nano-spacing-medium, 16px)}";let c;let d;let f;let u;if(globalThis["document"]){c=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--tr"});d=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--tl"});f=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--bl"});u=Object.assign(document.createElement("div"),{className:"nano-toast-stack nano-toast-stack--br"})}const m=class{constructor(a){t(this,a);this.nanoShow=e(this,"nanoShow",7);this.nanoAfterShow=e(this,"nanoAfterShow",7);this.nanoHide=e(this,"nanoHide",7);this.nanoAfterHide=e(this,"nanoAfterHide",7);this.addedTransEnd=false;this.goingToHide=false;this.goingToShow=false;this.handleMouseMove=()=>{this.restartAutoHide()};this.handleCloseClick=()=>{this.hide()};this.handleTransitionEnd=t=>{if(t.propertyName==="opacity"&&(t.target===this.panel||t.target===this.overlay)){this.host.hidden=!this.open;this.isShowing=this.open;this.open?this.nanoAfterShow.emit():this.nanoAfterHide.emit()}};this.handleButtonClick=t=>{if(t.defaultPrevented)return;if(t.target.tagName&&t.target.tagName.toLowerCase()==="button")this.hide()};this.restartAutoHide=()=>{clearTimeout(this.autoHideTimeout);if(this.open&&this.duration<Infinity){this.autoHideTimeout=setTimeout((()=>this.hide()),this.duration)}};this.Panel=()=>i("div",{ref:t=>this.panel=t,part:"panel",class:{alert:true,"alert--open":this.open,"alert--toasty":this.isToast,"alert--modal":!!this.isModal,"alert--showing":this.isShowing,"alert--nodismiss":this.noDismiss},role:!!this.isModal?"alertdialog":"alert","aria-live":"assertive","aria-atomic":"true","aria-hidden":this.open?"false":"true","aria-modal":!!this.isModal?"true":undefined,"aria-label":this.label?this.label:undefined,onMouseMove:this.handleMouseMove,tabIndex:!!this.isModal?0:undefined},i("div",{class:"alert__content"},i("div",{part:"icon",class:"alert__icon"},i("slot",{name:"icon"})),i("div",{part:"message",class:"alert__message"},i("slot",null)),this.closable&&i("div",{class:"alert__close"},i("nano-icon-button",{class:"alert__close",iconName:"light/times",label:"close menu",onClick:this.handleCloseClick}))),i("div",{class:"alert__footer"},i("slot",{name:"footer"})));this.isModal=false;this.isToast=false;this.isShowing=false;this.label=undefined;this.noDismiss=false;this.open=false;this.closable=false;this.color=undefined;this.duration=Infinity;this.hoist=false}handleOpenChange(){this.open?this.show():this.hide()}handleDurationChange(){this.restartAutoHide()}handleHoistChange(){if(!this.hoist||document.body.children[0]===this.host)return;document.body.prepend(this.host)}async show(){if(this.goingToShow){return}const t=this.nanoShow.emit();if(t.defaultPrevented){this.open=false;return false}this.host.hidden=false;this.goingToShow=true;this.open=true;requestAnimationFrame((()=>{this.isShowing=true;this.goingToShow=false}));if(this.duration<Infinity){clearTimeout(this.autoHideTimeout);this.autoHideTimeout=setTimeout((()=>this.hide()),this.duration)}}async hide(){if(this.goingToHide){return}const t=this.nanoHide.emit();if(t.defaultPrevented){this.open=true;return false}this.goingToHide=true;this.open=false;requestAnimationFrame((()=>this.goingToHide=false));clearTimeout(this.autoHideTimeout)}async toast(t="tr"){this.isToast=true;return new Promise((e=>{let i;switch(t){case"tl":i=d;break;case"bl":i=f;break;case"br":i=u;break;default:i=c;break}if(!i.parentElement){document.body.appendChild(i)}i.appendChild(this.host);this.connectedCallback();this.show();const a=()=>{this.host.remove();this.isToast=false;e();if(!i.querySelector("nano-alert")){i.remove()}};this.host.addEventListener("nanoAfterHide",a,{once:true});this.host.addEventListener("nano-after-hide",a,{once:true})}))}async alert(t){this.isModal=true;this.label=t;return new Promise((t=>{if(!document.body.contains(this.host)){document.body.appendChild(this.host)}this.modal.activate();o(this.host);this.originalTrigger=document.activeElement;requestAnimationFrame((()=>{this.show()}));const e=()=>requestAnimationFrame((()=>this.panel.focus({preventScroll:true})));const i=()=>{this.modal.deactivate();this.host.remove();this.label=undefined;this.isModal=false;t();if(this.originalTrigger&&typeof this.originalTrigger.focus==="function"){setTimeout((()=>this.originalTrigger.focus()))}};this.host.addEventListener("nanoAfterShow",e,{once:true});this.host.addEventListener("nano-after-show",e,{once:true});this.host.addEventListener("nanoAfterHide",i,{once:true});this.host.addEventListener("nano-after-hide",i,{once:true})}))}connectedCallback(){this.modal=new n(this.host);this.handleHoistChange();this.host.addEventListener("click",this.handleButtonClick);if(this.panel){this.addedTransEnd=true;this.panel.addEventListener("transitionend",this.handleTransitionEnd)}}disconnectedCallback(){r(this.host);this.host.removeEventListener("click",this.handleButtonClick);this.addedTransEnd=false;if(this.panel)this.panel.removeEventListener("transitionend",this.handleTransitionEnd)}componentDidLoad(){if(this.open){this.show()}if(!this.addedTransEnd){this.panel.addEventListener("transitionend",this.handleTransitionEnd)}}render(){return i(a,{class:{...l(this.color)},showing:this.isShowing},this.isModal&&[i("div",{part:"overlay",class:{alert__overlay:true,"alert__overlay--open":this.open},ref:t=>this.overlay=t}),i("div",{class:"alert__modal-wrap",onClick:t=>{if(!t.target.classList.contains("alert__modal-wrap"))return;this.noDismiss=true;setTimeout((()=>this.noDismiss=false),250)}},i(this.Panel,null))],!this.isModal&&i(this.Panel,null))}get host(){return s(this)}static get watchers(){return{open:["handleOpenChange"],duration:["handleDurationChange"],hoist:["handleHoistChange"]}}};m.style=h;export{m as nano_alert};
5
5
  //# sourceMappingURL=nano-alert.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["alertCss","toastStackTr","toastStackTl","toastStackBl","toastStackBr","globalThis","Object","assign","document","createElement","className","Alert","this","addedTransEnd","goingToHide","goingToShow","handleMouseMove","restartAutoHide","handleCloseClick","hide","handleTransitionEnd","event","propertyName","target","panel","overlay","host","hidden","open","isShowing","nanoAfterShow","emit","nanoAfterHide","handleButtonClick","e","defaultPrevented","tagName","toLowerCase","clearTimeout","autoHideTimeout","duration","Infinity","setTimeout","Panel","h","ref","el","part","class","alert","isToast","isModal","noDismiss","role","undefined","label","onMouseMove","tabIndex","name","closable","iconName","onClick","handleOpenChange","show","handleDurationChange","handleHoistChange","hoist","body","children","prepend","async","nanoShow","requestAnimationFrame","nanoHide","position","Promise","resolve","toastStack","parentElement","appendChild","connectedCallback","onClose","remove","querySelector","addEventListener","once","contains","modal","activate","lockBodyScrolling","originalTrigger","activeElement","onOpen","focus","preventScroll","deactivate","Modal","disconnectedCallback","unlockBodyScrolling","removeEventListener","componentDidLoad","render","Host","createColorClasses","color","showing","alert__overlay","div","classList"],"sources":["./src/components/alert/alert.scss?tag=nano-alert&encapsulation=shadow","./src/components/alert/alert.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --border-radius: defaults to #{$layer-border-radius};\n * @prop --border-color: defaults to #{$layer-border-color};\n * @prop --border-width: defaults to #{$layer-border-width};\n * @prop --background: defaults to #{$layer-bg-color};\n * @prop --tint-color: defaults to var(--nano-color-base, #{nano-color(primary, base)});\n * @prop --icon-size: defaults to 1.5rem;\n * @prop --scrim-color: overlay colour of alert display. Defaults to #{$layer-overlay-dark};\n * @prop --close-button-color: defaults to #{map.get($colors, mediumgrey)} ;\n */\n\n --border-radius: #{$layer-border-radius};\n --border-color: #{$layer-border-color};\n --border-width: #{$layer-border-width};\n --background: #{$layer-bg-color};\n --tint-color: var(--nano-color-base, #{nano-color(primary, base)});\n --icon-size: 2rem;\n --scrim-color: #{$layer-overlay-dark};\n --close-button-color: #{map.get($colors, palegrey)};\n\n display: block;\n}\n\n:host(.nano-color) {\n --tint-color: var(--nano-color-base, #{nano-color(primary, base)});\n}\n\n.alert {\n position: relative;\n background-color: var(--background);\n border: solid var(--border-width) var(--border-color);\n border-block-start-width: 4px;\n border-block-start-color: var(--tint-color);\n border-radius: var(--border-radius);\n opacity: 0;\n transform: scale(0.9);\n transition:\n #{$transition-medium} opacity ease,\n #{$transition-fast} transform ease;\n\n &:focus {\n outline: none;\n }\n\n &:not(.alert--showing) {\n @include hidden;\n }\n\n &--open {\n opacity: 1;\n transform: none;\n }\n\n &--toasty,\n &--modal {\n box-shadow: #{$layer-shadow-large};\n margin: #{$spacing-medium};\n }\n\n &--modal {\n &.alert--nodismiss {\n animation: cannotClose 0.25s ease-in-out 1;\n\n @keyframes cannotClose {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(1.08);\n }\n\n 100% {\n transform: scale(1);\n }\n }\n }\n }\n}\n\n.alert__content {\n display: flex;\n align-items: stretch;\n}\n\n.alert__modal-wrap {\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n inset: 0;\n z-index: #{$layer-index-alert};\n}\n\n.alert__message {\n flex: 1 1 auto;\n padding: #{$spacing-medium};\n overflow: hidden;\n line-height: 1.6;\n}\n\n.alert__close {\n --color: var(--close-button-color);\n\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: 1.1em;\n padding-inline: 0 #{$spacing-medium};\n padding-block: 0;\n}\n\n.alert__footer {\n padding: 0 #{$spacing-small} 0;\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n\n ::slotted(*) {\n flex: 1;\n margin: 0 #{$spacing-small} #{$spacing-medium} !important;\n }\n}\n\n.alert__overlay {\n position: fixed;\n inset: 0;\n background-color: var(--scrim-color);\n opacity: 0;\n transition: #{$transition-fast} opacity;\n z-index: #{$layer-index-alert};\n backdrop-filter: blur(#{$layer-overlay-blur});\n pointer-events: all;\n\n &--open {\n opacity: 1;\n }\n}\n\n.alert__icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: var(--icon-size);\n\n ::slotted(*) {\n color: var(--tint-color);\n margin-inline-start: #{$spacing-medium};\n }\n}\n","import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n h,\n Host,\n VNode,\n} from '@stencil/core';\nimport Modal from '../../utils/modal';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport { createColorClasses } from '../../utils/theme';\nimport type { Color } from '../../interface';\n\nlet toastStackTr: HTMLElement;\nlet toastStackTl: HTMLElement;\nlet toastStackBl: HTMLElement;\nlet toastStackBr: HTMLElement;\n\nif (globalThis['document']) {\n toastStackTr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tr',\n });\n toastStackTl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tl',\n });\n toastStackBl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--bl',\n });\n toastStackBr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--br',\n });\n}\n\n/**\n * Alerts are used to display important messages either inline, as toast notifications or as modals requiring action.\n * @slot - The alert's content.\n * @slot icon - An icon to show in the alert.\n * @slot footer - Place items at the bottom of the alert. Best used with `button` elements - esp when used as with the `alert()` method.\n */\n@Component({\n tag: 'nano-alert',\n styleUrl: 'alert.scss',\n shadow: true,\n})\nexport class Alert implements ComponentInterface {\n private autoHideTimeout: ReturnType<typeof setTimeout>;\n private panel: HTMLElement;\n private overlay: HTMLElement;\n private modal: Modal;\n private originalTrigger: HTMLElement | null;\n private addedTransEnd = false;\n private goingToHide = false;\n private goingToShow = false;\n\n @State() isModal = false;\n @State() isToast = false;\n @State() isShowing = false;\n @State() label: string;\n @State() noDismiss = false;\n\n @Element() host: HTMLNanoAlertElement;\n\n /** Indicates whether or not the alert is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n /** Set to true to make the alert closable. */\n @Prop({ reflect: true }) closable = false;\n\n /** The color to use from the application's color palette. */\n @Prop({ reflect: true }) color?: Color;\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with the\n * alert before it closes (e.g. moves the mouse over it), the timer will restart.\n */\n @Prop() duration = Infinity;\n\n @Watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /**\n * Relocate the dialog to the root of the DOM.\n * Most useful in conjunction with `alert()` when parental elements\n * have css stacking constraints which don't allow for `position: fixed`\n */\n @Prop() hoist = false;\n\n @Watch('hoist')\n handleHoistChange() {\n if (!this.hoist || document.body.children[0] === this.host) return;\n document.body.prepend(this.host);\n }\n\n /** Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the alert opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the alert closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /** Shows the alert. */\n @Method()\n async show() {\n if (this.goingToShow) {\n return;\n }\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return false;\n }\n\n this.host.hidden = false;\n this.goingToShow = true;\n this.open = true;\n requestAnimationFrame(() => {\n this.isShowing = true;\n this.goingToShow = false;\n });\n\n if (this.duration < Infinity) {\n clearTimeout(this.autoHideTimeout);\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n }\n\n /** Hides the alert */\n @Method()\n async hide() {\n if (this.goingToHide) {\n return;\n }\n const nanoHide = this.nanoHide.emit();\n\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return false;\n }\n this.goingToHide = true;\n this.open = false;\n\n requestAnimationFrame(() => (this.goingToHide = false));\n clearTimeout(this.autoHideTimeout);\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n *\n * @param position options are tr (top-right - default), tl (top-left), br (bottom-right), bl (bottom-left)\n * @returns a promise which will resolve after the alert has hidden\n */\n @Method()\n async toast(position: 'tr' | 'tl' | 'bl' | 'br' = 'tr') {\n this.isToast = true;\n return new Promise<void>((resolve) => {\n let toastStack: HTMLElement;\n switch (position) {\n case 'tl':\n toastStack = toastStackTl;\n break;\n case 'bl':\n toastStack = toastStackBl;\n break;\n case 'br':\n toastStack = toastStackBr;\n break;\n default:\n toastStack = toastStackTr;\n break;\n }\n\n if (!toastStack.parentElement) {\n document.body.appendChild(toastStack);\n }\n\n toastStack.appendChild(this.host);\n this.connectedCallback();\n this.show();\n\n const onClose = () => {\n this.host.remove();\n this.isToast = false;\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (!toastStack.querySelector('nano-alert')) {\n toastStack.remove();\n }\n };\n\n this.host.addEventListener('nanoAfterHide', onClose, { once: true });\n this.host.addEventListener('nano-after-hide', onClose, { once: true });\n });\n }\n\n /**\n * Displays the alert as a dialog / modal - more akin to a traditional js alert().\n * @param label a label for assistive technology\n */\n @Method()\n async alert(label: string) {\n this.isModal = true;\n this.label = label;\n\n return new Promise<void>((resolve) => {\n if (!document.body.contains(this.host)) {\n document.body.appendChild(this.host);\n }\n\n this.modal.activate();\n lockBodyScrolling(this.host);\n this.originalTrigger = document.activeElement as HTMLElement;\n\n requestAnimationFrame(() => {\n this.show();\n });\n\n const onOpen = () =>\n requestAnimationFrame(() => this.panel.focus({ preventScroll: true }));\n\n const onClose = () => {\n this.modal.deactivate();\n this.host.remove();\n this.label = undefined;\n this.isModal = false;\n resolve();\n\n // Restore focus to the original trigger\n if (\n this.originalTrigger &&\n typeof this.originalTrigger.focus === 'function'\n ) {\n setTimeout(() => this.originalTrigger.focus());\n }\n };\n\n this.host.addEventListener('nanoAfterShow', onOpen, { once: true });\n this.host.addEventListener('nano-after-show', onOpen, { once: true });\n\n this.host.addEventListener('nanoAfterHide', onClose, {\n once: true,\n });\n this.host.addEventListener('nano-after-hide', onClose, {\n once: true,\n });\n });\n }\n\n private handleMouseMove = () => {\n this.restartAutoHide();\n };\n\n private handleCloseClick = () => {\n this.hide();\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n (event.target === this.panel || event.target === this.overlay)\n ) {\n this.host.hidden = !this.open;\n this.isShowing = this.open;\n this.open ? this.nanoAfterShow.emit() : this.nanoAfterHide.emit();\n }\n };\n\n private handleButtonClick = (e: PointerEvent & { target: HTMLElement }) => {\n if (e.defaultPrevented) return;\n if (e.target.tagName && e.target.tagName.toLowerCase() === 'button')\n this.hide();\n };\n\n private restartAutoHide = () => {\n clearTimeout(this.autoHideTimeout);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n };\n\n connectedCallback() {\n this.modal = new Modal(this.host);\n this.handleHoistChange();\n this.host.addEventListener('click', this.handleButtonClick);\n\n if (this.panel) {\n this.addedTransEnd = true;\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n disconnectedCallback() {\n unlockBodyScrolling(this.host);\n this.host.removeEventListener('click', this.handleButtonClick);\n\n this.addedTransEnd = false;\n if (this.panel)\n this.panel.removeEventListener('transitionend', this.handleTransitionEnd);\n }\n\n componentDidLoad() {\n // Show on init if open\n if (this.open) {\n this.show();\n }\n if (!this.addedTransEnd) {\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n private Panel = (): VNode => {\n return (\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class={{\n alert: true,\n 'alert--open': this.open,\n 'alert--toasty': this.isToast,\n 'alert--modal': !!this.isModal,\n 'alert--showing': this.isShowing,\n 'alert--nodismiss': this.noDismiss,\n }}\n role={!!this.isModal ? 'alertdialog' : 'alert'}\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-modal={!!this.isModal ? 'true' : undefined}\n aria-label={this.label ? this.label : undefined}\n onMouseMove={this.handleMouseMove}\n tabIndex={!!this.isModal ? 0 : undefined}\n >\n <div class=\"alert__content\">\n <div part=\"icon\" class=\"alert__icon\">\n <slot name=\"icon\" />\n </div>\n <div part=\"message\" class=\"alert__message\">\n <slot />\n </div>\n {this.closable && (\n <div class=\"alert__close\">\n <nano-icon-button\n class=\"alert__close\"\n iconName=\"light/times\"\n label=\"close menu\"\n onClick={this.handleCloseClick}\n ></nano-icon-button>\n </div>\n )}\n </div>\n <div class=\"alert__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host\n class={{ ...createColorClasses(this.color) }}\n showing={this.isShowing}\n >\n {this.isModal && [\n <div\n part=\"overlay\"\n class={{\n alert__overlay: true,\n 'alert__overlay--open': this.open,\n }}\n ref={(div) => (this.overlay = div)}\n />,\n <div\n class=\"alert__modal-wrap\"\n onClick={(e: MouseEvent & { target: HTMLElement }) => {\n if (!e.target.classList.contains('alert__modal-wrap')) return;\n this.noDismiss = true;\n setTimeout(() => (this.noDismiss = false), 250);\n }}\n >\n <this.Panel />\n </div>,\n ]}\n {!this.isModal && <this.Panel />}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["alertCss","toastStackTr","toastStackTl","toastStackBl","toastStackBr","globalThis","Object","assign","document","createElement","className","Alert","this","addedTransEnd","goingToHide","goingToShow","handleMouseMove","restartAutoHide","handleCloseClick","hide","handleTransitionEnd","event","propertyName","target","panel","overlay","host","hidden","open","isShowing","nanoAfterShow","emit","nanoAfterHide","handleButtonClick","e","defaultPrevented","tagName","toLowerCase","clearTimeout","autoHideTimeout","duration","Infinity","setTimeout","Panel","h","ref","el","part","class","alert","isToast","isModal","noDismiss","role","undefined","label","onMouseMove","tabIndex","name","closable","iconName","onClick","handleOpenChange","show","handleDurationChange","handleHoistChange","hoist","body","children","prepend","async","nanoShow","requestAnimationFrame","nanoHide","position","Promise","resolve","toastStack","parentElement","appendChild","connectedCallback","onClose","remove","querySelector","addEventListener","once","contains","modal","activate","lockBodyScrolling","originalTrigger","activeElement","onOpen","focus","preventScroll","deactivate","Modal","disconnectedCallback","unlockBodyScrolling","removeEventListener","componentDidLoad","render","Host","createColorClasses","color","showing","alert__overlay","div","classList"],"sources":["./src/components/alert/alert.scss?tag=nano-alert&encapsulation=shadow","./src/components/alert/alert.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --border-radius: defaults to #{$layer-border-radius};\n * @prop --border-color: defaults to #{$layer-border-color};\n * @prop --border-width: defaults to #{$layer-border-width};\n * @prop --background: defaults to #{$layer-bg-color};\n * @prop --tint-color: defaults to var(--nano-color-base, #{nano-color(primary, base)});\n * @prop --icon-size: defaults to 1.5rem;\n * @prop --scrim-color: overlay colour of alert display. Defaults to #{$layer-overlay-dark};\n * @prop --close-button-color: defaults to #{map.get($colors, mediumgrey)} ;\n */\n\n --border-radius: #{$layer-border-radius};\n --border-color: #{$layer-border-color};\n --border-width: #{$layer-border-width};\n --background: #{$layer-bg-color};\n --tint-color: var(--nano-color-base, #{nano-color(primary, base)});\n --icon-size: 2rem;\n --scrim-color: #{$layer-overlay-dark};\n --close-button-color: #{map.get($colors, palegrey)};\n\n display: block;\n}\n\n:host(.nano-color) {\n --tint-color: var(--nano-color-base, #{nano-color(primary, base)});\n}\n\n.alert {\n position: relative;\n background-color: var(--background);\n border: solid var(--border-width) var(--border-color);\n border-block-start-width: 4px;\n border-block-start-color: var(--tint-color);\n border-radius: var(--border-radius);\n opacity: 0;\n transform: scale(0.9);\n transition:\n #{$transition-medium} opacity ease,\n #{$transition-fast} transform ease;\n\n &:focus {\n outline: none;\n }\n\n &:not(.alert--showing) {\n @include hidden;\n }\n\n &--open {\n opacity: 1;\n transform: none;\n }\n\n &--toasty,\n &--modal {\n box-shadow: #{$layer-shadow-large};\n margin: #{$spacing-medium};\n }\n\n &--modal {\n &.alert--nodismiss {\n animation: cannotClose 0.25s ease-in-out 1;\n\n @keyframes cannotClose {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(1.08);\n }\n\n 100% {\n transform: scale(1);\n }\n }\n }\n }\n}\n\n.alert__content {\n display: flex;\n align-items: stretch;\n}\n\n.alert__modal-wrap {\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n inset: 0;\n z-index: #{$layer-index-alert};\n}\n\n.alert__message {\n flex: 1 1 auto;\n padding: #{$spacing-medium};\n overflow: hidden;\n line-height: 1.6;\n}\n\n.alert__close {\n --color: var(--close-button-color);\n\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: 1.1em;\n padding-inline: 0 #{$spacing-medium};\n padding-block: 0;\n}\n\n.alert__footer {\n padding: 0 #{$spacing-small} 0;\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n\n ::slotted(*) {\n flex: 1;\n margin: 0 #{$spacing-small} #{$spacing-medium} !important;\n }\n}\n\n.alert__overlay {\n position: fixed;\n inset: 0;\n background-color: var(--scrim-color);\n opacity: 0;\n transition: #{$transition-fast} opacity;\n z-index: #{$layer-index-alert};\n backdrop-filter: blur(#{$layer-overlay-blur});\n pointer-events: all;\n\n &--open {\n opacity: 1;\n }\n}\n\n.alert__icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: var(--icon-size);\n\n ::slotted(*) {\n color: var(--tint-color);\n margin-inline-start: #{$spacing-medium};\n }\n}\n","import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n h,\n Host,\n VNode,\n} from '@stencil/core';\nimport Modal from '../../utils/modal';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport { createColorClasses } from '../../utils/theme';\nimport type { Color } from '../../interface';\n\nlet toastStackTr: HTMLElement;\nlet toastStackTl: HTMLElement;\nlet toastStackBl: HTMLElement;\nlet toastStackBr: HTMLElement;\n\nif (globalThis['document']) {\n toastStackTr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tr',\n });\n toastStackTl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tl',\n });\n toastStackBl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--bl',\n });\n toastStackBr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--br',\n });\n}\n\n/**\n * Alerts are used to display important messages either inline, as toast notifications or as modals requiring action.\n * @slot - The alert's content.\n * @slot icon - An icon to show in the alert.\n * @slot footer - Place items at the bottom of the alert. Best used with `button` elements - esp when used as with the `alert()` method.\n */\n@Component({\n tag: 'nano-alert',\n styleUrl: 'alert.scss',\n shadow: true,\n})\nexport class Alert implements ComponentInterface {\n private autoHideTimeout: ReturnType<typeof setTimeout>;\n private panel: HTMLElement;\n private overlay: HTMLElement;\n private modal: Modal;\n private originalTrigger: HTMLElement | null;\n private addedTransEnd = false;\n private goingToHide = false;\n private goingToShow = false;\n\n @State() isModal = false;\n @State() isToast = false;\n @State() isShowing = false;\n @State() label: string;\n @State() noDismiss = false;\n\n @Element() host: HTMLNanoAlertElement;\n\n /** Indicates whether or not the alert is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n /** Set to true to make the alert closable. */\n @Prop({ reflect: true }) closable = false;\n\n /** The color to use from the application's color palette. */\n @Prop({ reflect: true }) color?: Color;\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with the\n * alert before it closes (e.g. moves the mouse over it), the timer will restart.\n */\n @Prop() duration = Infinity;\n\n @Watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /**\n * Relocate the dialog to the root of the DOM.\n * Most useful in conjunction with `alert()` when parental elements\n * have css stacking constraints which don't allow for `position: fixed`\n */\n @Prop() hoist = false;\n\n @Watch('hoist')\n handleHoistChange() {\n if (!this.hoist || document.body.children[0] === this.host) return;\n document.body.prepend(this.host);\n }\n\n /** Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the alert opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the alert closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /** Shows the alert. */\n @Method()\n async show() {\n if (this.goingToShow) {\n return;\n }\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return false;\n }\n\n this.host.hidden = false;\n this.goingToShow = true;\n this.open = true;\n requestAnimationFrame(() => {\n this.isShowing = true;\n this.goingToShow = false;\n });\n\n if (this.duration < Infinity) {\n clearTimeout(this.autoHideTimeout);\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n }\n\n /** Hides the alert */\n @Method()\n async hide() {\n if (this.goingToHide) {\n return;\n }\n const nanoHide = this.nanoHide.emit();\n\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return false;\n }\n this.goingToHide = true;\n this.open = false;\n\n requestAnimationFrame(() => (this.goingToHide = false));\n clearTimeout(this.autoHideTimeout);\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n *\n * @param position options are tr (top-right - default), tl (top-left), br (bottom-right), bl (bottom-left)\n * @returns a promise which will resolve after the alert has hidden\n */\n @Method()\n async toast(position: 'tr' | 'tl' | 'bl' | 'br' = 'tr') {\n this.isToast = true;\n return new Promise<void>((resolve) => {\n let toastStack: HTMLElement;\n switch (position) {\n case 'tl':\n toastStack = toastStackTl;\n break;\n case 'bl':\n toastStack = toastStackBl;\n break;\n case 'br':\n toastStack = toastStackBr;\n break;\n default:\n toastStack = toastStackTr;\n break;\n }\n\n if (!toastStack.parentElement) {\n document.body.appendChild(toastStack);\n }\n\n toastStack.appendChild(this.host);\n this.connectedCallback();\n this.show();\n\n const onClose = () => {\n this.host.remove();\n this.isToast = false;\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (!toastStack.querySelector('nano-alert')) {\n toastStack.remove();\n }\n };\n\n this.host.addEventListener('nanoAfterHide', onClose, { once: true });\n this.host.addEventListener('nano-after-hide', onClose, { once: true });\n });\n }\n\n /**\n * Displays the alert as a dialog / modal - more akin to a traditional js alert().\n * @param label a label for assistive technology\n */\n @Method()\n async alert(label: string) {\n this.isModal = true;\n this.label = label;\n\n return new Promise<void>((resolve) => {\n if (!document.body.contains(this.host)) {\n document.body.appendChild(this.host);\n }\n\n this.modal.activate();\n lockBodyScrolling(this.host);\n this.originalTrigger = document.activeElement as HTMLElement;\n\n requestAnimationFrame(() => {\n this.show();\n });\n\n const onOpen = () =>\n requestAnimationFrame(() => this.panel.focus({ preventScroll: true }));\n\n const onClose = () => {\n this.modal.deactivate();\n this.host.remove();\n this.label = undefined;\n this.isModal = false;\n resolve();\n\n // Restore focus to the original trigger\n if (\n this.originalTrigger &&\n typeof this.originalTrigger.focus === 'function'\n ) {\n setTimeout(() => this.originalTrigger.focus());\n }\n };\n\n this.host.addEventListener('nanoAfterShow', onOpen, { once: true });\n this.host.addEventListener('nano-after-show', onOpen, { once: true });\n\n this.host.addEventListener('nanoAfterHide', onClose, {\n once: true,\n });\n this.host.addEventListener('nano-after-hide', onClose, {\n once: true,\n });\n });\n }\n\n private handleMouseMove = () => {\n this.restartAutoHide();\n };\n\n private handleCloseClick = () => {\n this.hide();\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n (event.target === this.panel || event.target === this.overlay)\n ) {\n this.host.hidden = !this.open;\n this.isShowing = this.open;\n this.open ? this.nanoAfterShow.emit() : this.nanoAfterHide.emit();\n }\n };\n\n private handleButtonClick = (e: PointerEvent & { target: HTMLElement }) => {\n if (e.defaultPrevented) return;\n if (e.target.tagName && e.target.tagName.toLowerCase() === 'button')\n this.hide();\n };\n\n private restartAutoHide = () => {\n clearTimeout(this.autoHideTimeout);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n };\n\n connectedCallback() {\n this.modal = new Modal(this.host);\n this.handleHoistChange();\n this.host.addEventListener('click', this.handleButtonClick);\n\n if (this.panel) {\n this.addedTransEnd = true;\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n disconnectedCallback() {\n unlockBodyScrolling(this.host);\n this.host.removeEventListener('click', this.handleButtonClick);\n\n this.addedTransEnd = false;\n if (this.panel)\n this.panel.removeEventListener('transitionend', this.handleTransitionEnd);\n }\n\n componentDidLoad() {\n // Show on init if open\n if (this.open) {\n this.show();\n }\n if (!this.addedTransEnd) {\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n private Panel = (): VNode => {\n return (\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class={{\n alert: true,\n 'alert--open': this.open,\n 'alert--toasty': this.isToast,\n 'alert--modal': !!this.isModal,\n 'alert--showing': this.isShowing,\n 'alert--nodismiss': this.noDismiss,\n }}\n role={!!this.isModal ? 'alertdialog' : 'alert'}\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-modal={!!this.isModal ? 'true' : undefined}\n aria-label={this.label ? this.label : undefined}\n onMouseMove={this.handleMouseMove}\n tabIndex={!!this.isModal ? 0 : undefined}\n >\n <div class=\"alert__content\">\n <div part=\"icon\" class=\"alert__icon\">\n <slot name=\"icon\" />\n </div>\n <div part=\"message\" class=\"alert__message\">\n <slot />\n </div>\n {this.closable && (\n <div class=\"alert__close\">\n <nano-icon-button\n class=\"alert__close\"\n iconName=\"light/times\"\n label=\"close menu\"\n onClick={this.handleCloseClick}\n ></nano-icon-button>\n </div>\n )}\n </div>\n <div class=\"alert__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host\n class={{ ...createColorClasses(this.color) }}\n showing={this.isShowing}\n >\n {this.isModal && [\n <div\n part=\"overlay\"\n class={{\n alert__overlay: true,\n 'alert__overlay--open': this.open,\n }}\n ref={(div) => (this.overlay = div)}\n />,\n <div\n class=\"alert__modal-wrap\"\n onClick={(e: MouseEvent & { target: HTMLElement }) => {\n if (!e.target.classList.contains('alert__modal-wrap')) return;\n this.noDismiss = true;\n setTimeout(() => (this.noDismiss = false), 250);\n }}\n >\n <this.Panel />\n </div>,\n ]}\n {!this.isModal && <this.Panel />}\n </Host>\n );\n }\n}\n"],"mappings":";;;wPAAA,MAAMA,EAAW,myFCmBjB,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EAEJ,GAAIC,WAAW,YAAa,CAC1BJ,EAAeK,OAAOC,OAAOC,SAASC,cAAc,OAAQ,CAC1DC,UAAW,0CAEbR,EAAeI,OAAOC,OAAOC,SAASC,cAAc,OAAQ,CAC1DC,UAAW,0CAEbP,EAAeG,OAAOC,OAAOC,SAASC,cAAc,OAAQ,CAC1DC,UAAW,0CAEbN,EAAeE,OAAOC,OAAOC,SAASC,cAAc,OAAQ,CAC1DC,UAAW,yC,OAeFC,EAAK,M,yLAMRC,KAAAC,cAAgB,MAChBD,KAAAE,YAAc,MACdF,KAAAG,YAAc,MAkNdH,KAAAI,gBAAkB,KACxBJ,KAAKK,iBAAiB,EAGhBL,KAAAM,iBAAmB,KACzBN,KAAKO,MAAM,EAGLP,KAAAQ,oBAAuBC,IAC7B,GACEA,EAAMC,eAAiB,YACtBD,EAAME,SAAWX,KAAKY,OAASH,EAAME,SAAWX,KAAKa,SACtD,CACAb,KAAKc,KAAKC,QAAUf,KAAKgB,KACzBhB,KAAKiB,UAAYjB,KAAKgB,KACtBhB,KAAKgB,KAAOhB,KAAKkB,cAAcC,OAASnB,KAAKoB,cAAcD,M,GAIvDnB,KAAAqB,kBAAqBC,IAC3B,GAAIA,EAAEC,iBAAkB,OACxB,GAAID,EAAEX,OAAOa,SAAWF,EAAEX,OAAOa,QAAQC,gBAAkB,SACzDzB,KAAKO,MAAM,EAGPP,KAAAK,gBAAkB,KACxBqB,aAAa1B,KAAK2B,iBAClB,GAAI3B,KAAKgB,MAAQhB,KAAK4B,SAAWC,SAAU,CACzC7B,KAAK2B,gBAAkBG,YAAW,IAAM9B,KAAKO,QAAQP,KAAK4B,S,GAkCtD5B,KAAA+B,MAAQ,IAEZC,EAAA,OACEC,IAAMC,GAAQlC,KAAKY,MAAQsB,EAC3BC,KAAK,QACLC,MAAO,CACLC,MAAO,KACP,cAAerC,KAAKgB,KACpB,gBAAiBhB,KAAKsC,QACtB,iBAAkBtC,KAAKuC,QACvB,iBAAkBvC,KAAKiB,UACvB,mBAAoBjB,KAAKwC,WAE3BC,OAAQzC,KAAKuC,QAAU,cAAgB,QAAO,YACpC,YAAW,cACT,OAAM,cACLvC,KAAKgB,KAAO,QAAU,OAAM,eAC3BhB,KAAKuC,QAAU,OAASG,UAAS,aACnC1C,KAAK2C,MAAQ3C,KAAK2C,MAAQD,UACtCE,YAAa5C,KAAKI,gBAClByC,WAAY7C,KAAKuC,QAAU,EAAIG,WAE/BV,EAAA,OAAKI,MAAM,kBACTJ,EAAA,OAAKG,KAAK,OAAOC,MAAM,eACrBJ,EAAA,QAAMc,KAAK,UAEbd,EAAA,OAAKG,KAAK,UAAUC,MAAM,kBACxBJ,EAAA,cAEDhC,KAAK+C,UACJf,EAAA,OAAKI,MAAM,gBACTJ,EAAA,oBACEI,MAAM,eACNY,SAAS,cACTL,MAAM,aACNM,QAASjD,KAAKM,qBAKtB0B,EAAA,OAAKI,MAAM,iBACTJ,EAAA,QAAMc,KAAK,a,aAvTA,M,aACA,M,eACE,M,oCAEA,M,UAK0B,M,cAQX,M,mCASjBjB,S,WAYH,K,CA1BhBqB,mBACElD,KAAKgB,KAAOhB,KAAKmD,OAASnD,KAAKO,M,CAgBjC6C,uBACEpD,KAAKK,iB,CAWPgD,oBACE,IAAKrD,KAAKsD,OAAS1D,SAAS2D,KAAKC,SAAS,KAAOxD,KAAKc,KAAM,OAC5DlB,SAAS2D,KAAKE,QAAQzD,KAAKc,K,CAiB7B4C,aACE,GAAI1D,KAAKG,YAAa,CACpB,M,CAEF,MAAMwD,EAAW3D,KAAK2D,SAASxC,OAC/B,GAAIwC,EAASpC,iBAAkB,CAC7BvB,KAAKgB,KAAO,MACZ,OAAO,K,CAGThB,KAAKc,KAAKC,OAAS,MACnBf,KAAKG,YAAc,KACnBH,KAAKgB,KAAO,KACZ4C,uBAAsB,KACpB5D,KAAKiB,UAAY,KACjBjB,KAAKG,YAAc,KAAK,IAG1B,GAAIH,KAAK4B,SAAWC,SAAU,CAC5BH,aAAa1B,KAAK2B,iBAClB3B,KAAK2B,gBAAkBG,YAAW,IAAM9B,KAAKO,QAAQP,KAAK4B,S,EAM9D8B,aACE,GAAI1D,KAAKE,YAAa,CACpB,M,CAEF,MAAM2D,EAAW7D,KAAK6D,SAAS1C,OAE/B,GAAI0C,EAAStC,iBAAkB,CAC7BvB,KAAKgB,KAAO,KACZ,OAAO,K,CAEThB,KAAKE,YAAc,KACnBF,KAAKgB,KAAO,MAEZ4C,uBAAsB,IAAO5D,KAAKE,YAAc,QAChDwB,aAAa1B,KAAK2B,gB,CAYpB+B,YAAYI,EAAsC,MAChD9D,KAAKsC,QAAU,KACf,OAAO,IAAIyB,SAAeC,IACxB,IAAIC,EACJ,OAAQH,GACN,IAAK,KACHG,EAAa3E,EACb,MACF,IAAK,KACH2E,EAAa1E,EACb,MACF,IAAK,KACH0E,EAAazE,EACb,MACF,QACEyE,EAAa5E,EACb,MAGJ,IAAK4E,EAAWC,cAAe,CAC7BtE,SAAS2D,KAAKY,YAAYF,E,CAG5BA,EAAWE,YAAYnE,KAAKc,MAC5Bd,KAAKoE,oBACLpE,KAAKmD,OAEL,MAAMkB,EAAU,KACdrE,KAAKc,KAAKwD,SACVtE,KAAKsC,QAAU,MACf0B,IAGA,IAAKC,EAAWM,cAAc,cAAe,CAC3CN,EAAWK,Q,GAIftE,KAAKc,KAAK0D,iBAAiB,gBAAiBH,EAAS,CAAEI,KAAM,OAC7DzE,KAAKc,KAAK0D,iBAAiB,kBAAmBH,EAAS,CAAEI,KAAM,MAAO,G,CAS1Ef,YAAYf,GACV3C,KAAKuC,QAAU,KACfvC,KAAK2C,MAAQA,EAEb,OAAO,IAAIoB,SAAeC,IACxB,IAAKpE,SAAS2D,KAAKmB,SAAS1E,KAAKc,MAAO,CACtClB,SAAS2D,KAAKY,YAAYnE,KAAKc,K,CAGjCd,KAAK2E,MAAMC,WACXC,EAAkB7E,KAAKc,MACvBd,KAAK8E,gBAAkBlF,SAASmF,cAEhCnB,uBAAsB,KACpB5D,KAAKmD,MAAM,IAGb,MAAM6B,EAAS,IACbpB,uBAAsB,IAAM5D,KAAKY,MAAMqE,MAAM,CAAEC,cAAe,SAEhE,MAAMb,EAAU,KACdrE,KAAK2E,MAAMQ,aACXnF,KAAKc,KAAKwD,SACVtE,KAAK2C,MAAQD,UACb1C,KAAKuC,QAAU,MACfyB,IAGA,GACEhE,KAAK8E,wBACE9E,KAAK8E,gBAAgBG,QAAU,WACtC,CACAnD,YAAW,IAAM9B,KAAK8E,gBAAgBG,S,GAI1CjF,KAAKc,KAAK0D,iBAAiB,gBAAiBQ,EAAQ,CAAEP,KAAM,OAC5DzE,KAAKc,KAAK0D,iBAAiB,kBAAmBQ,EAAQ,CAAEP,KAAM,OAE9DzE,KAAKc,KAAK0D,iBAAiB,gBAAiBH,EAAS,CACnDI,KAAM,OAERzE,KAAKc,KAAK0D,iBAAiB,kBAAmBH,EAAS,CACrDI,KAAM,MACN,G,CAoCNL,oBACEpE,KAAK2E,MAAQ,IAAIS,EAAMpF,KAAKc,MAC5Bd,KAAKqD,oBACLrD,KAAKc,KAAK0D,iBAAiB,QAASxE,KAAKqB,mBAEzC,GAAIrB,KAAKY,MAAO,CACdZ,KAAKC,cAAgB,KACrBD,KAAKY,MAAM4D,iBAAiB,gBAAiBxE,KAAKQ,oB,EAItD6E,uBACEC,EAAoBtF,KAAKc,MACzBd,KAAKc,KAAKyE,oBAAoB,QAASvF,KAAKqB,mBAE5CrB,KAAKC,cAAgB,MACrB,GAAID,KAAKY,MACPZ,KAAKY,MAAM2E,oBAAoB,gBAAiBvF,KAAKQ,oB,CAGzDgF,mBAEE,GAAIxF,KAAKgB,KAAM,CACbhB,KAAKmD,M,CAEP,IAAKnD,KAAKC,cAAe,CACvBD,KAAKY,MAAM4D,iBAAiB,gBAAiBxE,KAAKQ,oB,EAmDtDiF,SACE,OACEzD,EAAC0D,EAAI,CACHtD,MAAO,IAAKuD,EAAmB3F,KAAK4F,QACpCC,QAAS7F,KAAKiB,WAEbjB,KAAKuC,SAAW,CACfP,EAAA,OACEG,KAAK,UACLC,MAAO,CACL0D,eAAgB,KAChB,uBAAwB9F,KAAKgB,MAE/BiB,IAAM8D,GAAS/F,KAAKa,QAAUkF,IAEhC/D,EAAA,OACEI,MAAM,oBACNa,QAAU3B,IACR,IAAKA,EAAEX,OAAOqF,UAAUtB,SAAS,qBAAsB,OACvD1E,KAAKwC,UAAY,KACjBV,YAAW,IAAO9B,KAAKwC,UAAY,OAAQ,IAAI,GAGjDR,EAAChC,KAAK+B,MAAK,SAGb/B,KAAKuC,SAAWP,EAAChC,KAAK+B,MAAK,M"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as t,c as i,w as s,h as e,a as h,g as n}from"./index-9695db0a.js";import{C as l}from"./component-store-f7eb0a56.js";import{W as o}from"./algolia-data-1b42827c.js";import"./throttle-ac4fcefa.js";const r=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:none}:host ::slotted([slot=filter-template]){display:none !important}:host(.show-filter){display:block}";const a=class{constructor(s){t(this,s);this.nanoFilterChanged=i(this,"nanoFilterChanged",7);this.nanoTplUpdated=i(this,"nanoTplUpdated",7);this.filterId=null;this.tplWillRnder=new Promise((t=>{this.tplDidRnder=t}));this.changeEvent=undefined;this.internalValue=[undefined];this.showFilter=false;this.indexResults=null;this.filterChanged=null;this.facets=undefined;this.tplRenderFn=undefined;this.globalStoreMethod=undefined;this.filterName=null;this.value="";this.operator="or";this.storeId=undefined;this.storeMethod="session"}valueSet(){const t=this.value;let i;if(typeof t==="string")i=t.length?t.split("|"):[];else i=this.value;if(this.didValueChange(i)){const t=this.setFieldValues(i);if(t&&t.length)this.internalValue=i;else{this.tplWillRnder.then((t=>{this.setFieldValues(i);this.internalValue=i}))}}}valueChanged(){this.value=this.internalValue;this.nanoFilterChanged.emit({filterId:this.filterId,facetName:this.filterName,value:this.internalValue,operator:this.operator})}appliedFilterChanged(){if(this.filterName&&this.filterChanged&&(this.filterChanged!==this.filterId||this.operator==="and")){this.updateContent()}}tplUpdate(){this.updateContent()}handleFilterChange(){if(this.indexResults&&this.indexResults.appliedFilters){const t=this.indexResults.appliedFilters.find((t=>t.name===this.filterName));if(!t)return;this.tplWillRnder.then((i=>{const s=this.setFieldValues(t.values);if(s&&s.length)this.value=s}))}this.updateContent()}handleChangeEvent(){const t=this.getFieldValues();if(this.didValueChange(t)){this.internalValue=t;return true}return false}updateContent(){const t=this.outputSlot||this.outputEle;if(!this.el)return;if(!this.templateStr)this.showFilter=true;else if(!this.filterName||!t||this.templateStr&&(!this.indexResults||!this.indexResults.origFilters[this.filterName])){this.showFilter=false}if(!t)return;if(!this.indexResults){if(this.templateStr){s((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:{},dyn:{},selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});if(!this.value||!this.value.length)this.handleChangeEvent()}))}else if(!this.value||!this.value.length)this.handleChangeEvent();return}s((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:Object.assign({},this.indexResults.origFilters[this.filterName]),dyn:Object.assign({},this.indexResults.dynFilters[this.filterName]),selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});this.tplDidRnder();this.setFieldValues();if(!this.showFilter)this.showFilter=true;this.nanoTplUpdated.emit(this.el)}))}getFieldValues(){const t=[];const i=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select');for(let s=0;s<i.length;s++){const e=i[s];if(e.type==="select-multiple"){const i=e;for(let s=0;s<i.options.length;s++){if(!i.options[s].selected||!i.options[s].value.length)continue;t.push(i.options[s].value)}}else if(e.type!=="checkbox"&&e.type!=="radio"||e.checked&&e.value.length){t.push(e.value)}}return t}setFieldValues(t){t=t||this.internalValue;if(!t)return;const i=[];const s=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select, nano-select, nano-checkbox');for(let e=0;e<s.length;e++){const h=s[e];if(h.disabled||h.type==="file"||h.type==="reset"||h.type==="submit"||h.type==="button")continue;if(h.type==="select-multiple"||h.type==="select-one"){const s=h;for(let e=0;e<s.options.length;e++){if(!t.includes(s.options[e].value))s.options[e].selected=false;else{i.push(s.value);s.options[e].selected=true;if(h.type==="select-one")s.value=s.options[e].value}}}else if(["checkbox","radio","tag","segment","segment-pill"].includes(h.type)){if(t.includes(h.value)){i.push(h.value);h.checked=true}else if(!t.length&&!h.value.length){h.checked=true}else h.checked=false}}return i}didValueChange(t){if(!!this.internalValue&&!t)return true;if(!this.internalValue&&!t)return false;if(this.internalValue&&t.length!==this.internalValue.length)return true;let i=false;for(let s=0;s<t.length;s++){if(!i&&(!this.internalValue||!this.internalValue.includes(t[s])))i=true}return i}connectedCallback(){this.templateSlot=this.el.querySelector('[slot="filter-template"]');this.outputSlot=this.el.querySelector('[slot="output"]');this.filterId=this.filterName+"_"+f++;if(!!this.templateSlot){this.templateStr=this.templateSlot.innerHTML;this.templateStr=this.templateStr.replace(/=&gt;/gm,"=>")}}componentWillLoad(){if(this.storeId)l.init(this,["value"],this.storeMethod||this.globalStoreMethod,this.storeId)}componentDidLoad(){this.updateContent();if(this.templateStr&&this.filterName&&this.indexResults&&this.indexResults.origFilters[this.filterName])this.showFilter=true}render(){return e(h,{class:{"show-filter":this.showFilter}},e("div",{ref:t=>this.outputEle=t},e("slot",{name:"output"})))}get el(){return n(this)}static get watchers(){return{value:["valueSet"],internalValue:["valueChanged"],facets:["appliedFilterChanged"],tplRenderFn:["tplUpdate"],indexResults:["handleFilterChange"]}}};o(a,["globalStoreMethod","indexResults","filterChanged","facets","tplRenderFn","changeEvent"]);let f=0;a.style=r;export{a as nano_algolia_filter};
4
+ import{r as t,c as i,w as s,h as e,a as h,g as n}from"./index-9695db0a.js";import{C as l}from"./component-store-486d9d7a.js";import{W as o}from"./algolia-data-1b42827c.js";import"./throttle-ac4fcefa.js";const r=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:none}:host ::slotted([slot=filter-template]){display:none !important}:host(.show-filter){display:block}";const a=class{constructor(s){t(this,s);this.nanoFilterChanged=i(this,"nanoFilterChanged",7);this.nanoTplUpdated=i(this,"nanoTplUpdated",7);this.filterId=null;this.tplWillRnder=new Promise((t=>{this.tplDidRnder=t}));this.changeEvent=undefined;this.internalValue=[undefined];this.showFilter=false;this.indexResults=null;this.filterChanged=null;this.facets=undefined;this.tplRenderFn=undefined;this.globalStoreMethod=undefined;this.filterName=null;this.value="";this.operator="or";this.storeId=undefined;this.storeMethod="session"}valueSet(){const t=this.value;let i;if(typeof t==="string")i=t.length?t.split("|"):[];else i=this.value;if(this.didValueChange(i)){const t=this.setFieldValues(i);if(t&&t.length)this.internalValue=i;else{this.tplWillRnder.then((t=>{this.setFieldValues(i);this.internalValue=i}))}}}valueChanged(){this.value=this.internalValue;this.nanoFilterChanged.emit({filterId:this.filterId,facetName:this.filterName,value:this.internalValue,operator:this.operator})}appliedFilterChanged(){if(this.filterName&&this.filterChanged&&(this.filterChanged!==this.filterId||this.operator==="and")){this.updateContent()}}tplUpdate(){this.updateContent()}handleFilterChange(){if(this.indexResults&&this.indexResults.appliedFilters){const t=this.indexResults.appliedFilters.find((t=>t.name===this.filterName));if(!t)return;this.tplWillRnder.then((i=>{const s=this.setFieldValues(t.values);if(s&&s.length)this.value=s}))}this.updateContent()}handleChangeEvent(){const t=this.getFieldValues();if(this.didValueChange(t)){this.internalValue=t;return true}return false}updateContent(){const t=this.outputSlot||this.outputEle;if(!this.el)return;if(!this.templateStr)this.showFilter=true;else if(!this.filterName||!t||this.templateStr&&(!this.indexResults||!this.indexResults.origFilters[this.filterName])){this.showFilter=false}if(!t)return;if(!this.indexResults){if(this.templateStr){s((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:{},dyn:{},selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});if(!this.value||!this.value.length)this.handleChangeEvent()}))}else if(!this.value||!this.value.length)this.handleChangeEvent();return}s((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:{...this.indexResults.origFilters[this.filterName]},dyn:{...this.indexResults.dynFilters[this.filterName]},selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});this.tplDidRnder();this.setFieldValues();if(!this.showFilter)this.showFilter=true;this.nanoTplUpdated.emit(this.el)}))}getFieldValues(){const t=[];const i=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select');for(let s=0;s<i.length;s++){const e=i[s];if(e.type==="select-multiple"){const i=e;for(let s=0;s<i.options.length;s++){if(!i.options[s].selected||!i.options[s].value.length)continue;t.push(i.options[s].value)}}else if(e.type!=="checkbox"&&e.type!=="radio"||e.checked&&e.value.length){t.push(e.value)}}return t}setFieldValues(t){t=t||this.internalValue;if(!t)return;const i=[];const s=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select, nano-select, nano-checkbox');for(let e=0;e<s.length;e++){const h=s[e];if(h.disabled||h.type==="file"||h.type==="reset"||h.type==="submit"||h.type==="button")continue;if(h.type==="select-multiple"||h.type==="select-one"){const s=h;for(let e=0;e<s.options.length;e++){if(!t.includes(s.options[e].value))s.options[e].selected=false;else{i.push(s.value);s.options[e].selected=true;if(h.type==="select-one")s.value=s.options[e].value}}}else if(["checkbox","radio","tag","segment","segment-pill"].includes(h.type)){if(t.includes(h.value)){i.push(h.value);h.checked=true}else if(!t.length&&!h.value.length){h.checked=true}else h.checked=false}}return i}didValueChange(t){if(!!this.internalValue&&!t)return true;if(!this.internalValue&&!t)return false;if(this.internalValue&&t.length!==this.internalValue.length)return true;let i=false;for(let s=0;s<t.length;s++){if(!i&&(!this.internalValue||!this.internalValue.includes(t[s])))i=true}return i}connectedCallback(){this.templateSlot=this.el.querySelector('[slot="filter-template"]');this.outputSlot=this.el.querySelector('[slot="output"]');this.filterId=this.filterName+"_"+f++;if(!!this.templateSlot){this.templateStr=this.templateSlot.innerHTML;this.templateStr=this.templateStr.replace(/=&gt;/gm,"=>")}}componentWillLoad(){if(this.storeId)l.init(this,["value"],this.storeMethod||this.globalStoreMethod,this.storeId)}componentDidLoad(){this.updateContent();if(this.templateStr&&this.filterName&&this.indexResults&&this.indexResults.origFilters[this.filterName])this.showFilter=true}render(){return e(h,{class:{"show-filter":this.showFilter}},e("div",{ref:t=>this.outputEle=t},e("slot",{name:"output"})))}get el(){return n(this)}static get watchers(){return{value:["valueSet"],internalValue:["valueChanged"],facets:["appliedFilterChanged"],tplRenderFn:["tplUpdate"],indexResults:["handleFilterChange"]}}};o(a,["globalStoreMethod","indexResults","filterChanged","facets","tplRenderFn","changeEvent"]);let f=0;a.style=r;export{a as nano_algolia_filter};
5
5
  //# sourceMappingURL=nano-algolia-filter.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["algoliaFilterCss","AlgoliaFilter","this","filterId","tplWillRnder","Promise","resolve","tplDidRnder","undefined","valueSet","valStr","value","vals","length","split","didValueChange","foundVals","setFieldValues","internalValue","then","_","valueChanged","nanoFilterChanged","emit","facetName","filterName","operator","appliedFilterChanged","filterChanged","updateContent","tplUpdate","handleFilterChange","indexResults","appliedFilters","foundValue","find","filter","name","values","handleChangeEvent","getFieldValues","outputTo","outputSlot","outputEle","el","templateStr","showFilter","origFilters","writeTask","innerHTML","tplRenderFn","orig","dyn","selected","Object","assign","dynFilters","nanoTplUpdated","fields","querySelectorAll","i","field","type","select","n","options","push","checked","found","disabled","includes","newVal","hasChanged","connectedCallback","templateSlot","querySelector","filterIds","replace","componentWillLoad","storeId","ComponentStore","init","storeMethod","globalStoreMethod","componentDidLoad","render","h","Host","class","ref","div","Wormhole"],"sources":["./src/components/algolia/algolia-filter.scss?tag=nano-algolia-filter&encapsulation=shadow","./src/components/algolia/algolia-filter.tsx"],"sourcesContent":[":host {\n display: none;\n\n ::slotted([slot='filter-template']) {\n display: none !important;\n }\n}\n\n:host(.show-filter) {\n display: block;\n}\n","import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n EventEmitter,\n Event,\n writeTask,\n Listen,\n} from '@stencil/core';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport {\n SearchChangeEvent,\n Wormhole,\n WormholeConsumerConstructor,\n} from '../algolia/algolia-data';\nimport type {\n IndexResult,\n FilterChangeEventDetail,\n AlgoliaFacet,\n} from '../../interface';\n\n/**\n * Displays and syncs algolia filters\n * Must be nested within an nano-algolia component.\n * @slot filter-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot output - A placeholder for template output.\n */\n@Component({\n tag: 'nano-algolia-filter',\n shadow: true,\n styleUrl: 'algolia-filter.scss',\n})\nexport class AlgoliaFilter {\n @Element() el: HTMLNanoAlgoliaFilterElement;\n\n private templateStr: string;\n private templateSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private outputEle: HTMLElement;\n private filterId: string = null;\n private tplDidRnder;\n private tplWillRnder = new Promise((resolve) => {\n this.tplDidRnder = resolve;\n });\n\n @State() changeEvent: SearchChangeEvent;\n @State() internalValue: Array<string> = [undefined];\n @State() showFilter: boolean = false;\n @State() indexResults: IndexResult = null;\n @State() filterChanged: string = null;\n @State() facets: AlgoliaFacet;\n @State() tplRenderFn: (...args: any[]) => any;\n @State() globalStoreMethod: StorageMethods;\n\n /**\n * Name of this filter - must match an appropriate algolia facet on a parent nano-algolia index to display\n */\n @Prop() filterName: string = null;\n\n /**\n * Set values of this filter. Will result in form elements being selected. '|' delimited string or array.\n */\n @Prop({ mutable: true }) value: string | Array<string> = '';\n\n /**\n * The internal operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'or';\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n /**\n * Emitted when the filter value changes\n */\n @Event() nanoFilterChanged!: EventEmitter<FilterChangeEventDetail>;\n\n /**\n * Emitted when templates are updated\n */\n @Event() nanoTplUpdated!: EventEmitter<HTMLNanoAlgoliaFilterElement>;\n\n // Public facing. When changed attempts to 'check' any relevant fields in the template.\n @Watch('value')\n valueSet() {\n const valStr = this.value as string;\n let vals;\n\n if (typeof valStr === 'string')\n vals = valStr.length ? valStr.split('|') : [];\n else vals = this.value as Array<string>;\n\n if (this.didValueChange(vals)) {\n const foundVals = this.setFieldValues(vals);\n // found in template, set the internal state (this emits the changed event)\n if (foundVals && foundVals.length) this.internalValue = vals;\n // not found in template, wait for it to render.\n else {\n this.tplWillRnder.then((_) => {\n this.setFieldValues(vals);\n this.internalValue = vals;\n });\n }\n }\n }\n\n // Value has changed and is reflected in template. Emit event.\n @Watch('internalValue')\n valueChanged() {\n this.value = this.internalValue;\n this.nanoFilterChanged.emit({\n filterId: this.filterId,\n facetName: this.filterName,\n value: this.internalValue,\n operator: this.operator,\n });\n }\n\n // New facets from algolia. Update template\n @Watch('facets')\n appliedFilterChanged() {\n if (\n this.filterName &&\n this.filterChanged &&\n (this.filterChanged !== this.filterId || this.operator === 'and')\n ) {\n this.updateContent();\n }\n }\n\n @Watch('tplRenderFn')\n tplUpdate() {\n this.updateContent();\n }\n\n @Watch('indexResults')\n handleFilterChange() {\n if (this.indexResults && this.indexResults.appliedFilters) {\n const foundValue = this.indexResults.appliedFilters.find(\n (filter) => filter.name === this.filterName\n );\n if (!foundValue) return;\n\n this.tplWillRnder.then((_) => {\n const foundVals = this.setFieldValues(foundValue.values);\n if (foundVals && foundVals.length) this.value = foundVals;\n });\n }\n this.updateContent();\n }\n\n @Listen('nanoChange')\n @Listen('change')\n handleChangeEvent() {\n const vals = this.getFieldValues();\n if (this.didValueChange(vals)) {\n this.internalValue = vals;\n return true;\n }\n return false;\n }\n\n private updateContent() {\n const outputTo = this.outputSlot || this.outputEle;\n if (!this.el) return;\n\n // there's no template so show output right away\n if (!this.templateStr) this.showFilter = true;\n // there's a template but no index set so hide filters atm\n else if (\n !this.filterName ||\n !outputTo ||\n (this.templateStr &&\n (!this.indexResults || !this.indexResults.origFilters[this.filterName]))\n ) {\n this.showFilter = false;\n }\n\n // there's no output element so nothing else to do\n if (!outputTo) return;\n\n // there's no index set atm but get any static filter values so we can apply them\n if (!this.indexResults) {\n if (this.templateStr) {\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: {},\n dyn: {},\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n if (!this.value || !this.value.length) this.handleChangeEvent();\n });\n } else if (!this.value || !this.value.length) this.handleChangeEvent();\n return;\n }\n\n // everything is in place - render as normal and set values\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: { ...this.indexResults.origFilters[this.filterName] },\n dyn: { ...this.indexResults.dynFilters[this.filterName] },\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n this.tplDidRnder();\n this.setFieldValues();\n\n if (!this.showFilter) this.showFilter = true;\n this.nanoTplUpdated.emit(this.el);\n });\n }\n\n // go through form elements and extract their current value\n private getFieldValues() {\n const values = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n // If a multi-select, get all selections\n if (field.type === 'select-multiple') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!select.options[n].selected || !select.options[n].value.length)\n continue;\n values.push(select.options[n].value);\n }\n } else if (\n (field.type !== 'checkbox' && field.type !== 'radio') ||\n (field.checked && field.value.length)\n ) {\n values.push(field.value);\n }\n }\n return values;\n }\n\n // go through form elements and select / check them as appropriate\n private setFieldValues(vals?: string[]): void | string[] {\n vals = vals || this.internalValue;\n if (!vals) return;\n\n const found = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select, nano-select, nano-checkbox'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n if (\n field.disabled ||\n field.type === 'file' ||\n field.type === 'reset' ||\n field.type === 'submit' ||\n field.type === 'button'\n )\n continue;\n\n if (field.type === 'select-multiple' || field.type === 'select-one') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!vals.includes(select.options[n].value))\n select.options[n].selected = false;\n else {\n found.push(select.value);\n select.options[n].selected = true;\n if (field.type === 'select-one')\n select.value = select.options[n].value;\n }\n }\n } else if (\n ['checkbox', 'radio', 'tag', 'segment', 'segment-pill'].includes(\n field.type\n )\n ) {\n if (vals.includes(field.value)) {\n found.push(field.value);\n field.checked = true;\n } else if (!vals.length && !field.value.length) {\n field.checked = true;\n } else field.checked = false;\n }\n }\n return found;\n }\n\n private didValueChange(newVal: Array<string>) {\n if (!!this.internalValue && !newVal) return true;\n if (!this.internalValue && !newVal) return false;\n if (this.internalValue && newVal.length !== this.internalValue.length)\n return true;\n\n let hasChanged = false;\n for (let i = 0; i < newVal.length; i++) {\n if (\n !hasChanged &&\n (!this.internalValue || !this.internalValue.includes(newVal[i]))\n )\n hasChanged = true;\n }\n return hasChanged;\n }\n\n connectedCallback() {\n this.templateSlot = this.el.querySelector('[slot=\"filter-template\"]');\n this.outputSlot = this.el.querySelector('[slot=\"output\"]');\n this.filterId = this.filterName + '_' + filterIds++;\n\n if (!!this.templateSlot) {\n this.templateStr = this.templateSlot.innerHTML;\n this.templateStr = this.templateStr.replace(/=&gt;/gm, '=>');\n }\n }\n\n componentWillLoad() {\n if (this.storeId)\n ComponentStore.init(\n this,\n ['value'],\n this.storeMethod || this.globalStoreMethod,\n this.storeId\n );\n }\n\n componentDidLoad() {\n this.updateContent();\n\n if (\n this.templateStr &&\n this.filterName &&\n this.indexResults &&\n this.indexResults.origFilters[this.filterName]\n )\n this.showFilter = true;\n }\n\n render() {\n return (\n <Host\n class={{\n 'show-filter': this.showFilter,\n }}\n >\n <div ref={(div) => (this.outputEle = div)}>\n <slot name=\"output\" />\n </div>\n </Host>\n );\n }\n}\n\nWormhole(AlgoliaFilter as WormholeConsumerConstructor, [\n 'globalStoreMethod',\n 'indexResults',\n 'filterChanged',\n 'facets',\n 'tplRenderFn',\n 'changeEvent',\n]);\nlet filterIds = 0;\n"],"mappings":";;;2MAAA,MAAMA,EAAmB,gO,MCuCZC,EAAa,M,6HAOhBC,KAAAC,SAAmB,KAEnBD,KAAAE,aAAe,IAAIC,SAASC,IAClCJ,KAAKK,YAAcD,CAAO,I,8CAIY,CAACE,W,gBACV,M,kBACM,K,mBACJ,K,kGAQJ,K,WAK4B,G,cAKxB,K,wCAYK,S,CActCC,WACE,MAAMC,EAASR,KAAKS,MACpB,IAAIC,EAEJ,UAAWF,IAAW,SACpBE,EAAOF,EAAOG,OAASH,EAAOI,MAAM,KAAO,QACxCF,EAAOV,KAAKS,MAEjB,GAAIT,KAAKa,eAAeH,GAAO,CAC7B,MAAMI,EAAYd,KAAKe,eAAeL,GAEtC,GAAII,GAAaA,EAAUH,OAAQX,KAAKgB,cAAgBN,MAEnD,CACHV,KAAKE,aAAae,MAAMC,IACtBlB,KAAKe,eAAeL,GACpBV,KAAKgB,cAAgBN,CAAI,G,GAQjCS,eACEnB,KAAKS,MAAQT,KAAKgB,cAClBhB,KAAKoB,kBAAkBC,KAAK,CAC1BpB,SAAUD,KAAKC,SACfqB,UAAWtB,KAAKuB,WAChBd,MAAOT,KAAKgB,cACZQ,SAAUxB,KAAKwB,U,CAMnBC,uBACE,GACEzB,KAAKuB,YACLvB,KAAK0B,gBACJ1B,KAAK0B,gBAAkB1B,KAAKC,UAAYD,KAAKwB,WAAa,OAC3D,CACAxB,KAAK2B,e,EAKTC,YACE5B,KAAK2B,e,CAIPE,qBACE,GAAI7B,KAAK8B,cAAgB9B,KAAK8B,aAAaC,eAAgB,CACzD,MAAMC,EAAahC,KAAK8B,aAAaC,eAAeE,MACjDC,GAAWA,EAAOC,OAASnC,KAAKuB,aAEnC,IAAKS,EAAY,OAEjBhC,KAAKE,aAAae,MAAMC,IACtB,MAAMJ,EAAYd,KAAKe,eAAeiB,EAAWI,QACjD,GAAItB,GAAaA,EAAUH,OAAQX,KAAKS,MAAQK,CAAS,G,CAG7Dd,KAAK2B,e,CAKPU,oBACE,MAAM3B,EAAOV,KAAKsC,iBAClB,GAAItC,KAAKa,eAAeH,GAAO,CAC7BV,KAAKgB,cAAgBN,EACrB,OAAO,I,CAET,OAAO,K,CAGDiB,gBACN,MAAMY,EAAWvC,KAAKwC,YAAcxC,KAAKyC,UACzC,IAAKzC,KAAK0C,GAAI,OAGd,IAAK1C,KAAK2C,YAAa3C,KAAK4C,WAAa,UAEpC,IACF5C,KAAKuB,aACLgB,GACAvC,KAAK2C,eACF3C,KAAK8B,eAAiB9B,KAAK8B,aAAae,YAAY7C,KAAKuB,aAC7D,CACAvB,KAAK4C,WAAa,K,CAIpB,IAAKL,EAAU,OAGf,IAAKvC,KAAK8B,aAAc,CACtB,GAAI9B,KAAK2C,YAAa,CACpBG,GAAU,KACRP,EAASQ,UAAY/C,KAAKgD,YAAYhD,KAAK2C,YAAa,CACtDM,KAAM,GACNC,IAAK,GACLC,SACEnD,KAAKgB,eAAiBhB,KAAKgB,cAAcL,OACrCX,KAAKgB,cACLhB,KAAKS,QAEb,IAAKT,KAAKS,QAAUT,KAAKS,MAAME,OAAQX,KAAKqC,mBAAmB,G,MAE5D,IAAKrC,KAAKS,QAAUT,KAAKS,MAAME,OAAQX,KAAKqC,oBACnD,M,CAIFS,GAAU,KACRP,EAASQ,UAAY/C,KAAKgD,YAAYhD,KAAK2C,YAAa,CACtDM,KAAIG,OAAAC,OAAA,GAAOrD,KAAK8B,aAAae,YAAY7C,KAAKuB,aAC9C2B,IAAGE,OAAAC,OAAA,GAAOrD,KAAK8B,aAAawB,WAAWtD,KAAKuB,aAC5C4B,SACEnD,KAAKgB,eAAiBhB,KAAKgB,cAAcL,OACrCX,KAAKgB,cACLhB,KAAKS,QAEbT,KAAKK,cACLL,KAAKe,iBAEL,IAAKf,KAAK4C,WAAY5C,KAAK4C,WAAa,KACxC5C,KAAKuD,eAAelC,KAAKrB,KAAK0C,GAAG,G,CAK7BJ,iBACN,MAAMF,EAAS,GACf,MAAMoB,EAASxD,KAAKwC,WAAWiB,iBAC7B,uDAGF,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAO7C,OAAQ+C,IAAK,CACtC,MAAMC,EAAQH,EAAOE,GAGrB,GAAIC,EAAMC,OAAS,kBAAmB,CACpC,MAAMC,EAA4BF,EAClC,IAAK,IAAIG,EAAI,EAAGA,EAAID,EAAOE,QAAQpD,OAAQmD,IAAK,CAC9C,IAAKD,EAAOE,QAAQD,GAAGX,WAAaU,EAAOE,QAAQD,GAAGrD,MAAME,OAC1D,SACFyB,EAAO4B,KAAKH,EAAOE,QAAQD,GAAGrD,M,OAE3B,GACJkD,EAAMC,OAAS,YAAcD,EAAMC,OAAS,SAC5CD,EAAMM,SAAWN,EAAMlD,MAAME,OAC9B,CACAyB,EAAO4B,KAAKL,EAAMlD,M,EAGtB,OAAO2B,C,CAIDrB,eAAeL,GACrBA,EAAOA,GAAQV,KAAKgB,cACpB,IAAKN,EAAM,OAEX,MAAMwD,EAAQ,GACd,MAAMV,EAASxD,KAAKwC,WAAWiB,iBAC7B,mFAGF,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAO7C,OAAQ+C,IAAK,CACtC,MAAMC,EAAQH,EAAOE,GAErB,GACEC,EAAMQ,UACNR,EAAMC,OAAS,QACfD,EAAMC,OAAS,SACfD,EAAMC,OAAS,UACfD,EAAMC,OAAS,SAEf,SAEF,GAAID,EAAMC,OAAS,mBAAqBD,EAAMC,OAAS,aAAc,CACnE,MAAMC,EAA4BF,EAClC,IAAK,IAAIG,EAAI,EAAGA,EAAID,EAAOE,QAAQpD,OAAQmD,IAAK,CAC9C,IAAKpD,EAAK0D,SAASP,EAAOE,QAAQD,GAAGrD,OACnCoD,EAAOE,QAAQD,GAAGX,SAAW,UAC1B,CACHe,EAAMF,KAAKH,EAAOpD,OAClBoD,EAAOE,QAAQD,GAAGX,SAAW,KAC7B,GAAIQ,EAAMC,OAAS,aACjBC,EAAOpD,MAAQoD,EAAOE,QAAQD,GAAGrD,K,QAGlC,GACL,CAAC,WAAY,QAAS,MAAO,UAAW,gBAAgB2D,SACtDT,EAAMC,MAER,CACA,GAAIlD,EAAK0D,SAAST,EAAMlD,OAAQ,CAC9ByD,EAAMF,KAAKL,EAAMlD,OACjBkD,EAAMM,QAAU,I,MACX,IAAKvD,EAAKC,SAAWgD,EAAMlD,MAAME,OAAQ,CAC9CgD,EAAMM,QAAU,I,MACXN,EAAMM,QAAU,K,EAG3B,OAAOC,C,CAGDrD,eAAewD,GACrB,KAAMrE,KAAKgB,gBAAkBqD,EAAQ,OAAO,KAC5C,IAAKrE,KAAKgB,gBAAkBqD,EAAQ,OAAO,MAC3C,GAAIrE,KAAKgB,eAAiBqD,EAAO1D,SAAWX,KAAKgB,cAAcL,OAC7D,OAAO,KAET,IAAI2D,EAAa,MACjB,IAAK,IAAIZ,EAAI,EAAGA,EAAIW,EAAO1D,OAAQ+C,IAAK,CACtC,IACGY,KACCtE,KAAKgB,gBAAkBhB,KAAKgB,cAAcoD,SAASC,EAAOX,KAE5DY,EAAa,I,CAEjB,OAAOA,C,CAGTC,oBACEvE,KAAKwE,aAAexE,KAAK0C,GAAG+B,cAAc,4BAC1CzE,KAAKwC,WAAaxC,KAAK0C,GAAG+B,cAAc,mBACxCzE,KAAKC,SAAWD,KAAKuB,WAAa,IAAMmD,IAExC,KAAM1E,KAAKwE,aAAc,CACvBxE,KAAK2C,YAAc3C,KAAKwE,aAAazB,UACrC/C,KAAK2C,YAAc3C,KAAK2C,YAAYgC,QAAQ,UAAW,K,EAI3DC,oBACE,GAAI5E,KAAK6E,QACPC,EAAeC,KACb/E,KACA,CAAC,SACDA,KAAKgF,aAAehF,KAAKiF,kBACzBjF,KAAK6E,Q,CAIXK,mBACElF,KAAK2B,gBAEL,GACE3B,KAAK2C,aACL3C,KAAKuB,YACLvB,KAAK8B,cACL9B,KAAK8B,aAAae,YAAY7C,KAAKuB,YAEnCvB,KAAK4C,WAAa,I,CAGtBuC,SACE,OACEC,EAACC,EAAI,CACHC,MAAO,CACL,cAAetF,KAAK4C,aAGtBwC,EAAA,OAAKG,IAAMC,GAASxF,KAAKyC,UAAY+C,GACnCJ,EAAA,QAAMjD,KAAK,Y,yMAOrBsD,EAAS1F,EAA8C,CACrD,oBACA,eACA,gBACA,SACA,cACA,gBAEF,IAAI2E,EAAY,E"}
1
+ {"version":3,"names":["algoliaFilterCss","AlgoliaFilter","this","filterId","tplWillRnder","Promise","resolve","tplDidRnder","undefined","valueSet","valStr","value","vals","length","split","didValueChange","foundVals","setFieldValues","internalValue","then","_","valueChanged","nanoFilterChanged","emit","facetName","filterName","operator","appliedFilterChanged","filterChanged","updateContent","tplUpdate","handleFilterChange","indexResults","appliedFilters","foundValue","find","filter","name","values","handleChangeEvent","getFieldValues","outputTo","outputSlot","outputEle","el","templateStr","showFilter","origFilters","writeTask","innerHTML","tplRenderFn","orig","dyn","selected","dynFilters","nanoTplUpdated","fields","querySelectorAll","i","field","type","select","n","options","push","checked","found","disabled","includes","newVal","hasChanged","connectedCallback","templateSlot","querySelector","filterIds","replace","componentWillLoad","storeId","ComponentStore","init","storeMethod","globalStoreMethod","componentDidLoad","render","h","Host","class","ref","div","Wormhole"],"sources":["./src/components/algolia/algolia-filter.scss?tag=nano-algolia-filter&encapsulation=shadow","./src/components/algolia/algolia-filter.tsx"],"sourcesContent":[":host {\n display: none;\n\n ::slotted([slot='filter-template']) {\n display: none !important;\n }\n}\n\n:host(.show-filter) {\n display: block;\n}\n","import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n EventEmitter,\n Event,\n writeTask,\n Listen,\n} from '@stencil/core';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport {\n SearchChangeEvent,\n Wormhole,\n WormholeConsumerConstructor,\n} from '../algolia/algolia-data';\nimport type {\n IndexResult,\n FilterChangeEventDetail,\n AlgoliaFacet,\n} from '../../interface';\n\n/**\n * Displays and syncs algolia filters\n * Must be nested within an nano-algolia component.\n * @slot filter-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot output - A placeholder for template output.\n */\n@Component({\n tag: 'nano-algolia-filter',\n shadow: true,\n styleUrl: 'algolia-filter.scss',\n})\nexport class AlgoliaFilter {\n @Element() el: HTMLNanoAlgoliaFilterElement;\n\n private templateStr: string;\n private templateSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private outputEle: HTMLElement;\n private filterId: string = null;\n private tplDidRnder;\n private tplWillRnder = new Promise((resolve) => {\n this.tplDidRnder = resolve;\n });\n\n @State() changeEvent: SearchChangeEvent;\n @State() internalValue: Array<string> = [undefined];\n @State() showFilter: boolean = false;\n @State() indexResults: IndexResult = null;\n @State() filterChanged: string = null;\n @State() facets: AlgoliaFacet;\n @State() tplRenderFn: (...args: any[]) => any;\n @State() globalStoreMethod: StorageMethods;\n\n /**\n * Name of this filter - must match an appropriate algolia facet on a parent nano-algolia index to display\n */\n @Prop() filterName: string = null;\n\n /**\n * Set values of this filter. Will result in form elements being selected. '|' delimited string or array.\n */\n @Prop({ mutable: true }) value: string | Array<string> = '';\n\n /**\n * The internal operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'or';\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n /**\n * Emitted when the filter value changes\n */\n @Event() nanoFilterChanged!: EventEmitter<FilterChangeEventDetail>;\n\n /**\n * Emitted when templates are updated\n */\n @Event() nanoTplUpdated!: EventEmitter<HTMLNanoAlgoliaFilterElement>;\n\n // Public facing. When changed attempts to 'check' any relevant fields in the template.\n @Watch('value')\n valueSet() {\n const valStr = this.value as string;\n let vals;\n\n if (typeof valStr === 'string')\n vals = valStr.length ? valStr.split('|') : [];\n else vals = this.value as Array<string>;\n\n if (this.didValueChange(vals)) {\n const foundVals = this.setFieldValues(vals);\n // found in template, set the internal state (this emits the changed event)\n if (foundVals && foundVals.length) this.internalValue = vals;\n // not found in template, wait for it to render.\n else {\n this.tplWillRnder.then((_) => {\n this.setFieldValues(vals);\n this.internalValue = vals;\n });\n }\n }\n }\n\n // Value has changed and is reflected in template. Emit event.\n @Watch('internalValue')\n valueChanged() {\n this.value = this.internalValue;\n this.nanoFilterChanged.emit({\n filterId: this.filterId,\n facetName: this.filterName,\n value: this.internalValue,\n operator: this.operator,\n });\n }\n\n // New facets from algolia. Update template\n @Watch('facets')\n appliedFilterChanged() {\n if (\n this.filterName &&\n this.filterChanged &&\n (this.filterChanged !== this.filterId || this.operator === 'and')\n ) {\n this.updateContent();\n }\n }\n\n @Watch('tplRenderFn')\n tplUpdate() {\n this.updateContent();\n }\n\n @Watch('indexResults')\n handleFilterChange() {\n if (this.indexResults && this.indexResults.appliedFilters) {\n const foundValue = this.indexResults.appliedFilters.find(\n (filter) => filter.name === this.filterName\n );\n if (!foundValue) return;\n\n this.tplWillRnder.then((_) => {\n const foundVals = this.setFieldValues(foundValue.values);\n if (foundVals && foundVals.length) this.value = foundVals;\n });\n }\n this.updateContent();\n }\n\n @Listen('nanoChange')\n @Listen('change')\n handleChangeEvent() {\n const vals = this.getFieldValues();\n if (this.didValueChange(vals)) {\n this.internalValue = vals;\n return true;\n }\n return false;\n }\n\n private updateContent() {\n const outputTo = this.outputSlot || this.outputEle;\n if (!this.el) return;\n\n // there's no template so show output right away\n if (!this.templateStr) this.showFilter = true;\n // there's a template but no index set so hide filters atm\n else if (\n !this.filterName ||\n !outputTo ||\n (this.templateStr &&\n (!this.indexResults || !this.indexResults.origFilters[this.filterName]))\n ) {\n this.showFilter = false;\n }\n\n // there's no output element so nothing else to do\n if (!outputTo) return;\n\n // there's no index set atm but get any static filter values so we can apply them\n if (!this.indexResults) {\n if (this.templateStr) {\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: {},\n dyn: {},\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n if (!this.value || !this.value.length) this.handleChangeEvent();\n });\n } else if (!this.value || !this.value.length) this.handleChangeEvent();\n return;\n }\n\n // everything is in place - render as normal and set values\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: { ...this.indexResults.origFilters[this.filterName] },\n dyn: { ...this.indexResults.dynFilters[this.filterName] },\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n this.tplDidRnder();\n this.setFieldValues();\n\n if (!this.showFilter) this.showFilter = true;\n this.nanoTplUpdated.emit(this.el);\n });\n }\n\n // go through form elements and extract their current value\n private getFieldValues() {\n const values = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n // If a multi-select, get all selections\n if (field.type === 'select-multiple') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!select.options[n].selected || !select.options[n].value.length)\n continue;\n values.push(select.options[n].value);\n }\n } else if (\n (field.type !== 'checkbox' && field.type !== 'radio') ||\n (field.checked && field.value.length)\n ) {\n values.push(field.value);\n }\n }\n return values;\n }\n\n // go through form elements and select / check them as appropriate\n private setFieldValues(vals?: string[]): void | string[] {\n vals = vals || this.internalValue;\n if (!vals) return;\n\n const found = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select, nano-select, nano-checkbox'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n if (\n field.disabled ||\n field.type === 'file' ||\n field.type === 'reset' ||\n field.type === 'submit' ||\n field.type === 'button'\n )\n continue;\n\n if (field.type === 'select-multiple' || field.type === 'select-one') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!vals.includes(select.options[n].value))\n select.options[n].selected = false;\n else {\n found.push(select.value);\n select.options[n].selected = true;\n if (field.type === 'select-one')\n select.value = select.options[n].value;\n }\n }\n } else if (\n ['checkbox', 'radio', 'tag', 'segment', 'segment-pill'].includes(\n field.type\n )\n ) {\n if (vals.includes(field.value)) {\n found.push(field.value);\n field.checked = true;\n } else if (!vals.length && !field.value.length) {\n field.checked = true;\n } else field.checked = false;\n }\n }\n return found;\n }\n\n private didValueChange(newVal: Array<string>) {\n if (!!this.internalValue && !newVal) return true;\n if (!this.internalValue && !newVal) return false;\n if (this.internalValue && newVal.length !== this.internalValue.length)\n return true;\n\n let hasChanged = false;\n for (let i = 0; i < newVal.length; i++) {\n if (\n !hasChanged &&\n (!this.internalValue || !this.internalValue.includes(newVal[i]))\n )\n hasChanged = true;\n }\n return hasChanged;\n }\n\n connectedCallback() {\n this.templateSlot = this.el.querySelector('[slot=\"filter-template\"]');\n this.outputSlot = this.el.querySelector('[slot=\"output\"]');\n this.filterId = this.filterName + '_' + filterIds++;\n\n if (!!this.templateSlot) {\n this.templateStr = this.templateSlot.innerHTML;\n this.templateStr = this.templateStr.replace(/=&gt;/gm, '=>');\n }\n }\n\n componentWillLoad() {\n if (this.storeId)\n ComponentStore.init(\n this,\n ['value'],\n this.storeMethod || this.globalStoreMethod,\n this.storeId\n );\n }\n\n componentDidLoad() {\n this.updateContent();\n\n if (\n this.templateStr &&\n this.filterName &&\n this.indexResults &&\n this.indexResults.origFilters[this.filterName]\n )\n this.showFilter = true;\n }\n\n render() {\n return (\n <Host\n class={{\n 'show-filter': this.showFilter,\n }}\n >\n <div ref={(div) => (this.outputEle = div)}>\n <slot name=\"output\" />\n </div>\n </Host>\n );\n }\n}\n\nWormhole(AlgoliaFilter as WormholeConsumerConstructor, [\n 'globalStoreMethod',\n 'indexResults',\n 'filterChanged',\n 'facets',\n 'tplRenderFn',\n 'changeEvent',\n]);\nlet filterIds = 0;\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{g as t,e,r as i,c as s,w as n,d as r,h as o,a as l}from"./index-9695db0a.js";import{a as h}from"./algoliasearch-lite.esm.browser-d71a28dc.js";import{g as a}from"./dom-8599fac1.js";import{C as f}from"./component-store-f7eb0a56.js";import{d as c}from"./throttle-ac4fcefa.js";import{S as u}from"./algolia-data-1b42827c.js";var d=new Map;var p=function(t,e){var i=t.fields,s=t.updater;i.forEach((function(t){s(t,e[t])}))};var m={create:function(e,i){var s=t(e);var n=new Map;var r={wormholes:n,state:i};d.set(e,r);var o=e.connectedCallback;e.connectedCallback=function(){d.set(e,r);if(o){o.call(e)}};var l=e.disconnectedCallback;e.disconnectedCallback=function(){d.delete(e);if(l){l.call(e)}};s.addEventListener("openWormhole",(function(t){t.stopPropagation();var e=t.detail,i=e.consumer,s=e.onOpen;if(n.has(i))return;if(typeof i!=="symbol"){var o=i.connectedCallback,l=i.disconnectedCallback;i.connectedCallback=function(){n.set(i,t.detail);if(o){o.call(i)}};i.disconnectedCallback=function(){n.delete(i);if(l){l.call(i)}}}n.set(i,t.detail);p(t.detail,r.state);s===null||s===void 0?void 0:s.resolve((function(){n.delete(i)}))}));s.addEventListener("closeWormhole",(function(t){var e=t.detail;n.delete(e)}))},Provider:function(t,i){var s=t.state;var n=e();if(d.has(n)){var r=d.get(n);r.state=s;r.wormholes.forEach((function(t){p(t,s)}))}return i}};class g{constructor(){this.queue=[];this.workingOnPromise=false;this.stop=false;this.limit=null}enqueue(t){return new Promise(((e,i)=>{this.queue.push({promise:t,resolve:e,reject:i});this.dequeue()}))}dequeue(){if(this.workingOnPromise){return false}if(this.stop){this.queue=[];this.stop=false;return}const t=this.queue.shift();if(!t){return false}try{this.workingOnPromise=true;t.promise().then((e=>{this.workingOnPromise=false;t.resolve(e);this.dequeue()})).catch((e=>{this.workingOnPromise=false;t.reject(e);this.dequeue()}))}catch(e){this.workingOnPromise=false;t.reject(e);this.dequeue()}return true}}g.pendingPromise=false;function y(t,e){if(Object.setPrototypeOf){Object.setPrototypeOf(t,e)}else{t.__proto__=e}}function w(t){const e=new Error(t);y(e,w.prototype);return e}w.prototype=Object.create(Error.prototype,{name:{value:"Squirrelly Error",enumerable:false}});function b(t,e,i){const s=e.slice(0,i).split(/\n/);const n=s.length;const r=s[n-1].length+1;t+=" at line "+n+" col "+r+":\n\n"+" "+e.split(/\n/)[n-1]+"\n"+" "+Array(r).join(" ")+"^";throw w(t)}const v=new Function("return this")().Promise;let x=false;try{x=new Function("return (async function(){}).constructor")()}catch(t){if(!(t instanceof SyntaxError)){throw t}}function F(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function C(t,e,i){for(const s in e){if(F(e,s)){if(e[s]!=null&&typeof e[s]=="object"&&(s==="storage"||s==="prefixes")&&!i){t[s]=C({},e[s])}else{t[s]=e[s]}}}return t}function I(t,e,i,s){let n;let r;if(typeof e.autoTrim==="string"){n=r=e.autoTrim}else if(Array.isArray(e.autoTrim)){n=e.autoTrim[1];r=e.autoTrim[0]}if(i||i===false){n=i}if(s||s===false){r=s}if(n==="slurp"&&r==="slurp"){return t.trim()}if(n==="_"||n==="slurp"){if(!!String.prototype.trimLeft){t=t.trimLeft()}else{t=t.replace(/^[\s\uFEFF\xA0]+/,"")}}else if(n==="-"||n==="nl"){t=t.replace(/^(?:\n|\r|\r\n)/,"")}if(r==="_"||r==="slurp"){if(!!String.prototype.trimRight){t=t.trimRight()}else{t=t.replace(/[\s\uFEFF\xA0]+$/,"")}}else if(r==="-"||r==="nl"){t=t.replace(/(?:\n|\r|\r\n)$/,"")}return t}const S=/^async +/;const j=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g;const z=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g;const R=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g;const _=/[.*+\-?^${}()|[\]\\]/g;function A(t){return _.test(t)?t.replace(_,"\\$&"):t}function k(t,e){if(e.rmWhitespace){t=t.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")}j.lastIndex=0;z.lastIndex=0;R.lastIndex=0;const i=e.prefixes;const s=[i.h,i.b,i.i,i.r,i.c,i.e].reduce((function(t,e){if(t&&e){return t+"|"+A(e)}else if(e){return A(e)}else{return t}}),"");const n=new RegExp("([|()]|=>)|"+"('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?"+A(e.tags[1])+")","g");const r=new RegExp("([^]*?)"+A(e.tags[0])+"(-|_)?\\s*("+s+")?\\s*","g");let o=0;let l=false;function h(i,s){const h={f:[]};let a=0;let f="c";if(s==="h"||s==="b"||s==="c"){f="n"}else if(s==="r"){h.raw=true;s="i"}function c(i){const s=t.slice(o,i);let n=s.trim();if(f==="f"){if(n==="safe"){h.raw=true}else{if(e.async&&S.test(n)){n=n.replace(S,"");h.f.push([n,"",true])}else{h.f.push([n,""])}}}else if(f==="fp"){h.f[h.f.length-1][1]+=n}else if(f==="err"){if(n){const e=s.search(/\S/);b("invalid syntax",t,o+e)}}else{h[f]=n}o=i+1}n.lastIndex=o;let u;while((u=n.exec(t))!==null){const e=u[1];const i=u[2];const d=u[3];const p=u[4];const m=u[5];const g=u.index;if(e){if(e==="("){if(a===0){if(f==="n"){c(g);f="p"}else if(f==="f"){c(g);f="fp"}}a++}else if(e===")"){a--;if(a===0&&f!=="c"){c(g);f="err"}}else if(a===0&&e==="|"){c(g);f="f"}else if(e==="=>"){c(g);o+=1;f="res"}}else if(i){if(i==="/*"){const e=t.indexOf("*/",n.lastIndex);if(e===-1){b("unclosed comment",t,u.index)}n.lastIndex=e+2}else if(i==="'"){z.lastIndex=u.index;const e=z.exec(t);if(e){n.lastIndex=z.lastIndex}else{b("unclosed string",t,u.index)}}else if(i==='"'){R.lastIndex=u.index;const e=R.exec(t);if(e){n.lastIndex=R.lastIndex}else{b("unclosed string",t,u.index)}}else if(i==="`"){j.lastIndex=u.index;const e=j.exec(t);if(e){n.lastIndex=j.lastIndex}else{b("unclosed string",t,u.index)}}}else if(d){c(g);o=g+u[0].length;r.lastIndex=o;l=m;if(p&&s==="h"){s="s"}h.t=s;return h}}b("unclosed tag",t,i);return h}function a(s,n){s.b=[];s.d=[];let f=false;let c=[];function u(t,i){if(t){t=I(t,e,l,i);if(t){t=t.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n");c.push(t)}}}let d;while((d=r.exec(t))!==null){const n=d[1];const r=d[2];const l=d[3]||"";let p;for(const t in i){if(i[t]===l){p=t;break}}u(n,r);o=d.index+d[0].length;if(!p){b("unrecognized tag type: "+l,t,o)}let m=h(d.index,p);const g=m.t;if(g==="h"){const t=m.n||"";if(e.async&&S.test(t)){m.a=true;m.n=t.replace(S,"")}m=a(m);c.push(m)}else if(g==="c"){if(s.n===m.n){if(f){f.d=c;s.b.push(f)}else{s.d=c}return s}else{b("Helper start and end don't match",t,d.index+d[0].length)}}else if(g==="b"){if(f){f.d=c;s.b.push(f)}else{s.d=c}const t=m.n||"";if(e.async&&S.test(t)){m.a=true;m.n=t.replace(S,"")}f=m;c=[]}else if(g==="s"){const t=m.n||"";if(e.async&&S.test(t)){m.a=true;m.n=t.replace(S,"")}c.push(m)}else{c.push(m)}}if(n){u(t.slice(o,t.length),false);s.d=c}else{throw w('unclosed helper "'+s.n+'"')}return s}const f=a({f:[]},true);if(e.plugins){for(let t=0;t<e.plugins.length;t++){const i=e.plugins[t];if(i.processAST){f.d=i.processAST(f.d,e)}}}return f.d}function O(t,e){const i=k(t,e);let s="var tR='';"+(e.useWith?"with("+e.varName+"||{}){":"")+H(i,e)+"if(cb){cb(null,tR)} return tR"+(e.useWith?"}":"");if(e.plugins){for(let t=0;t<e.plugins.length;t++){const i=e.plugins[t];if(i.processFnString){s=i.processFnString(s,e)}}}return s}function T(t,e){for(let i=0;i<e.length;i++){const s=e[i][0];const n=e[i][1];const r=e[i][2];t=(r?"await ":"")+"c.l('F','"+s+"')("+t;if(n){t+=","+n}t+=")"}return t}function P(t,e,i,s,n,r){let o="{exec:"+(n?"async ":"")+N(i,e,t)+",params:["+s+"]";if(r){o+=",name:'"+r+"'"}if(n){o+=",async:true"}o+="}";return o}function E(t,e){let i="[";for(let s=0;s<t.length;s++){const n=t[s];i+=P(e,n.res||"",n.d,n.p||"",n.a,n.n);if(s<t.length){i+=","}}i+="]";return i}function N(t,e,i){return"function("+e+"){var tR='';"+H(t,i)+"return tR}"}function H(t,e){let i=0;const s=t.length;let n="";for(i;i<s;i++){const s=t[i];if(typeof s==="string"){const t=s;n+="tR+='"+t+"';"}else{const t=s.t;let i=s.c||"";const r=s.f;const o=s.n||"";const l=s.p||"";const h=s.res||"";const a=s.b;const f=!!s.a;if(t==="i"){if(e.defaultFilter){i="c.l('F','"+e.defaultFilter+"')("+i+")"}let t=T(i,r);if(!s.raw&&e.autoEscape){t="c.l('F','e')("+t+")"}n+="tR+="+t+";"}else if(t==="h"){if(e.storage.nativeHelpers.get(o)){n+=e.storage.nativeHelpers.get(o)(s,e)}else{let t=(f?"await ":"")+"c.l('H','"+o+"')("+P(e,h,s.d,l,f);if(a){t+=","+E(a,e)}else{t+=",[]"}t+=",c)";n+="tR+="+T(t,r)+";"}}else if(t==="s"){n+="tR+="+T((f?"await ":"")+"c.l('H','"+o+"')({params:["+l+"]},[],c)",r)+";"}else if(t==="e"){n+=i+"\n"}}}return n}class q{constructor(t){this.cache=t}define(t,e){this.cache[t]=e}get(t){return this.cache[t]}remove(t){delete this.cache[t]}reset(){this.cache={}}load(t){C(this.cache,t,true)}}function L(t,e,i,s){if(e&&e.length>0){throw w((s?"Native":"")+"Helper '"+t+"' doesn't accept blocks")}if(i&&i.length>0){throw w((s?"Native":"")+"Helper '"+t+"' doesn't accept filters")}}function $(t,e,i,s,n){i(t[e],e).then((function(r){s+=r;if(e===t.length-1){n(s)}else{$(t,e+1,i,s,n)}}))}function D(t,e,i,s,n,r){s(e[i],t[e[i]]).then((function(o){n+=o;if(i===e.length-1){r(n)}else{D(t,e,i+1,s,n,r)}}))}const M={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function W(t){return M[t]}function U(t){const e=String(t);if(/[&<>"']/.test(e)){return e.replace(/[&<>"']/g,W)}else{return e}}const B=new q({});const Q=new q({each:function(t,e){let i="";const s=t.params[0];L("each",e,false);if(t.async){return new Promise((function(e){$(s,0,t.exec,i,e)}))}else{for(let e=0;e<s.length;e++){i+=t.exec(s[e],e)}return i}},foreach:function(t,e){const i=t.params[0];L("foreach",e,false);if(t.async){return new Promise((function(e){D(i,Object.keys(i),0,t.exec,"",e)}))}else{let e="";for(const s in i){if(!F(i,s))continue;e+=t.exec(s,i[s])}return e}},include:function(t,e,i){L("include",e,false);const s=i.storage.templates.get(t.params[0]);if(!s){throw w('Could not fetch template "'+t.params[0]+'"')}return s(t.params[1],i)},extends:function(t,e,i){const s=t.params[1]||{};s.content=t.exec();for(let t=0;t<e.length;t++){const i=e[t];s[i.name]=i.exec()}const n=i.storage.templates.get(t.params[0]);if(!n){throw w('Could not fetch template "'+t.params[0]+'"')}return n(s,i)},useScope:function(t,e){L("useScope",e,false);return t.exec(t.params[0])}});const G=new q({if:function(t,e){L("if",false,t.f,true);let i="if("+t.p+"){"+H(t.d,e)+"}";if(t.b){for(let s=0;s<t.b.length;s++){const n=t.b[s];if(n.n==="else"){i+="else{"+H(n.d,e)+"}"}else if(n.n==="elif"){i+="else if("+n.p+"){"+H(n.d,e)+"}"}}}return i},try:function(t,e){L("try",false,t.f,true);if(!t.b||t.b.length!==1||t.b[0].n!=="catch"){throw w("native helper 'try' only accepts 1 block, 'catch'")}let i="try{"+H(t.d,e)+"}";const s=t.b[0];i+="catch"+(s.res?"("+s.res+")":"")+"{"+H(s.d,e)+"}";return i},block:function(t,e){L("block",t.b,t.f,true);const i="if(!"+e.varName+"["+t.p+"]){tR+=("+N(t.d,"",e)+")()}else{tR+="+e.varName+"["+t.p+"]}";return i}});const K=new q({e:U});const J={varName:"it",autoTrim:[false,"nl"],autoEscape:true,defaultFilter:false,tags:["{{","}}"],l:function(t,e){if(t==="H"){const t=this.storage.helpers.get(e);if(t){return t}else{throw w("Can't find helper '"+e+"'")}}else if(t==="F"){const t=this.storage.filters.get(e);if(t){return t}else{throw w("Can't find filter '"+e+"'")}}},async:false,storage:{helpers:Q,nativeHelpers:G,filters:K,templates:B},prefixes:{h:"@",b:"#",i:"",r:"*",c:"/",e:"!"},cache:false,plugins:[],useWith:false};J.l.bind(J);function V(t,e){const i={};C(i,J);if(e){C(i,e)}if(t){C(i,t)}i.l.bind(i);return i}function X(t,e){const i=V(e||{});let s=Function;if(i.async){if(x){s=x}else{throw w("This environment doesn't support async/await")}}try{return new s(i.varName,"c","cb",O(t,i))}catch(e){if(e instanceof SyntaxError){throw w("Bad template syntax\n\n"+e.message+"\n"+Array(e.message.length+1).join("=")+"\n"+O(t,i))}else{throw e}}}function Y(t,e){let i;if(e.cache&&e.name&&e.storage.templates.get(e.name)){return e.storage.templates.get(e.name)}if(typeof t==="function"){i=t}else{i=X(t,e)}if(e.cache&&e.name){e.storage.templates.define(e.name,i)}return i}function Z(t,e,i,s){const n=V(i||{});if(n.async){let i;if(!s){if(typeof v==="function"){return new v((function(s,r){try{i=Y(t,n)(e,n);s(i)}catch(t){r(t)}}))}else{throw w("Please provide a callback function, this env doesn't support Promises")}}else{try{Y(t,n)(e,n,s)}catch(t){return s(t)}}}else{return Y(t,n)(e,n)}}const tt=Object.freeze({__proto__:null,compileToString:O,compileScope:H,compileScopeIntoFunction:N,compile:X,parse:k,render:Z,helpers:Q,nativeHelpers:G,filters:K,templates:B,defaultConfig:J,getConfig:V});K.define("date_long",((t,e={year:"numeric",month:"long",day:"numeric"})=>{if(!t)return;const i=new Date(parseInt(t)*1e3);t=i.toLocaleDateString("en-GB",e);return t}));K.define("date_short",((t,e="d/m/y")=>{if(!t)return;const i=new Date(parseInt(t)*1e3);t=e.replace(/(d)/,i.getDate().toString());t=t.replace(/(m)/,(i.getMonth()+1).toString());t=t.replace(/(y)/,i.getFullYear().toString());return t}));K.define("public_name",(t=>{if(!t)return;t=t.split("_").map((t=>t.length<3?t.toUpperCase():t)).join(" ");return t.charAt(0).toUpperCase()+t.slice(1)}));K.define("trim_to",((t,e=100)=>{if(!t)return;if(t.length<=e)return t;return t.substr(0,e)+"..."}));K.define("classname",(t=>{if(!t)return;return t.replace(/[\W]+/g,"")}));K.define("abs_url",((t,e=null,i)=>{if(!e)return t;if(!t)return;let s=undefined;if(e.domains&&i&&i.origin){const t=e.domains.find((t=>t.origin===i.origin));s=t?t.domain:""}else if(e.domain)s=e.domain;if(!s)return t;return t.match(/^http/)?t:location.protocol+"//"+s+t}));K.define("replace",((t,e,i)=>t.replace(e,i)));K.define("remove_spaces",(t=>t.replace(/ /g,"_")));K.define("add_spaces",(t=>t=t.replace(/[_\-]/g," ")));K.define("capitalise",(t=>t=t.charAt(0).toUpperCase()+t.slice(1)));K.define("lowercase",(t=>t=t.toLowerCase()));const et=tt;const it=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{position:relative;display:block}:host ::slotted([slot=search-template]){display:none !important}.loader{opacity:0;position:fixed;block-size:100%;inline-size:100%;min-block-size:100%;max-block-size:100vh !important;max-inline-size:100vw !important;inset-inline-start:0;inset-block-start:0;z-index:-10;font-size:60px;display:flex;align-items:center;justify-content:center;transition:opacity 0.2s ease, z-index 0.01s ease 0.2s}.loader.loading{opacity:1;z-index:10;transition:z-index 0.01s ease, opacity 0.2s ease 0.01s}.default{block-size:100%}.default:focus{outline:none}.results{opacity:0;outline:none;overflow:auto;transition:transform 0.3s ease, opacity 0.3s ease, visibility 0.01s ease 0.3s, z-index 0.01s ease 0.3s;transform:translate(0, 100px);visibility:hidden;z-index:-1;position:absolute;inset-block-start:0;inset-inline-start:0;display:none}.results-container{position:relative}.results.show{transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.3s ease 0.01s, opacity 0.3s ease 0.01s, overflow 0.01s ease 0.31s;transform:translate(0, 0);visibility:visible;opacity:1;z-index:10;overflow:hidden}.results.shown{block-size:auto !important;inline-size:auto !important;display:block;position:static;transform:none;z-index:auto;visibility:inherit;opacity:initial;overflow:visible}";const st=class{constructor(t){i(this,t);this.nanoDidLoad=s(this,"nanoDidLoad",7);this.nanoResultsShown=s(this,"nanoResultsShown",3);this.nanoBeforeQuery=s(this,"nanoBeforeQuery",7);this.nanoAfterQuery=s(this,"nanoAfterQuery",7);this.nanoNewResults=s(this,"nanoNewResults",7);this.staticFacetFilters={};this.dynFacetFilters={};this.hasLoadSlot=false;this.placedAlgoliaEles=[];this.promiseQueue=new g;this.searchChange=async()=>{if(!this.algoliaIndex)return;if(!this.query||this.query.length<this.minChars){if(!this.browseIndex){if(!this.query||this.query.length===0){this.handleSearchReset();return}else return}else if(this.query!=="*"){this.query="*";return}}this.isLoading=true;setTimeout((async()=>{this.resetPage();await this.algoliaSearch(u.Init);await this.updateContent();setTimeout((t=>this.isLoading=false),800);this.showResults=true;this.nanoResultsShown.emit(this.indexResults)}),200)};this.makeAppliedFilters=()=>{const t=[];const e=e=>{Object.values(e).forEach((e=>{if(e.value&&e.value.length){const i=t.find((t=>t.name===e.facetName));if(!i)t.push({name:e.facetName,values:[...e.value]});else i.values=[...i.values,...e.value]}}))};e(this.dynFacetFilters);e(this.staticFacetFilters);if(t.length)return t;return null};this.algoliaSearch=async t=>this.promiseQueue.enqueue((()=>this.queueSearch(t)));this.queueSearch=async t=>{if(!this.algoliaIndex||!this.query||!this.searchIndex||!this.searchIndex.index)return;this.nanoBeforeQuery.emit(this.indexResults);if(u.Init===t)this.clearAllFacetFilters();const e={filters:this.algoliaFilterStr(),page:this.indexResults?this.indexResults.currentPage:0};if(this.searchIndex.filters)e.facets=this.searchIndex.filters;if(this.searchIndex.hitsPerPage)e.hitsPerPage=this.searchIndex.hitsPerPage;let i=await this.algoliaIndex.search(this.query,e);i=this.fixDomain(i);this.changeEvent=t;if(t===u.Init||!this.indexResults){this.indexResults={currentPage:0,totalHits:i.nbHits,hitsPerPage:null,origFilters:i.facets,query:this.query,domain:this.searchIndex.domain||null,totalHitsWithFilters:0,results:[],totalPages:0,appliedFilters:this.makeAppliedFilters(),indexName:this.searchIndex.name||null,index:this.searchIndex.index}}this.indexResults.dynFilters=i.facets;this.indexResults.results=i.hits;this.indexResults.totalHitsWithFilters=i.nbHits;this.indexResults.currentPage=i.page;this.indexResults.totalPages=i.nbPages;this.indexResults.hitsPerPage=i.hitsPerPage;this.indexResults.query=i.query;if(this.changeEvent!==u.Page&&this.changeEvent!==u.Replica){this.facets=i.facets}this.nanoAfterQuery.emit(this.indexResults);return new Promise((t=>{setTimeout((()=>t("tpl updated")),20)})).then((t=>{this.currentHits=this.indexResults.results;this.resultsPage=this.indexResults.currentPage}))};this.handleSearchReset=()=>{this.showResults=false;this.indexResults=null};this.onResultDisplay=()=>{n((()=>{this.resultsDiv.removeEventListener("transitionend",this.onResultDisplay);if(!this.showResults)this.resultsDiv.style.display="none";else{this.defaultDiv.style.display="none";this.resultsDiv.classList.add("shown");this.resultsDiv.style.minHeight="";this.resultsDiv.style.width=""}}))};this._dynFacetFilters={};this.inputField=undefined;this.algoliaIndex=undefined;this.indeces=[];this.indexResults=undefined;this.filterChanged="";this.currentHits=undefined;this.changeEvent=u.Init;this.isLoading=false;this.wormholeState=this;this.showResults=false;this.resultsPage=0;this.appId=undefined;this.apiKey=undefined;this.searchIndex={};this.searchIndexName="";this.listenTo=null;this.query="";this.operator="and";this.filters=[];this.tplRenderFn=et.render;this.replicaIndex="";this.browseIndex=false;this.minChars=2;this.storeId=undefined;this.storeMethod="session"}handleListenToChange(){if(!this.listenTo)return;const t=document.querySelector(this.listenTo);if(["nano-input","input"].includes(t.tagName.toLocaleLowerCase())){this.inputField=t}}async removeFilters(t,e){if(!t&&!e)this.clearAllFacetFilters();else{Object.keys(this._dynFacetFilters).forEach((i=>{if(t&&this._dynFacetFilters[i].facetName===t){if(!e)this._dynFacetFilters[i].element.value="";else{this._dynFacetFilters[i].element.value=this._dynFacetFilters[i].value.filter((t=>t!==e))}}}))}}onAllTplUpdate(t){t.stopPropagation();if(t.target.tagName==="NANO-ALGOLIA-RESULTS"){requestAnimationFrame((()=>{this.nanoNewResults.emit(this.indexResults)}))}}async onPageChange(t){if(!this.indexResults)return;let e=this.resultsPage;if(t){t.stopPropagation();e=t.detail.page}e=Math.min(this.indexResults.totalPages-1,e);e=Math.max(e,0);if(this.indexResults.currentPage===e)return;this.indexResults.currentPage=e;await this.algoliaSearch(u.Page)}async onFilterChange(t){t.stopPropagation();const e={};const i=t.detail;i.element=t.target;if(this.indexResults){if(this.staticFacetFilters[i.filterId])this.staticFacetFilters[i.filterId]=i;else{e[i.filterId]=i;this._dynFacetFilters=Object.assign(Object.assign({},this._dynFacetFilters),e)}this.indexResults.appliedFilters=this.makeAppliedFilters()}else this.staticFacetFilters[i.filterId]=i;this.filterChanged=i.value&&i.value.length?i.filterId:"all";this.resetPage();this.algoliaSearch(u.Filter)}dynFacetFiltersChange(){Object.values(this._dynFacetFilters).forEach((t=>{if(this.host.ownerDocument===t.element.ownerDocument)this.dynFacetFilters[t.filterId]=t;else delete this.dynFacetFilters[t.filterId]}))}browseIndexChange(){if(this.browseIndex&&(!this.query||this.query.length<this.minChars)){this.query="*"}}inputFieldSet(){if(!this.inputField)return;if(this.query!=="*"&&this.inputField&&this.inputField.value!==this.query)this.inputField.value=this.query}queryChange(){this.searchChange()}async internalIndexSwitch(){if(!this.replicaIndex||!this.indexResults||this.indexResults.index===this.replicaIndex)return;this.indexResults.index=this.replicaIndex;this.algoliaIndex=this.algoliaClient.initIndex(this.indexResults.index);this.resetPage();this.algoliaSearch(u.Replica)}pageChange(){this.onPageChange()}searchIndexNameChange(){if(!this.searchIndexName||!this.searchIndexName.length||this.searchIndex&&this.searchIndex.index===this.searchIndexName)return;this.searchIndex={index:this.searchIndexName}}initAlgoliaClient(){if(!this.appId||!this.apiKey)return;this.algoliaClient=h(this.appId,this.apiKey)}initAlgoliaIndex(){if(!this.algoliaClient||!this.searchIndex)return;if(this.searchIndex.index){if(!this.searchIndex.hitsPerPage)this.searchIndex.hitsPerPage=100;if(this.replicaIndex)this.searchIndex.index=this.replicaIndex;this.searchIndexName=this.searchIndex.index;this.algoliaIndex=this.algoliaClient.initIndex(this.searchIndex.index);this.searchChange()}}showResultsChange(){if(!this.resultsDiv||!this.defaultDiv)return;if(this.showResults){this.resultsDiv.style.width=this.host.scrollWidth+"px";this.resultsDiv.style.minHeight=this.host.scrollHeight+"px";n((()=>{this.resultsDiv.addEventListener("transitionend",this.onResultDisplay);this.resultsDiv.style.display="block";setTimeout((()=>this.resultsDiv.classList.add("show")),50)}))}else{n((()=>{this.resultsDiv.classList.remove("shown");this.defaultDiv.style.display="block";setTimeout((()=>{this.resultsDiv.addEventListener("transitionend",this.onResultDisplay);this.resultsDiv.classList.remove("show");if(!!this.slottedInput)this.slottedInput.focus({preventScroll:true});else this.defaultDiv.focus({preventScroll:true})}),50)}))}}handleFilterpropChange(){this.algoliaSearch(u.Init)}fixDomain(t){if(!this.searchIndex||!this.searchIndex.domain)return t;t.hits.map((t=>{if(t.url&&!t.url.match(/^http/))t.url=location.protocol+"//"+this.searchIndex.domain+t.url}));return t}resetPage(){if(!this.indexResults)return;this.indexResults.currentPage=0}clearAllFacetFilters(){Object.values(this._dynFacetFilters).forEach((t=>{t.element.value=""}));this._dynFacetFilters={}}algoliaFilterStr(){const t={};const e=e=>{let i;let s;Object.keys(e).forEach((n=>{i=e[n];t[n]=t[n]||{name:i.facetName,or:[],and:[],not:[]};s=t[n][i.operator];if(i.value&&i.value.length){t[n][i.operator]=[...s,...i.value]}}))};e(this.dynFacetFilters);e(this.staticFacetFilters);const i=(t,e)=>{if(e.indexOf(" ")>-1)return t+':"'+e+'"';else return t+":"+e};let s=[];let n;let r;Object.values(t).forEach((function(t){Object.keys(t).filter((t=>t.match(/(or|and|not)/))).forEach((e=>{n=t;r=t.name;if(e==="or"||e==="and"){if(n[e].length){s.push("( "+n[e].map((t=>{if(t.length)return i(r,t)})).join(" "+e.toLocaleUpperCase()+" ")+" )")}}else{if(n.not.length){s.push("( "+n[e].map((t=>{if(t.length)return"NOT "+i(r,t)})).join(" AND ")+" )")}}}))}));s=[...this.filters,...s];return s.join(" "+this.operator.toLocaleUpperCase()+" ")}handleInputChange(t){if(t.target!==this.inputField)return;this.query=this.inputField.value}async updateContent(){return this.promiseQueue.enqueue((()=>this.updateContentQueue()))}async updateContentQueue(){const t=this.outputSlot||this.resultsDiv;if(!t||!this.tpl)return"no tpl";const e=document.createElement("div");e.innerHTML=this.tpl;const i=[];this.placedAlgoliaEles=[];Array.from(e.querySelectorAll("nano-algolia, nano-algolia-filter, nano-algolia-results")).forEach(((t,e)=>{const s=document.createElement("div");s.dataset.placeholderId=e.toString();s.classList.add("nano-ele-placeholder");i.push(t);t.parentNode.replaceChild(s,t)}));t.innerHTML=this.tplRenderFn(e.innerHTML.replace(/&gt;/gm,">").replace(/&lt;/gm,"<").replace(/&amp;/gm,"&"),this.indexResults);Array.from(t.querySelectorAll("div.nano-ele-placeholder")).forEach((t=>{t.parentNode.replaceChild(i[parseInt(t.dataset.placeholderId)],t);this.placedAlgoliaEles.push(i[parseInt(t.dataset.placeholderId)])}));if(!this.placedAlgoliaEles.length)return Promise.resolve("algolia setup");return new Promise((e=>{const i=s=>{this.placedAlgoliaEles=this.placedAlgoliaEles.filter((t=>t!==s.detail));if(!this.placedAlgoliaEles.length){setTimeout((()=>e("tpl updated")),500);t.removeEventListener("nanoTplUpdated",i)}};t.addEventListener("nanoTplUpdated",i)}))}componentWillLoad(){r((t=>{this.tplSlot=a(this.host,'[slot="template"]')[0];this.outputSlot=a(this.host,'[slot="output"]')[0];this.slottedInput=a(this.host,'[slot="search-input"]')[0];this.hasLoadSlot=!!a(this.host,'[slot="loader"]')[0];if(!!this.tplSlot)this.tpl=this.tplSlot.innerHTML||this.tplSlot.innerText;if(this.slottedInput&&(this.slottedInput.tagName.toLocaleLowerCase()==="nano-input"||this.slottedInput instanceof HTMLInputElement)){this.inputField=this.slottedInput}else if(this.slottedInput){this.inputField=this.slottedInput.querySelector('nano-input, input:not([type="radio"]):not([type="checkbox"])')}else this.handleListenToChange();n((t=>{if(this.showResults&&this.tpl)this.searchChange()}))}));this.searchIndexNameChange();this.initAlgoliaClient();this.initAlgoliaIndex();m.create(this,this.wormholeState);if(this.storeId){f.init(this,["query","replicaIndex"],this.storeMethod,this.storeId);f.init(this,["apiKey","appId","searchIndex"],"session",this.storeId+"_api")}this.internalIndexSwitch()}connectedCallback(){this.searchChange=c(this.searchChange,300);this.browseIndexChange();this.host.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.host}))}render(){const t={indexResults:this.indexResults,results:this.currentHits,filterChanged:this.filterChanged,tplRenderFn:this.tplRenderFn,resultsPage:this.resultsPage,changeEvent:this.changeEvent,facets:this.facets,algoliaIndex:this.algoliaIndex,searchIndex:this.searchIndex,globalStoreMethod:this.storeMethod,isLoading:this.isLoading};return o(l,{class:{"show-results":this.showResults,"is-loading":this.isLoading},"aria-busy":this.isLoading},this.hasLoadSlot&&o("div",{hidden:!this.isLoading},o("slot",{name:"loader"})),!this.hasLoadSlot&&o("div",{class:{loader:true,loading:this.isLoading}},o("nano-spinner",{overlay:true,type:"circle"})),o(m.Provider,{state:t},o("slot",{name:"search-input"}),o("div",{class:"results-container","aria-live":"polite"},o("div",{ref:t=>this.resultsDiv=t,class:"results"},o("slot",{name:"output"})))),o("div",{ref:t=>this.defaultDiv=t,class:"default",tabindex:"-1"},o("slot",null)))}get host(){return t(this)}static get watchers(){return{listenTo:["handleListenToChange"],_dynFacetFilters:["dynFacetFiltersChange"],browseIndex:["browseIndexChange"],inputField:["inputFieldSet"],query:["queryChange"],replicaIndex:["internalIndexSwitch"],resultsPage:["pageChange"],searchIndexName:["searchIndexNameChange"],apiKey:["initAlgoliaClient"],appId:["initAlgoliaClient"],searchIndex:["initAlgoliaIndex"],showResults:["showResultsChange"],filters:["handleFilterpropChange"]}}};st.style=it;export{st as nano_algolia};
4
+ import{g as t,e,r as i,c as s,w as n,d as r,h as o,a as l}from"./index-9695db0a.js";import{a as h}from"./algoliasearch-lite.esm.browser-d71a28dc.js";import{g as a}from"./dom-8599fac1.js";import{C as f}from"./component-store-486d9d7a.js";import{d as c}from"./throttle-ac4fcefa.js";import{S as u}from"./algolia-data-1b42827c.js";var d=new Map;var p=function(t,e){var i=t.fields,s=t.updater;i.forEach((function(t){s(t,e[t])}))};var m={create:function(e,i){var s=t(e);var n=new Map;var r={wormholes:n,state:i};d.set(e,r);var o=e.connectedCallback;e.connectedCallback=function(){d.set(e,r);if(o){o.call(e)}};var l=e.disconnectedCallback;e.disconnectedCallback=function(){d.delete(e);if(l){l.call(e)}};s.addEventListener("openWormhole",(function(t){t.stopPropagation();var e=t.detail,i=e.consumer,s=e.onOpen;if(n.has(i))return;if(typeof i!=="symbol"){var o=i.connectedCallback,l=i.disconnectedCallback;i.connectedCallback=function(){n.set(i,t.detail);if(o){o.call(i)}};i.disconnectedCallback=function(){n.delete(i);if(l){l.call(i)}}}n.set(i,t.detail);p(t.detail,r.state);s===null||s===void 0?void 0:s.resolve((function(){n.delete(i)}))}));s.addEventListener("closeWormhole",(function(t){var e=t.detail;n.delete(e)}))},Provider:function(t,i){var s=t.state;var n=e();if(d.has(n)){var r=d.get(n);r.state=s;r.wormholes.forEach((function(t){p(t,s)}))}return i}};class g{constructor(){this.queue=[];this.workingOnPromise=false;this.stop=false;this.limit=null}enqueue(t){return new Promise(((e,i)=>{this.queue.push({promise:t,resolve:e,reject:i});this.dequeue()}))}dequeue(){if(this.workingOnPromise){return false}if(this.stop){this.queue=[];this.stop=false;return}const t=this.queue.shift();if(!t){return false}try{this.workingOnPromise=true;t.promise().then((e=>{this.workingOnPromise=false;t.resolve(e);this.dequeue()})).catch((e=>{this.workingOnPromise=false;t.reject(e);this.dequeue()}))}catch(e){this.workingOnPromise=false;t.reject(e);this.dequeue()}return true}}g.pendingPromise=false;function y(t,e){if(Object.setPrototypeOf){Object.setPrototypeOf(t,e)}else{t.__proto__=e}}function w(t){const e=new Error(t);y(e,w.prototype);return e}w.prototype=Object.create(Error.prototype,{name:{value:"Squirrelly Error",enumerable:false}});function b(t,e,i){const s=e.slice(0,i).split(/\n/);const n=s.length;const r=s[n-1].length+1;t+=" at line "+n+" col "+r+":\n\n"+" "+e.split(/\n/)[n-1]+"\n"+" "+Array(r).join(" ")+"^";throw w(t)}const v=new Function("return this")().Promise;let x=false;try{x=new Function("return (async function(){}).constructor")()}catch(t){if(!(t instanceof SyntaxError)){throw t}}function F(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function C(t,e,i){for(const s in e){if(F(e,s)){if(e[s]!=null&&typeof e[s]=="object"&&(s==="storage"||s==="prefixes")&&!i){t[s]=C({},e[s])}else{t[s]=e[s]}}}return t}function I(t,e,i,s){let n;let r;if(typeof e.autoTrim==="string"){n=r=e.autoTrim}else if(Array.isArray(e.autoTrim)){n=e.autoTrim[1];r=e.autoTrim[0]}if(i||i===false){n=i}if(s||s===false){r=s}if(n==="slurp"&&r==="slurp"){return t.trim()}if(n==="_"||n==="slurp"){if(!!String.prototype.trimLeft){t=t.trimLeft()}else{t=t.replace(/^[\s\uFEFF\xA0]+/,"")}}else if(n==="-"||n==="nl"){t=t.replace(/^(?:\n|\r|\r\n)/,"")}if(r==="_"||r==="slurp"){if(!!String.prototype.trimRight){t=t.trimRight()}else{t=t.replace(/[\s\uFEFF\xA0]+$/,"")}}else if(r==="-"||r==="nl"){t=t.replace(/(?:\n|\r|\r\n)$/,"")}return t}const S=/^async +/;const j=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g;const z=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g;const R=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g;const _=/[.*+\-?^${}()|[\]\\]/g;function A(t){return _.test(t)?t.replace(_,"\\$&"):t}function k(t,e){if(e.rmWhitespace){t=t.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")}j.lastIndex=0;z.lastIndex=0;R.lastIndex=0;const i=e.prefixes;const s=[i.h,i.b,i.i,i.r,i.c,i.e].reduce((function(t,e){if(t&&e){return t+"|"+A(e)}else if(e){return A(e)}else{return t}}),"");const n=new RegExp("([|()]|=>)|"+"('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?"+A(e.tags[1])+")","g");const r=new RegExp("([^]*?)"+A(e.tags[0])+"(-|_)?\\s*("+s+")?\\s*","g");let o=0;let l=false;function h(i,s){const h={f:[]};let a=0;let f="c";if(s==="h"||s==="b"||s==="c"){f="n"}else if(s==="r"){h.raw=true;s="i"}function c(i){const s=t.slice(o,i);let n=s.trim();if(f==="f"){if(n==="safe"){h.raw=true}else{if(e.async&&S.test(n)){n=n.replace(S,"");h.f.push([n,"",true])}else{h.f.push([n,""])}}}else if(f==="fp"){h.f[h.f.length-1][1]+=n}else if(f==="err"){if(n){const e=s.search(/\S/);b("invalid syntax",t,o+e)}}else{h[f]=n}o=i+1}n.lastIndex=o;let u;while((u=n.exec(t))!==null){const e=u[1];const i=u[2];const d=u[3];const p=u[4];const m=u[5];const g=u.index;if(e){if(e==="("){if(a===0){if(f==="n"){c(g);f="p"}else if(f==="f"){c(g);f="fp"}}a++}else if(e===")"){a--;if(a===0&&f!=="c"){c(g);f="err"}}else if(a===0&&e==="|"){c(g);f="f"}else if(e==="=>"){c(g);o+=1;f="res"}}else if(i){if(i==="/*"){const e=t.indexOf("*/",n.lastIndex);if(e===-1){b("unclosed comment",t,u.index)}n.lastIndex=e+2}else if(i==="'"){z.lastIndex=u.index;const e=z.exec(t);if(e){n.lastIndex=z.lastIndex}else{b("unclosed string",t,u.index)}}else if(i==='"'){R.lastIndex=u.index;const e=R.exec(t);if(e){n.lastIndex=R.lastIndex}else{b("unclosed string",t,u.index)}}else if(i==="`"){j.lastIndex=u.index;const e=j.exec(t);if(e){n.lastIndex=j.lastIndex}else{b("unclosed string",t,u.index)}}}else if(d){c(g);o=g+u[0].length;r.lastIndex=o;l=m;if(p&&s==="h"){s="s"}h.t=s;return h}}b("unclosed tag",t,i);return h}function a(s,n){s.b=[];s.d=[];let f=false;let c=[];function u(t,i){if(t){t=I(t,e,l,i);if(t){t=t.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n");c.push(t)}}}let d;while((d=r.exec(t))!==null){const n=d[1];const r=d[2];const l=d[3]||"";let p;for(const t in i){if(i[t]===l){p=t;break}}u(n,r);o=d.index+d[0].length;if(!p){b("unrecognized tag type: "+l,t,o)}let m=h(d.index,p);const g=m.t;if(g==="h"){const t=m.n||"";if(e.async&&S.test(t)){m.a=true;m.n=t.replace(S,"")}m=a(m);c.push(m)}else if(g==="c"){if(s.n===m.n){if(f){f.d=c;s.b.push(f)}else{s.d=c}return s}else{b("Helper start and end don't match",t,d.index+d[0].length)}}else if(g==="b"){if(f){f.d=c;s.b.push(f)}else{s.d=c}const t=m.n||"";if(e.async&&S.test(t)){m.a=true;m.n=t.replace(S,"")}f=m;c=[]}else if(g==="s"){const t=m.n||"";if(e.async&&S.test(t)){m.a=true;m.n=t.replace(S,"")}c.push(m)}else{c.push(m)}}if(n){u(t.slice(o,t.length),false);s.d=c}else{throw w('unclosed helper "'+s.n+'"')}return s}const f=a({f:[]},true);if(e.plugins){for(let t=0;t<e.plugins.length;t++){const i=e.plugins[t];if(i.processAST){f.d=i.processAST(f.d,e)}}}return f.d}function T(t,e){const i=k(t,e);let s="var tR='';"+(e.useWith?"with("+e.varName+"||{}){":"")+H(i,e)+"if(cb){cb(null,tR)} return tR"+(e.useWith?"}":"");if(e.plugins){for(let t=0;t<e.plugins.length;t++){const i=e.plugins[t];if(i.processFnString){s=i.processFnString(s,e)}}}return s}function P(t,e){for(let i=0;i<e.length;i++){const s=e[i][0];const n=e[i][1];const r=e[i][2];t=(r?"await ":"")+"c.l('F','"+s+"')("+t;if(n){t+=","+n}t+=")"}return t}function O(t,e,i,s,n,r){let o="{exec:"+(n?"async ":"")+N(i,e,t)+",params:["+s+"]";if(r){o+=",name:'"+r+"'"}if(n){o+=",async:true"}o+="}";return o}function E(t,e){let i="[";for(let s=0;s<t.length;s++){const n=t[s];i+=O(e,n.res||"",n.d,n.p||"",n.a,n.n);if(s<t.length){i+=","}}i+="]";return i}function N(t,e,i){return"function("+e+"){var tR='';"+H(t,i)+"return tR}"}function H(t,e){let i=0;const s=t.length;let n="";for(i;i<s;i++){const s=t[i];if(typeof s==="string"){const t=s;n+="tR+='"+t+"';"}else{const t=s.t;let i=s.c||"";const r=s.f;const o=s.n||"";const l=s.p||"";const h=s.res||"";const a=s.b;const f=!!s.a;if(t==="i"){if(e.defaultFilter){i="c.l('F','"+e.defaultFilter+"')("+i+")"}let t=P(i,r);if(!s.raw&&e.autoEscape){t="c.l('F','e')("+t+")"}n+="tR+="+t+";"}else if(t==="h"){if(e.storage.nativeHelpers.get(o)){n+=e.storage.nativeHelpers.get(o)(s,e)}else{let t=(f?"await ":"")+"c.l('H','"+o+"')("+O(e,h,s.d,l,f);if(a){t+=","+E(a,e)}else{t+=",[]"}t+=",c)";n+="tR+="+P(t,r)+";"}}else if(t==="s"){n+="tR+="+P((f?"await ":"")+"c.l('H','"+o+"')({params:["+l+"]},[],c)",r)+";"}else if(t==="e"){n+=i+"\n"}}}return n}class q{constructor(t){this.cache=t}define(t,e){this.cache[t]=e}get(t){return this.cache[t]}remove(t){delete this.cache[t]}reset(){this.cache={}}load(t){C(this.cache,t,true)}}function L(t,e,i,s){if(e&&e.length>0){throw w((s?"Native":"")+"Helper '"+t+"' doesn't accept blocks")}if(i&&i.length>0){throw w((s?"Native":"")+"Helper '"+t+"' doesn't accept filters")}}function $(t,e,i,s,n){i(t[e],e).then((function(r){s+=r;if(e===t.length-1){n(s)}else{$(t,e+1,i,s,n)}}))}function D(t,e,i,s,n,r){s(e[i],t[e[i]]).then((function(o){n+=o;if(i===e.length-1){r(n)}else{D(t,e,i+1,s,n,r)}}))}const M={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function W(t){return M[t]}function U(t){const e=String(t);if(/[&<>"']/.test(e)){return e.replace(/[&<>"']/g,W)}else{return e}}const B=new q({});const Q=new q({each:function(t,e){let i="";const s=t.params[0];L("each",e,false);if(t.async){return new Promise((function(e){$(s,0,t.exec,i,e)}))}else{for(let e=0;e<s.length;e++){i+=t.exec(s[e],e)}return i}},foreach:function(t,e){const i=t.params[0];L("foreach",e,false);if(t.async){return new Promise((function(e){D(i,Object.keys(i),0,t.exec,"",e)}))}else{let e="";for(const s in i){if(!F(i,s))continue;e+=t.exec(s,i[s])}return e}},include:function(t,e,i){L("include",e,false);const s=i.storage.templates.get(t.params[0]);if(!s){throw w('Could not fetch template "'+t.params[0]+'"')}return s(t.params[1],i)},extends:function(t,e,i){const s=t.params[1]||{};s.content=t.exec();for(let t=0;t<e.length;t++){const i=e[t];s[i.name]=i.exec()}const n=i.storage.templates.get(t.params[0]);if(!n){throw w('Could not fetch template "'+t.params[0]+'"')}return n(s,i)},useScope:function(t,e){L("useScope",e,false);return t.exec(t.params[0])}});const G=new q({if:function(t,e){L("if",false,t.f,true);let i="if("+t.p+"){"+H(t.d,e)+"}";if(t.b){for(let s=0;s<t.b.length;s++){const n=t.b[s];if(n.n==="else"){i+="else{"+H(n.d,e)+"}"}else if(n.n==="elif"){i+="else if("+n.p+"){"+H(n.d,e)+"}"}}}return i},try:function(t,e){L("try",false,t.f,true);if(!t.b||t.b.length!==1||t.b[0].n!=="catch"){throw w("native helper 'try' only accepts 1 block, 'catch'")}let i="try{"+H(t.d,e)+"}";const s=t.b[0];i+="catch"+(s.res?"("+s.res+")":"")+"{"+H(s.d,e)+"}";return i},block:function(t,e){L("block",t.b,t.f,true);const i="if(!"+e.varName+"["+t.p+"]){tR+=("+N(t.d,"",e)+")()}else{tR+="+e.varName+"["+t.p+"]}";return i}});const K=new q({e:U});const J={varName:"it",autoTrim:[false,"nl"],autoEscape:true,defaultFilter:false,tags:["{{","}}"],l:function(t,e){if(t==="H"){const t=this.storage.helpers.get(e);if(t){return t}else{throw w("Can't find helper '"+e+"'")}}else if(t==="F"){const t=this.storage.filters.get(e);if(t){return t}else{throw w("Can't find filter '"+e+"'")}}},async:false,storage:{helpers:Q,nativeHelpers:G,filters:K,templates:B},prefixes:{h:"@",b:"#",i:"",r:"*",c:"/",e:"!"},cache:false,plugins:[],useWith:false};J.l.bind(J);function V(t,e){const i={};C(i,J);if(e){C(i,e)}if(t){C(i,t)}i.l.bind(i);return i}function X(t,e){const i=V(e||{});let s=Function;if(i.async){if(x){s=x}else{throw w("This environment doesn't support async/await")}}try{return new s(i.varName,"c","cb",T(t,i))}catch(e){if(e instanceof SyntaxError){throw w("Bad template syntax\n\n"+e.message+"\n"+Array(e.message.length+1).join("=")+"\n"+T(t,i))}else{throw e}}}function Y(t,e){let i;if(e.cache&&e.name&&e.storage.templates.get(e.name)){return e.storage.templates.get(e.name)}if(typeof t==="function"){i=t}else{i=X(t,e)}if(e.cache&&e.name){e.storage.templates.define(e.name,i)}return i}function Z(t,e,i,s){const n=V(i||{});if(n.async){let i;if(!s){if(typeof v==="function"){return new v((function(s,r){try{i=Y(t,n)(e,n);s(i)}catch(t){r(t)}}))}else{throw w("Please provide a callback function, this env doesn't support Promises")}}else{try{Y(t,n)(e,n,s)}catch(t){return s(t)}}}else{return Y(t,n)(e,n)}}const tt=Object.freeze({__proto__:null,compileToString:T,compileScope:H,compileScopeIntoFunction:N,compile:X,parse:k,render:Z,helpers:Q,nativeHelpers:G,filters:K,templates:B,defaultConfig:J,getConfig:V});K.define("date_long",((t,e={year:"numeric",month:"long",day:"numeric"})=>{if(!t)return;const i=new Date(parseInt(t)*1e3);t=i.toLocaleDateString("en-GB",e);return t}));K.define("date_short",((t,e="d/m/y")=>{if(!t)return;const i=new Date(parseInt(t)*1e3);t=e.replace(/(d)/,i.getDate().toString());t=t.replace(/(m)/,(i.getMonth()+1).toString());t=t.replace(/(y)/,i.getFullYear().toString());return t}));K.define("public_name",(t=>{if(!t)return;t=t.split("_").map((t=>t.length<3?t.toUpperCase():t)).join(" ");return t.charAt(0).toUpperCase()+t.slice(1)}));K.define("trim_to",((t,e=100)=>{if(!t)return;if(t.length<=e)return t;return t.substr(0,e)+"..."}));K.define("classname",(t=>{if(!t)return;return t.replace(/[\W]+/g,"")}));K.define("abs_url",((t,e=null,i)=>{if(!e)return t;if(!t)return;let s=undefined;if(e.domains&&i&&i.origin){const t=e.domains.find((t=>t.origin===i.origin));s=t?t.domain:""}else if(e.domain)s=e.domain;if(!s)return t;return t.match(/^http/)?t:location.protocol+"//"+s+t}));K.define("replace",((t,e,i)=>t.replace(e,i)));K.define("remove_spaces",(t=>t.replace(/ /g,"_")));K.define("add_spaces",(t=>t=t.replace(/[_\-]/g," ")));K.define("capitalise",(t=>t=t.charAt(0).toUpperCase()+t.slice(1)));K.define("lowercase",(t=>t=t.toLowerCase()));const et=tt;const it=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{position:relative;display:block}:host ::slotted([slot=search-template]){display:none !important}.loader{opacity:0;position:fixed;block-size:100%;inline-size:100%;min-block-size:100%;max-block-size:100vh !important;max-inline-size:100vw !important;inset-inline-start:0;inset-block-start:0;z-index:-10;font-size:60px;display:flex;align-items:center;justify-content:center;transition:opacity 0.2s ease, z-index 0.01s ease 0.2s}.loader.loading{opacity:1;z-index:10;transition:z-index 0.01s ease, opacity 0.2s ease 0.01s}.default{block-size:100%}.default:focus{outline:none}.results{opacity:0;outline:none;overflow:auto;transition:transform 0.3s ease, opacity 0.3s ease, visibility 0.01s ease 0.3s, z-index 0.01s ease 0.3s;transform:translate(0, 100px);visibility:hidden;z-index:-1;position:absolute;inset-block-start:0;inset-inline-start:0;display:none}.results-container{position:relative}.results.show{transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.3s ease 0.01s, opacity 0.3s ease 0.01s, overflow 0.01s ease 0.31s;transform:translate(0, 0);visibility:visible;opacity:1;z-index:10;overflow:hidden}.results.shown{block-size:auto !important;inline-size:auto !important;display:block;position:static;transform:none;z-index:auto;visibility:inherit;opacity:initial;overflow:visible}";const st=class{constructor(t){i(this,t);this.nanoDidLoad=s(this,"nanoDidLoad",7);this.nanoResultsShown=s(this,"nanoResultsShown",3);this.nanoBeforeQuery=s(this,"nanoBeforeQuery",7);this.nanoAfterQuery=s(this,"nanoAfterQuery",7);this.nanoNewResults=s(this,"nanoNewResults",7);this.staticFacetFilters={};this.dynFacetFilters={};this.hasLoadSlot=false;this.placedAlgoliaEles=[];this.promiseQueue=new g;this.searchChange=async()=>{if(!this.algoliaIndex)return;if(!this.query||this.query.length<this.minChars){if(!this.browseIndex){if(!this.query||this.query.length===0){this.handleSearchReset();return}else return}else if(this.query!=="*"){this.query="*";return}}this.isLoading=true;setTimeout((async()=>{this.resetPage();await this.algoliaSearch(u.Init);await this.updateContent();setTimeout((t=>this.isLoading=false),800);this.showResults=true;this.nanoResultsShown.emit(this.indexResults)}),200)};this.makeAppliedFilters=()=>{const t=[];const e=e=>{Object.values(e).forEach((e=>{if(e.value&&e.value.length){const i=t.find((t=>t.name===e.facetName));if(!i)t.push({name:e.facetName,values:[...e.value]});else i.values=[...i.values,...e.value]}}))};e(this.dynFacetFilters);e(this.staticFacetFilters);if(t.length)return t;return null};this.algoliaSearch=async t=>this.promiseQueue.enqueue((()=>this.queueSearch(t)));this.queueSearch=async t=>{if(!this.algoliaIndex||!this.query||!this.searchIndex||!this.searchIndex.index)return;this.nanoBeforeQuery.emit(this.indexResults);if(u.Init===t)this.clearAllFacetFilters();const e={filters:this.algoliaFilterStr(),page:this.indexResults?this.indexResults.currentPage:0};if(this.searchIndex.filters)e.facets=this.searchIndex.filters;if(this.searchIndex.hitsPerPage)e.hitsPerPage=this.searchIndex.hitsPerPage;let i=await this.algoliaIndex.search(this.query,e);i=this.fixDomain(i);this.changeEvent=t;if(t===u.Init||!this.indexResults){this.indexResults={currentPage:0,totalHits:i.nbHits,hitsPerPage:null,origFilters:i.facets,query:this.query,domain:this.searchIndex.domain||null,totalHitsWithFilters:0,results:[],totalPages:0,appliedFilters:this.makeAppliedFilters(),indexName:this.searchIndex.name||null,index:this.searchIndex.index}}this.indexResults.dynFilters=i.facets;this.indexResults.results=i.hits;this.indexResults.totalHitsWithFilters=i.nbHits;this.indexResults.currentPage=i.page;this.indexResults.totalPages=i.nbPages;this.indexResults.hitsPerPage=i.hitsPerPage;this.indexResults.query=i.query;if(this.changeEvent!==u.Page&&this.changeEvent!==u.Replica){this.facets=i.facets}this.nanoAfterQuery.emit(this.indexResults);return new Promise((t=>{setTimeout((()=>t("tpl updated")),20)})).then((t=>{this.currentHits=this.indexResults.results;this.resultsPage=this.indexResults.currentPage}))};this.handleSearchReset=()=>{this.showResults=false;this.indexResults=null};this.onResultDisplay=()=>{n((()=>{this.resultsDiv.removeEventListener("transitionend",this.onResultDisplay);if(!this.showResults)this.resultsDiv.style.display="none";else{this.defaultDiv.style.display="none";this.resultsDiv.classList.add("shown");this.resultsDiv.style.minHeight="";this.resultsDiv.style.width=""}}))};this._dynFacetFilters={};this.inputField=undefined;this.algoliaIndex=undefined;this.indeces=[];this.indexResults=undefined;this.filterChanged="";this.currentHits=undefined;this.changeEvent=u.Init;this.isLoading=false;this.wormholeState=this;this.showResults=false;this.resultsPage=0;this.appId=undefined;this.apiKey=undefined;this.searchIndex={};this.searchIndexName="";this.listenTo=null;this.query="";this.operator="and";this.filters=[];this.tplRenderFn=et.render;this.replicaIndex="";this.browseIndex=false;this.minChars=2;this.storeId=undefined;this.storeMethod="session"}handleListenToChange(){if(!this.listenTo)return;const t=document.querySelector(this.listenTo);if(["nano-input","input"].includes(t.tagName.toLocaleLowerCase())){this.inputField=t}}async removeFilters(t,e){if(!t&&!e)this.clearAllFacetFilters();else{Object.keys(this._dynFacetFilters).forEach((i=>{if(t&&this._dynFacetFilters[i].facetName===t){if(!e)this._dynFacetFilters[i].element.value="";else{this._dynFacetFilters[i].element.value=this._dynFacetFilters[i].value.filter((t=>t!==e))}}}))}}onAllTplUpdate(t){t.stopPropagation();if(t.target.tagName==="NANO-ALGOLIA-RESULTS"){requestAnimationFrame((()=>{this.nanoNewResults.emit(this.indexResults)}))}}async onPageChange(t){if(!this.indexResults)return;let e=this.resultsPage;if(t){t.stopPropagation();e=t.detail.page}e=Math.min(this.indexResults.totalPages-1,e);e=Math.max(e,0);if(this.indexResults.currentPage===e)return;this.indexResults.currentPage=e;await this.algoliaSearch(u.Page)}async onFilterChange(t){t.stopPropagation();const e={};const i=t.detail;i.element=t.target;if(this.indexResults){if(this.staticFacetFilters[i.filterId])this.staticFacetFilters[i.filterId]=i;else{e[i.filterId]=i;this._dynFacetFilters={...this._dynFacetFilters,...e}}this.indexResults.appliedFilters=this.makeAppliedFilters()}else this.staticFacetFilters[i.filterId]=i;this.filterChanged=i.value&&i.value.length?i.filterId:"all";this.resetPage();this.algoliaSearch(u.Filter)}dynFacetFiltersChange(){Object.values(this._dynFacetFilters).forEach((t=>{if(this.host.ownerDocument===t.element.ownerDocument)this.dynFacetFilters[t.filterId]=t;else delete this.dynFacetFilters[t.filterId]}))}browseIndexChange(){if(this.browseIndex&&(!this.query||this.query.length<this.minChars)){this.query="*"}}inputFieldSet(){if(!this.inputField)return;if(this.query!=="*"&&this.inputField&&this.inputField.value!==this.query)this.inputField.value=this.query}queryChange(){this.searchChange()}async internalIndexSwitch(){if(!this.replicaIndex||!this.indexResults||this.indexResults.index===this.replicaIndex)return;this.indexResults.index=this.replicaIndex;this.algoliaIndex=this.algoliaClient.initIndex(this.indexResults.index);this.resetPage();this.algoliaSearch(u.Replica)}pageChange(){this.onPageChange()}searchIndexNameChange(){if(!this.searchIndexName||!this.searchIndexName.length||this.searchIndex&&this.searchIndex.index===this.searchIndexName)return;this.searchIndex={index:this.searchIndexName}}initAlgoliaClient(){if(!this.appId||!this.apiKey)return;this.algoliaClient=h(this.appId,this.apiKey)}initAlgoliaIndex(){if(!this.algoliaClient||!this.searchIndex)return;if(this.searchIndex.index){if(!this.searchIndex.hitsPerPage)this.searchIndex.hitsPerPage=100;if(this.replicaIndex)this.searchIndex.index=this.replicaIndex;this.searchIndexName=this.searchIndex.index;this.algoliaIndex=this.algoliaClient.initIndex(this.searchIndex.index);this.searchChange()}}showResultsChange(){if(!this.resultsDiv||!this.defaultDiv)return;if(this.showResults){this.resultsDiv.style.width=this.host.scrollWidth+"px";this.resultsDiv.style.minHeight=this.host.scrollHeight+"px";n((()=>{this.resultsDiv.addEventListener("transitionend",this.onResultDisplay);this.resultsDiv.style.display="block";setTimeout((()=>this.resultsDiv.classList.add("show")),50)}))}else{n((()=>{this.resultsDiv.classList.remove("shown");this.defaultDiv.style.display="block";setTimeout((()=>{this.resultsDiv.addEventListener("transitionend",this.onResultDisplay);this.resultsDiv.classList.remove("show");if(!!this.slottedInput)this.slottedInput.focus({preventScroll:true});else this.defaultDiv.focus({preventScroll:true})}),50)}))}}handleFilterpropChange(){this.algoliaSearch(u.Init)}fixDomain(t){if(!this.searchIndex||!this.searchIndex.domain)return t;t.hits.map((t=>{if(t.url&&!t.url.match(/^http/))t.url=location.protocol+"//"+this.searchIndex.domain+t.url}));return t}resetPage(){if(!this.indexResults)return;this.indexResults.currentPage=0}clearAllFacetFilters(){Object.values(this._dynFacetFilters).forEach((t=>{t.element.value=""}));this._dynFacetFilters={}}algoliaFilterStr(){const t={};const e=e=>{let i;let s;Object.keys(e).forEach((n=>{i=e[n];t[n]=t[n]||{name:i.facetName,or:[],and:[],not:[]};s=t[n][i.operator];if(i.value&&i.value.length){t[n][i.operator]=[...s,...i.value]}}))};e(this.dynFacetFilters);e(this.staticFacetFilters);const i=(t,e)=>{if(e.indexOf(" ")>-1)return t+':"'+e+'"';else return t+":"+e};let s=[];let n;let r;Object.values(t).forEach((function(t){Object.keys(t).filter((t=>t.match(/(or|and|not)/))).forEach((e=>{n=t;r=t.name;if(e==="or"||e==="and"){if(n[e].length){s.push("( "+n[e].map((t=>{if(t.length)return i(r,t)})).join(" "+e.toLocaleUpperCase()+" ")+" )")}}else{if(n.not.length){s.push("( "+n[e].map((t=>{if(t.length)return"NOT "+i(r,t)})).join(" AND ")+" )")}}}))}));s=[...this.filters,...s];return s.join(" "+this.operator.toLocaleUpperCase()+" ")}handleInputChange(t){if(t.target!==this.inputField)return;this.query=this.inputField.value}async updateContent(){return this.promiseQueue.enqueue((()=>this.updateContentQueue()))}async updateContentQueue(){const t=this.outputSlot||this.resultsDiv;if(!t||!this.tpl)return"no tpl";const e=document.createElement("div");e.innerHTML=this.tpl;const i=[];this.placedAlgoliaEles=[];Array.from(e.querySelectorAll("nano-algolia, nano-algolia-filter, nano-algolia-results")).forEach(((t,e)=>{const s=document.createElement("div");s.dataset.placeholderId=e.toString();s.classList.add("nano-ele-placeholder");i.push(t);t.parentNode.replaceChild(s,t)}));t.innerHTML=this.tplRenderFn(e.innerHTML.replace(/&gt;/gm,">").replace(/&lt;/gm,"<").replace(/&amp;/gm,"&"),this.indexResults);Array.from(t.querySelectorAll("div.nano-ele-placeholder")).forEach((t=>{t.parentNode.replaceChild(i[parseInt(t.dataset.placeholderId)],t);this.placedAlgoliaEles.push(i[parseInt(t.dataset.placeholderId)])}));if(!this.placedAlgoliaEles.length)return Promise.resolve("algolia setup");return new Promise((e=>{const i=s=>{this.placedAlgoliaEles=this.placedAlgoliaEles.filter((t=>t!==s.detail));if(!this.placedAlgoliaEles.length){setTimeout((()=>e("tpl updated")),500);t.removeEventListener("nanoTplUpdated",i)}};t.addEventListener("nanoTplUpdated",i)}))}componentWillLoad(){r((t=>{this.tplSlot=a(this.host,'[slot="template"]')[0];this.outputSlot=a(this.host,'[slot="output"]')[0];this.slottedInput=a(this.host,'[slot="search-input"]')[0];this.hasLoadSlot=!!a(this.host,'[slot="loader"]')[0];if(!!this.tplSlot)this.tpl=this.tplSlot.innerHTML||this.tplSlot.innerText;if(this.slottedInput&&(this.slottedInput.tagName.toLocaleLowerCase()==="nano-input"||this.slottedInput instanceof HTMLInputElement)){this.inputField=this.slottedInput}else if(this.slottedInput){this.inputField=this.slottedInput.querySelector('nano-input, input:not([type="radio"]):not([type="checkbox"])')}else this.handleListenToChange();n((t=>{if(this.showResults&&this.tpl)this.searchChange()}))}));this.searchIndexNameChange();this.initAlgoliaClient();this.initAlgoliaIndex();m.create(this,this.wormholeState);if(this.storeId){f.init(this,["query","replicaIndex"],this.storeMethod,this.storeId);f.init(this,["apiKey","appId","searchIndex"],"session",this.storeId+"_api")}this.internalIndexSwitch()}connectedCallback(){this.searchChange=c(this.searchChange,300);this.browseIndexChange();this.host.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.host}))}render(){const t={indexResults:this.indexResults,results:this.currentHits,filterChanged:this.filterChanged,tplRenderFn:this.tplRenderFn,resultsPage:this.resultsPage,changeEvent:this.changeEvent,facets:this.facets,algoliaIndex:this.algoliaIndex,searchIndex:this.searchIndex,globalStoreMethod:this.storeMethod,isLoading:this.isLoading};return o(l,{class:{"show-results":this.showResults,"is-loading":this.isLoading},"aria-busy":this.isLoading},this.hasLoadSlot&&o("div",{hidden:!this.isLoading},o("slot",{name:"loader"})),!this.hasLoadSlot&&o("div",{class:{loader:true,loading:this.isLoading}},o("nano-spinner",{overlay:true,type:"circle"})),o(m.Provider,{state:t},o("slot",{name:"search-input"}),o("div",{class:"results-container","aria-live":"polite"},o("div",{ref:t=>this.resultsDiv=t,class:"results"},o("slot",{name:"output"})))),o("div",{ref:t=>this.defaultDiv=t,class:"default",tabindex:"-1"},o("slot",null)))}get host(){return t(this)}static get watchers(){return{listenTo:["handleListenToChange"],_dynFacetFilters:["dynFacetFiltersChange"],browseIndex:["browseIndexChange"],inputField:["inputFieldSet"],query:["queryChange"],replicaIndex:["internalIndexSwitch"],resultsPage:["pageChange"],searchIndexName:["searchIndexNameChange"],apiKey:["initAlgoliaClient"],appId:["initAlgoliaClient"],searchIndex:["initAlgoliaIndex"],showResults:["showResultsChange"],filters:["handleFilterpropChange"]}}};st.style=it;export{st as nano_algolia};
5
5
  //# sourceMappingURL=nano-algolia.entry.js.map