@nanoporetech-digital/components 5.9.6 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (752) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/cjs/{algolia-data-6841724e.js → algolia-data-dba27b97.js} +2 -2
  3. package/dist/cjs/{algolia-data-6841724e.js.map → algolia-data-dba27b97.js.map} +1 -1
  4. package/dist/cjs/{algoliasearch-lite.esm.browser-992a2eff.js → algoliasearch-lite.esm.browser-b74ca774.js} +30 -5
  5. package/dist/cjs/algoliasearch-lite.esm.browser-b74ca774.js.map +1 -0
  6. package/dist/cjs/{component-store-6d7b8855.js → component-store-149aeffe.js} +2 -2
  7. package/dist/cjs/{component-store-6d7b8855.js.map → component-store-149aeffe.js.map} +1 -1
  8. package/dist/cjs/fade-dcabf3c1.js +211 -0
  9. package/dist/cjs/fade-dcabf3c1.js.map +1 -0
  10. package/dist/cjs/{form-control-8db579a2.js → form-control-f100407e.js} +2 -2
  11. package/dist/cjs/{form-control-8db579a2.js.map → form-control-f100407e.js.map} +1 -1
  12. package/dist/cjs/fullscreen-d24940a1.js +133 -0
  13. package/dist/cjs/fullscreen-d24940a1.js.map +1 -0
  14. package/dist/cjs/{global-3a6a7873.js → global-a5710651.js} +7 -7
  15. package/dist/cjs/{global-3a6a7873.js.map → global-a5710651.js.map} +1 -1
  16. package/dist/cjs/{index-1d3ebe1a.js → index-14451c95.js} +8 -10
  17. package/dist/cjs/index-14451c95.js.map +1 -0
  18. package/dist/cjs/{index-0f470227.js → index-f6f89d47.js} +2 -2
  19. package/dist/cjs/{index-0f470227.js.map → index-f6f89d47.js.map} +1 -1
  20. package/dist/cjs/lazyload-f6be7590.js +95 -0
  21. package/dist/cjs/lazyload-f6be7590.js.map +1 -0
  22. package/dist/cjs/loader.cjs.js +4 -4
  23. package/dist/cjs/loader.cjs.js.map +1 -1
  24. package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
  25. package/dist/cjs/nano-alert.cjs.entry.js +3 -3
  26. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
  28. package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -7
  30. package/dist/cjs/nano-algolia-pagination.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
  32. package/dist/cjs/nano-algolia-results.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nano-algolia.cjs.entry.js +995 -27
  34. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
  36. package/dist/cjs/nano-checkbox-group.cjs.entry.js +10 -4
  37. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-checkbox.cjs.entry.js +4 -2
  39. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nano-components.cjs.js +4 -4
  41. package/dist/cjs/nano-components.cjs.js.map +1 -1
  42. package/dist/cjs/nano-datalist_3.cjs.entry.js +4 -4
  43. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
  45. package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
  46. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nano-demo.cjs.entry.js +1 -1
  48. package/dist/cjs/nano-details.cjs.entry.js +2 -2
  49. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nano-dialog.cjs.entry.js +5 -5
  51. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nano-drawer.cjs.entry.js +5 -5
  53. package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nano-dropdown.cjs.entry.js +1 -1
  55. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nano-field-validator.cjs.entry.js +7 -5
  57. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nano-file-upload.cjs.entry.js +2 -2
  59. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +4 -4
  61. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nano-global-nav.cjs.entry.js +207 -201
  63. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nano-global-search-results.cjs.entry.js +9 -10
  65. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nano-grid-item.cjs.entry.js +1 -1
  67. package/dist/cjs/nano-grid_2.cjs.entry.js +2 -2
  68. package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nano-hero.cjs.entry.js +2 -2
  70. package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nano-icon-button_2.cjs.entry.js +24 -4
  72. package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
  73. package/dist/cjs/nano-icon.cjs.entry.js +4 -4
  74. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  75. package/dist/cjs/nano-input.cjs.entry.js +3 -3
  76. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  77. package/dist/cjs/nano-menu-drawer.cjs.entry.js +2 -2
  78. package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
  79. package/dist/cjs/nano-overflow-nav.cjs.entry.js +2 -2
  80. package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -1
  81. package/dist/cjs/nano-progress-bar.cjs.entry.js +2 -2
  82. package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
  83. package/dist/cjs/nano-range.cjs.entry.js +2 -2
  84. package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
  85. package/dist/cjs/nano-rating.cjs.entry.js +2 -2
  86. package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
  87. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
  88. package/dist/cjs/nano-slide.cjs.entry.js +1 -1
  89. package/dist/cjs/nano-slides-2f3dcc02.js +2975 -0
  90. package/dist/cjs/nano-slides-2f3dcc02.js.map +1 -0
  91. package/dist/cjs/nano-slides.cjs.entry.js +3 -4292
  92. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  93. package/dist/cjs/nano-sortable.cjs.entry.js +1 -1
  94. package/dist/cjs/nano-spinner.cjs.entry.js +2 -2
  95. package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
  96. package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
  97. package/dist/cjs/nano-sticker.cjs.entry.js +3 -2
  98. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  99. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  100. package/dist/cjs/nano-tab-group.cjs.entry.js +4 -4
  101. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  102. package/dist/cjs/nano-tab.cjs.entry.js +2 -2
  103. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  104. package/dist/cjs/{nano-table-49b4b3a6.js → nano-table-26845696.js} +5 -5
  105. package/dist/cjs/{nano-table-49b4b3a6.js.map → nano-table-26845696.js.map} +1 -1
  106. package/dist/cjs/nano-table.cjs.entry.js +3 -3
  107. package/dist/cjs/page-dots-ae2cefb4.js +140 -0
  108. package/dist/cjs/page-dots-ae2cefb4.js.map +1 -0
  109. package/dist/cjs/{scroll-fc1b8387.js → scroll-e8c21f80.js} +8 -4
  110. package/dist/cjs/scroll-e8c21f80.js.map +1 -0
  111. package/dist/cjs/{table.worker-da980a2f.js → table.worker-a5996745.js} +4 -4
  112. package/dist/cjs/table.worker-a5996745.js.map +1 -0
  113. package/dist/collection/collection-manifest.json +1 -2
  114. package/dist/collection/components/alert/alert.css +1 -2
  115. package/dist/collection/components/algolia/algolia-data.js.map +1 -1
  116. package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
  117. package/dist/collection/components/algolia/algolia-interface.js.map +1 -1
  118. package/dist/collection/components/algolia/algolia-pagination.js +0 -5
  119. package/dist/collection/components/algolia/algolia-pagination.js.map +1 -1
  120. package/dist/collection/components/algolia/algolia-results.js.map +1 -1
  121. package/dist/collection/components/algolia/algolia.js +21 -32
  122. package/dist/collection/components/algolia/algolia.js.map +1 -1
  123. package/dist/collection/components/algolia/lib/squirrelly/browser.js +10 -0
  124. package/dist/collection/components/algolia/lib/squirrelly/browser.js.map +1 -0
  125. package/dist/collection/components/algolia/lib/squirrelly/compile-string.js +151 -0
  126. package/dist/collection/components/algolia/lib/squirrelly/compile-string.js.map +1 -0
  127. package/dist/collection/components/algolia/lib/squirrelly/compile.js +44 -0
  128. package/dist/collection/components/algolia/lib/squirrelly/compile.js.map +1 -0
  129. package/dist/collection/components/algolia/lib/squirrelly/config.js +68 -0
  130. package/dist/collection/components/algolia/lib/squirrelly/config.js.map +1 -0
  131. package/dist/collection/components/algolia/lib/squirrelly/container-utils.js +57 -0
  132. package/dist/collection/components/algolia/lib/squirrelly/container-utils.js.map +1 -0
  133. package/dist/collection/components/algolia/lib/squirrelly/containers.js +128 -0
  134. package/dist/collection/components/algolia/lib/squirrelly/containers.js.map +1 -0
  135. package/dist/collection/components/algolia/lib/squirrelly/err.js +39 -0
  136. package/dist/collection/components/algolia/lib/squirrelly/err.js.map +1 -0
  137. package/dist/collection/components/algolia/lib/squirrelly/parse.js +327 -0
  138. package/dist/collection/components/algolia/lib/squirrelly/parse.js.map +1 -0
  139. package/dist/collection/components/algolia/lib/squirrelly/render.js +62 -0
  140. package/dist/collection/components/algolia/lib/squirrelly/render.js.map +1 -0
  141. package/dist/collection/components/algolia/lib/squirrelly/storage.js +32 -0
  142. package/dist/collection/components/algolia/lib/squirrelly/storage.js.map +1 -0
  143. package/dist/collection/components/algolia/lib/squirrelly/utils.js +102 -0
  144. package/dist/collection/components/algolia/lib/squirrelly/utils.js.map +1 -0
  145. package/dist/collection/{utils → components/algolia/lib}/template.js +1 -2
  146. package/dist/collection/components/algolia/lib/template.js.map +1 -0
  147. package/dist/collection/components/checkbox/checkbox-group.css +17 -15
  148. package/dist/collection/components/checkbox/checkbox-group.js +29 -2
  149. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  150. package/dist/collection/components/checkbox/checkbox.css +20 -22
  151. package/dist/collection/components/checkbox/checkbox.js +2 -0
  152. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  153. package/dist/collection/components/date-picker/date-picker.css +5 -10
  154. package/dist/collection/components/details/details.css +4 -4
  155. package/dist/collection/components/dialog/dialog.css +3 -6
  156. package/dist/collection/components/dialog/dialog.js +1 -1
  157. package/dist/collection/components/dialog/dialog.js.map +1 -1
  158. package/dist/collection/components/drawer/drawer.css +18 -24
  159. package/dist/collection/components/drawer/drawer.js +1 -1
  160. package/dist/collection/components/drawer/drawer.js.map +1 -1
  161. package/dist/collection/components/dropdown/dropdown.js +1 -1
  162. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  163. package/dist/collection/components/field-validator/field-validator.js +5 -3
  164. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  165. package/dist/collection/components/file-upload/file-upload.css +16 -30
  166. package/dist/collection/components/global-nav/global-nav.js +203 -205
  167. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  168. package/dist/collection/components/global-nav/style/global-nav.css +97 -138
  169. package/dist/collection/components/global-search-results/global-search-results.css +85 -127
  170. package/dist/collection/components/global-search-results/global-search-results.js +7 -8
  171. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  172. package/dist/collection/components/hero/hero.css +13 -26
  173. package/dist/collection/components/icon/icon.css +6 -6
  174. package/dist/collection/components/icon/icon.js +2 -2
  175. package/dist/collection/components/icon/icon.js.map +1 -1
  176. package/dist/collection/components/img/img.css +7 -17
  177. package/dist/collection/components/input/input.css +15 -36
  178. package/dist/collection/components/menu/menu.css +1 -1
  179. package/dist/collection/components/menu/menu.js +1 -1
  180. package/dist/collection/components/menu/menu.js.map +1 -1
  181. package/dist/collection/components/menu-drawer/menu-drawer.css +5 -14
  182. package/dist/collection/components/nav-item/nav-item.css +25 -46
  183. package/dist/collection/components/option/option.css +3 -5
  184. package/dist/collection/components/overflow-nav/overflow-nav.css +16 -27
  185. package/dist/collection/components/progress-bar/progress-bar.css +2 -2
  186. package/dist/collection/components/range/range.css +17 -19
  187. package/dist/collection/components/rating/rating.css +2 -8
  188. package/dist/collection/components/select/select.css +30 -53
  189. package/dist/collection/components/slides/lib/js/animate.js +29 -54
  190. package/dist/collection/components/slides/lib/js/animate.js.map +1 -0
  191. package/dist/collection/components/slides/lib/js/cell.js +12 -24
  192. package/dist/collection/components/slides/lib/js/cell.js.map +1 -0
  193. package/dist/collection/components/slides/lib/js/drag.js +65 -116
  194. package/dist/collection/components/slides/lib/js/drag.js.map +1 -0
  195. package/dist/collection/components/slides/lib/js/fade.js +52 -79
  196. package/dist/collection/components/slides/lib/js/fade.js.map +1 -0
  197. package/dist/collection/components/slides/lib/js/flickity.js +118 -206
  198. package/dist/collection/components/slides/lib/js/flickity.js.map +1 -0
  199. package/dist/collection/components/slides/lib/js/fullscreen.js +21 -40
  200. package/dist/collection/components/slides/lib/js/fullscreen.js.map +1 -0
  201. package/dist/collection/components/slides/lib/js/index.js +4 -6
  202. package/dist/collection/components/slides/lib/js/index.js.map +1 -0
  203. package/dist/collection/components/slides/lib/js/lazyload.js +21 -36
  204. package/dist/collection/components/slides/lib/js/lazyload.js.map +1 -0
  205. package/dist/collection/components/slides/lib/js/page-dots.js +21 -45
  206. package/dist/collection/components/slides/lib/js/page-dots.js.map +1 -0
  207. package/dist/collection/components/slides/lib/js/player.js +12 -40
  208. package/dist/collection/components/slides/lib/js/player.js.map +1 -0
  209. package/dist/collection/components/slides/lib/js/prev-next-button.js +24 -52
  210. package/dist/collection/components/slides/lib/js/prev-next-button.js.map +1 -0
  211. package/dist/collection/components/slides/lib/js/slide.js +10 -15
  212. package/dist/collection/components/slides/lib/js/slide.js.map +1 -0
  213. package/dist/collection/components/slides/lib/js/utils/event-emitter.js +75 -0
  214. package/dist/collection/components/slides/lib/js/utils/event-emitter.js.map +1 -0
  215. package/dist/collection/components/slides/lib/js/utils/gestures.js +436 -0
  216. package/dist/collection/components/slides/lib/js/utils/gestures.js.map +1 -0
  217. package/dist/collection/components/slides/lib/js/utils/get-size.js +160 -0
  218. package/dist/collection/components/slides/lib/js/utils/get-size.js.map +1 -0
  219. package/dist/collection/components/slides/lib/js/utils/utils.js +166 -0
  220. package/dist/collection/components/slides/lib/js/utils/utils.js.map +1 -0
  221. package/dist/collection/components/slides/slides.css +18 -19
  222. package/dist/collection/components/slides/slides.js +31 -5
  223. package/dist/collection/components/slides/slides.js.map +1 -1
  224. package/dist/collection/components/spinner/spinner.css +1 -2
  225. package/dist/collection/components/sticker/sticker.js +2 -1
  226. package/dist/collection/components/sticker/sticker.js.map +1 -1
  227. package/dist/collection/components/table/table.css +29 -48
  228. package/dist/collection/components/tabs/tab-group.css +10 -14
  229. package/dist/collection/components/tabs/tab.css +8 -18
  230. package/dist/collection/components/tooltip/tooltip.css +34 -31
  231. package/dist/collection/components/tooltip/tooltip.js +23 -3
  232. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  233. package/dist/collection/global/script/global.js +6 -6
  234. package/dist/collection/global/script/global.js.map +1 -1
  235. package/dist/collection/utils/scroll.js +7 -3
  236. package/dist/collection/utils/scroll.js.map +1 -1
  237. package/dist/components/algolia-data.js.map +1 -1
  238. package/dist/components/algolia.js +991 -25
  239. package/dist/components/algolia.js.map +1 -1
  240. package/dist/components/algoliasearch-lite.esm.browser.js +29 -4
  241. package/dist/components/algoliasearch-lite.esm.browser.js.map +1 -1
  242. package/dist/components/date-picker.js +1 -1
  243. package/dist/components/date-picker.js.map +1 -1
  244. package/dist/components/dropdown.js +1 -1
  245. package/dist/components/dropdown.js.map +1 -1
  246. package/dist/components/fade.js +208 -0
  247. package/dist/components/fade.js.map +1 -0
  248. package/dist/components/fullscreen.js +130 -0
  249. package/dist/components/fullscreen.js.map +1 -0
  250. package/dist/components/icon.js +3 -3
  251. package/dist/components/icon.js.map +1 -1
  252. package/dist/components/img.js +1 -1
  253. package/dist/components/img.js.map +1 -1
  254. package/dist/components/index.d.ts +0 -1
  255. package/dist/components/index.js +6 -7
  256. package/dist/components/index.js.map +1 -1
  257. package/dist/components/input.js +1 -1
  258. package/dist/components/input.js.map +1 -1
  259. package/dist/components/lazyload.js +92 -0
  260. package/dist/components/lazyload.js.map +1 -0
  261. package/dist/components/menu.js +2 -2
  262. package/dist/components/menu.js.map +1 -1
  263. package/dist/components/nano-alert.js +1 -1
  264. package/dist/components/nano-alert.js.map +1 -1
  265. package/dist/components/nano-algolia-filter.js.map +1 -1
  266. package/dist/components/nano-algolia-pagination.js +0 -5
  267. package/dist/components/nano-algolia-pagination.js.map +1 -1
  268. package/dist/components/nano-algolia-results.js.map +1 -1
  269. package/dist/components/nano-checkbox-group.js +10 -3
  270. package/dist/components/nano-checkbox-group.js.map +1 -1
  271. package/dist/components/nano-checkbox.js +3 -1
  272. package/dist/components/nano-checkbox.js.map +1 -1
  273. package/dist/components/nano-details.js +1 -1
  274. package/dist/components/nano-details.js.map +1 -1
  275. package/dist/components/nano-dialog.js +2 -2
  276. package/dist/components/nano-dialog.js.map +1 -1
  277. package/dist/components/nano-drawer.js +2 -2
  278. package/dist/components/nano-drawer.js.map +1 -1
  279. package/dist/components/nano-field-validator.js +5 -3
  280. package/dist/components/nano-field-validator.js.map +1 -1
  281. package/dist/components/nano-file-upload.js +1 -1
  282. package/dist/components/nano-file-upload.js.map +1 -1
  283. package/dist/components/nano-global-nav.js +204 -200
  284. package/dist/components/nano-global-nav.js.map +1 -1
  285. package/dist/components/nano-global-search-results.js +8 -9
  286. package/dist/components/nano-global-search-results.js.map +1 -1
  287. package/dist/components/nano-hero.js +1 -1
  288. package/dist/components/nano-hero.js.map +1 -1
  289. package/dist/components/nano-menu-drawer.js +1 -1
  290. package/dist/components/nano-menu-drawer.js.map +1 -1
  291. package/dist/components/nano-overflow-nav.js +1 -1
  292. package/dist/components/nano-overflow-nav.js.map +1 -1
  293. package/dist/components/nano-range.js +1 -1
  294. package/dist/components/nano-range.js.map +1 -1
  295. package/dist/components/nano-rating.js +1 -1
  296. package/dist/components/nano-rating.js.map +1 -1
  297. package/dist/components/nano-slides.js +760 -2090
  298. package/dist/components/nano-slides.js.map +1 -1
  299. package/dist/components/nano-tab-group.js +1 -1
  300. package/dist/components/nano-tab-group.js.map +1 -1
  301. package/dist/components/nano-tab.js +1 -1
  302. package/dist/components/nano-tab.js.map +1 -1
  303. package/dist/components/nav-item.js +1 -1
  304. package/dist/components/nav-item.js.map +1 -1
  305. package/dist/components/option.js +1 -1
  306. package/dist/components/option.js.map +1 -1
  307. package/dist/components/page-dots.js +137 -0
  308. package/dist/components/page-dots.js.map +1 -0
  309. package/dist/components/progress-bar.js +1 -1
  310. package/dist/components/progress-bar.js.map +1 -1
  311. package/dist/components/scroll.js +7 -3
  312. package/dist/components/scroll.js.map +1 -1
  313. package/dist/components/select.js +1 -1
  314. package/dist/components/select.js.map +1 -1
  315. package/dist/components/spinner.js +1 -1
  316. package/dist/components/spinner.js.map +1 -1
  317. package/dist/components/sticker.js +2 -1
  318. package/dist/components/sticker.js.map +1 -1
  319. package/dist/components/table.js +1 -1
  320. package/dist/components/table.js.map +1 -1
  321. package/dist/components/tooltip.js +24 -4
  322. package/dist/components/tooltip.js.map +1 -1
  323. package/dist/esm/{algolia-data-ebf2a439.js → algolia-data-1b42827c.js} +2 -2
  324. package/dist/esm/{algolia-data-ebf2a439.js.map → algolia-data-1b42827c.js.map} +1 -1
  325. package/dist/esm/{algoliasearch-lite.esm.browser-04891fdc.js → algoliasearch-lite.esm.browser-d71a28dc.js} +30 -5
  326. package/dist/esm/algoliasearch-lite.esm.browser-d71a28dc.js.map +1 -0
  327. package/dist/esm/{component-store-54df2005.js → component-store-f7eb0a56.js} +2 -2
  328. package/dist/esm/{component-store-54df2005.js.map → component-store-f7eb0a56.js.map} +1 -1
  329. package/dist/esm/fade-1aa7a6db.js +209 -0
  330. package/dist/esm/fade-1aa7a6db.js.map +1 -0
  331. package/dist/esm/{form-control-eb06e009.js → form-control-881fa3af.js} +2 -2
  332. package/dist/esm/{form-control-eb06e009.js.map → form-control-881fa3af.js.map} +1 -1
  333. package/dist/esm/fullscreen-86fa276a.js +131 -0
  334. package/dist/esm/fullscreen-86fa276a.js.map +1 -0
  335. package/dist/esm/{global-f6e05656.js → global-be484e8c.js} +7 -7
  336. package/dist/esm/{global-f6e05656.js.map → global-be484e8c.js.map} +1 -1
  337. package/dist/esm/{index-e8891229.js → index-3003356f.js} +2 -2
  338. package/dist/esm/{index-e8891229.js.map → index-3003356f.js.map} +1 -1
  339. package/dist/esm/{index-06666022.js → index-9695db0a.js} +8 -10
  340. package/dist/esm/index-9695db0a.js.map +1 -0
  341. package/dist/esm/lazyload-994232a6.js +93 -0
  342. package/dist/esm/lazyload-994232a6.js.map +1 -0
  343. package/dist/esm/loader.js +5 -5
  344. package/dist/esm/loader.js.map +1 -1
  345. package/dist/esm/nano-accordion.entry.js +1 -1
  346. package/dist/esm/nano-alert.entry.js +3 -3
  347. package/dist/esm/nano-alert.entry.js.map +1 -1
  348. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  349. package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
  350. package/dist/esm/nano-algolia-pagination.entry.js +2 -7
  351. package/dist/esm/nano-algolia-pagination.entry.js.map +1 -1
  352. package/dist/esm/nano-algolia-results.entry.js +2 -2
  353. package/dist/esm/nano-algolia-results.entry.js.map +1 -1
  354. package/dist/esm/nano-algolia.entry.js +995 -27
  355. package/dist/esm/nano-algolia.entry.js.map +1 -1
  356. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  357. package/dist/esm/nano-checkbox-group.entry.js +10 -4
  358. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  359. package/dist/esm/nano-checkbox.entry.js +4 -2
  360. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  361. package/dist/esm/nano-components.js +5 -5
  362. package/dist/esm/nano-components.js.map +1 -1
  363. package/dist/esm/nano-datalist_3.entry.js +4 -4
  364. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  365. package/dist/esm/nano-date-input.entry.js +1 -1
  366. package/dist/esm/nano-date-picker.entry.js +2 -2
  367. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  368. package/dist/esm/nano-demo.entry.js +1 -1
  369. package/dist/esm/nano-details.entry.js +2 -2
  370. package/dist/esm/nano-details.entry.js.map +1 -1
  371. package/dist/esm/nano-dialog.entry.js +5 -5
  372. package/dist/esm/nano-dialog.entry.js.map +1 -1
  373. package/dist/esm/nano-drawer.entry.js +5 -5
  374. package/dist/esm/nano-drawer.entry.js.map +1 -1
  375. package/dist/esm/nano-dropdown.entry.js +1 -1
  376. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  377. package/dist/esm/nano-field-validator.entry.js +7 -5
  378. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  379. package/dist/esm/nano-file-upload.entry.js +2 -2
  380. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  381. package/dist/esm/nano-global-nav-user-profile_3.entry.js +4 -4
  382. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  383. package/dist/esm/nano-global-nav.entry.js +207 -201
  384. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  385. package/dist/esm/nano-global-search-results.entry.js +9 -10
  386. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  387. package/dist/esm/nano-grid-item.entry.js +1 -1
  388. package/dist/esm/nano-grid_2.entry.js +2 -2
  389. package/dist/esm/nano-grid_2.entry.js.map +1 -1
  390. package/dist/esm/nano-hero.entry.js +2 -2
  391. package/dist/esm/nano-hero.entry.js.map +1 -1
  392. package/dist/esm/nano-icon-button_2.entry.js +24 -4
  393. package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
  394. package/dist/esm/nano-icon.entry.js +4 -4
  395. package/dist/esm/nano-icon.entry.js.map +1 -1
  396. package/dist/esm/nano-input.entry.js +3 -3
  397. package/dist/esm/nano-input.entry.js.map +1 -1
  398. package/dist/esm/nano-menu-drawer.entry.js +2 -2
  399. package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
  400. package/dist/esm/nano-overflow-nav.entry.js +2 -2
  401. package/dist/esm/nano-overflow-nav.entry.js.map +1 -1
  402. package/dist/esm/nano-progress-bar.entry.js +2 -2
  403. package/dist/esm/nano-progress-bar.entry.js.map +1 -1
  404. package/dist/esm/nano-range.entry.js +2 -2
  405. package/dist/esm/nano-range.entry.js.map +1 -1
  406. package/dist/esm/nano-rating.entry.js +2 -2
  407. package/dist/esm/nano-rating.entry.js.map +1 -1
  408. package/dist/esm/nano-resize-observe_2.entry.js +1 -1
  409. package/dist/esm/nano-slide.entry.js +1 -1
  410. package/dist/esm/nano-slides-9908c44d.js +2970 -0
  411. package/dist/esm/nano-slides-9908c44d.js.map +1 -0
  412. package/dist/esm/nano-slides.entry.js +2 -4295
  413. package/dist/esm/nano-slides.entry.js.map +1 -1
  414. package/dist/esm/nano-sortable.entry.js +1 -1
  415. package/dist/esm/nano-spinner.entry.js +2 -2
  416. package/dist/esm/nano-spinner.entry.js.map +1 -1
  417. package/dist/esm/nano-split-pane.entry.js +1 -1
  418. package/dist/esm/nano-sticker.entry.js +3 -2
  419. package/dist/esm/nano-sticker.entry.js.map +1 -1
  420. package/dist/esm/nano-tab-content.entry.js +1 -1
  421. package/dist/esm/nano-tab-group.entry.js +4 -4
  422. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  423. package/dist/esm/nano-tab.entry.js +2 -2
  424. package/dist/esm/nano-tab.entry.js.map +1 -1
  425. package/dist/esm/{nano-table-673838b5.js → nano-table-55d753cb.js} +5 -5
  426. package/dist/esm/{nano-table-673838b5.js.map → nano-table-55d753cb.js.map} +1 -1
  427. package/dist/esm/nano-table.entry.js +3 -3
  428. package/dist/esm/page-dots-467ace2e.js +138 -0
  429. package/dist/esm/page-dots-467ace2e.js.map +1 -0
  430. package/dist/esm/{scroll-ec7ac257.js → scroll-ac332213.js} +8 -4
  431. package/dist/esm/scroll-ac332213.js.map +1 -0
  432. package/dist/esm/{table.worker-608a4868.js → table.worker-34706ecc.js} +4 -4
  433. package/dist/esm/table.worker-34706ecc.js.map +1 -0
  434. package/dist/nano-components/{p-74a7fc4f.js → active-element-75b7c8a0.js} +1 -1
  435. package/dist/nano-components/algolia-data-1b42827c.js +5 -0
  436. package/dist/nano-components/{p-a26bdb65.js.map → algolia-data-1b42827c.js.map} +1 -1
  437. package/dist/nano-components/algoliasearch-lite.esm.browser-d71a28dc.js +5 -0
  438. package/dist/nano-components/algoliasearch-lite.esm.browser-d71a28dc.js.map +1 -0
  439. package/dist/nano-components/component-store-f7eb0a56.js +5 -0
  440. package/dist/nano-components/{p-dd5687db.js.map → component-store-f7eb0a56.js.map} +1 -1
  441. package/dist/nano-components/{p-cecb9af1.js → date-utils-6b7a6e1f.js} +1 -1
  442. package/dist/nano-components/{p-cdfc507e.js → dom-8599fac1.js} +1 -1
  443. package/dist/nano-components/{p-842cf127.js → drag-1723a4cc.js} +1 -1
  444. package/dist/nano-components/{p-9bfdee71.js → events-6a805b42.js} +1 -1
  445. package/dist/nano-components/fade-1aa7a6db.js +5 -0
  446. package/dist/nano-components/fade-1aa7a6db.js.map +1 -0
  447. package/dist/nano-components/{p-f8f89998.js → focus-visible-8b2c14da.js} +1 -1
  448. package/dist/nano-components/form-control-881fa3af.js +5 -0
  449. package/dist/nano-components/{p-dc805ecc.js.map → form-control-881fa3af.js.map} +1 -1
  450. package/dist/nano-components/fullscreen-86fa276a.js +5 -0
  451. package/dist/nano-components/fullscreen-86fa276a.js.map +1 -0
  452. package/dist/nano-components/{p-d4f6ec9f.js → global-be484e8c.js} +2 -2
  453. package/dist/nano-components/{p-d4f6ec9f.js.map → global-be484e8c.js.map} +1 -1
  454. package/dist/nano-components/index-3003356f.js +5 -0
  455. package/dist/nano-components/{p-70747f20.js.map → index-3003356f.js.map} +1 -1
  456. package/dist/nano-components/{p-d6a04b3a.js → index-9695db0a.js} +2 -2
  457. package/dist/nano-components/{p-d6a04b3a.js.map → index-9695db0a.js.map} +1 -1
  458. package/dist/nano-components/{p-bb07c3d0.js → index-f626f476.js} +1 -1
  459. package/dist/nano-components/index.esm.js +1 -1
  460. package/dist/nano-components/index.esm.js.map +1 -1
  461. package/dist/nano-components/lazyload-994232a6.js +5 -0
  462. package/dist/nano-components/lazyload-994232a6.js.map +1 -0
  463. package/dist/nano-components/{p-2155fc2c.js → local-my-account-6662da72.js} +1 -1
  464. package/dist/nano-components/{p-ee045579.js → math-c02ddfda.js} +1 -1
  465. package/dist/nano-components/modal-bd9638c0.js +5 -0
  466. package/dist/nano-components/{p-2234694a.js.map → modal-bd9638c0.js.map} +1 -1
  467. package/dist/nano-components/nano-accordion.entry.js +5 -0
  468. package/dist/nano-components/{p-9f60ff14.entry.js.map → nano-accordion.entry.js.map} +1 -1
  469. package/dist/nano-components/nano-alert.entry.js +5 -0
  470. package/dist/nano-components/{p-191352c4.entry.js.map → nano-alert.entry.js.map} +1 -1
  471. package/dist/nano-components/nano-algolia-filter.entry.js +5 -0
  472. package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -0
  473. package/dist/nano-components/nano-algolia-pagination.entry.js +5 -0
  474. package/dist/nano-components/nano-algolia-pagination.entry.js.map +1 -0
  475. package/dist/nano-components/nano-algolia-results.entry.js +5 -0
  476. package/dist/nano-components/nano-algolia-results.entry.js.map +1 -0
  477. package/dist/nano-components/nano-algolia.entry.js +5 -0
  478. package/dist/nano-components/nano-algolia.entry.js.map +1 -0
  479. package/dist/nano-components/nano-aspect-ratio.entry.js +5 -0
  480. package/dist/nano-components/{p-87329424.entry.js.map → nano-aspect-ratio.entry.js.map} +1 -1
  481. package/dist/nano-components/nano-checkbox-group.entry.js +5 -0
  482. package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -0
  483. package/dist/nano-components/nano-checkbox.entry.js +5 -0
  484. package/dist/nano-components/nano-checkbox.entry.js.map +1 -0
  485. package/dist/nano-components/nano-components.css +1 -1
  486. package/dist/nano-components/nano-components.esm.js +1 -1
  487. package/dist/nano-components/nano-components.esm.js.map +1 -1
  488. package/dist/nano-components/nano-datalist_3.entry.js +5 -0
  489. package/dist/nano-components/nano-datalist_3.entry.js.map +1 -0
  490. package/dist/nano-components/nano-date-input.entry.js +5 -0
  491. package/dist/nano-components/{p-d4e44f93.entry.js.map → nano-date-input.entry.js.map} +1 -1
  492. package/dist/nano-components/nano-date-picker.entry.js +5 -0
  493. package/dist/nano-components/{p-efd3e121.entry.js.map → nano-date-picker.entry.js.map} +1 -1
  494. package/dist/nano-components/nano-demo.entry.js +5 -0
  495. package/dist/nano-components/{p-e98835e2.entry.js.map → nano-demo.entry.js.map} +1 -1
  496. package/dist/nano-components/nano-details.entry.js +5 -0
  497. package/dist/nano-components/nano-details.entry.js.map +1 -0
  498. package/dist/nano-components/nano-dialog.entry.js +5 -0
  499. package/dist/nano-components/{p-79fff4fd.entry.js.map → nano-dialog.entry.js.map} +1 -1
  500. package/dist/nano-components/nano-drawer.entry.js +5 -0
  501. package/dist/nano-components/nano-drawer.entry.js.map +1 -0
  502. package/dist/nano-components/nano-dropdown.entry.js +5 -0
  503. package/dist/nano-components/nano-dropdown.entry.js.map +1 -0
  504. package/dist/nano-components/nano-field-validator.entry.js +5 -0
  505. package/dist/nano-components/nano-field-validator.entry.js.map +1 -0
  506. package/dist/nano-components/nano-file-upload.entry.js +5 -0
  507. package/dist/nano-components/nano-file-upload.entry.js.map +1 -0
  508. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +5 -0
  509. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -0
  510. package/dist/nano-components/nano-global-nav.entry.js +5 -0
  511. package/dist/nano-components/nano-global-nav.entry.js.map +1 -0
  512. package/dist/nano-components/nano-global-search-results.entry.js +5 -0
  513. package/dist/nano-components/nano-global-search-results.entry.js.map +1 -0
  514. package/dist/nano-components/nano-grid-item.entry.js +5 -0
  515. package/dist/nano-components/{p-9c290055.entry.js.map → nano-grid-item.entry.js.map} +1 -1
  516. package/dist/nano-components/nano-grid_2.entry.js +5 -0
  517. package/dist/nano-components/{p-7c82af28.entry.js.map → nano-grid_2.entry.js.map} +1 -1
  518. package/dist/nano-components/nano-hero.entry.js +5 -0
  519. package/dist/nano-components/{p-328ef9d3.entry.js.map → nano-hero.entry.js.map} +1 -1
  520. package/dist/nano-components/nano-icon-button_2.entry.js +5 -0
  521. package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -0
  522. package/dist/nano-components/nano-icon.entry.js +5 -0
  523. package/dist/nano-components/nano-icon.entry.js.map +1 -0
  524. package/dist/nano-components/nano-input.entry.js +5 -0
  525. package/dist/nano-components/nano-input.entry.js.map +1 -0
  526. package/dist/nano-components/nano-menu-drawer.entry.js +5 -0
  527. package/dist/nano-components/nano-menu-drawer.entry.js.map +1 -0
  528. package/dist/nano-components/nano-overflow-nav.entry.js +5 -0
  529. package/dist/nano-components/nano-overflow-nav.entry.js.map +1 -0
  530. package/dist/nano-components/nano-progress-bar.entry.js +5 -0
  531. package/dist/nano-components/nano-progress-bar.entry.js.map +1 -0
  532. package/dist/nano-components/nano-range.entry.js +5 -0
  533. package/dist/nano-components/nano-range.entry.js.map +1 -0
  534. package/dist/nano-components/nano-rating.entry.js +5 -0
  535. package/dist/nano-components/nano-rating.entry.js.map +1 -0
  536. package/dist/nano-components/nano-resize-observe_2.entry.js +5 -0
  537. package/dist/nano-components/{p-e6a0675e.entry.js.map → nano-resize-observe_2.entry.js.map} +1 -1
  538. package/dist/nano-components/nano-slide.entry.js +5 -0
  539. package/dist/nano-components/{p-3d8fb8a1.entry.js.map → nano-slide.entry.js.map} +1 -1
  540. package/dist/nano-components/nano-slides-9908c44d.js +20 -0
  541. package/dist/nano-components/nano-slides-9908c44d.js.map +1 -0
  542. package/dist/nano-components/nano-slides.entry.js +5 -0
  543. package/dist/nano-components/nano-sortable.entry.js +5 -0
  544. package/dist/nano-components/{p-3ae362ae.entry.js.map → nano-sortable.entry.js.map} +1 -1
  545. package/dist/nano-components/nano-spinner.entry.js +5 -0
  546. package/dist/nano-components/{p-9925e504.entry.js.map → nano-spinner.entry.js.map} +1 -1
  547. package/dist/nano-components/nano-split-pane.entry.js +5 -0
  548. package/dist/nano-components/{p-6c4171fa.entry.js.map → nano-split-pane.entry.js.map} +1 -1
  549. package/dist/nano-components/nano-sticker.entry.js +5 -0
  550. package/dist/nano-components/nano-sticker.entry.js.map +1 -0
  551. package/dist/nano-components/nano-tab-content.entry.js +5 -0
  552. package/dist/nano-components/{p-3f40e370.entry.js.map → nano-tab-content.entry.js.map} +1 -1
  553. package/dist/nano-components/nano-tab-group.entry.js +5 -0
  554. package/dist/nano-components/nano-tab-group.entry.js.map +1 -0
  555. package/dist/nano-components/nano-tab.entry.js +5 -0
  556. package/dist/nano-components/{p-3cac5f6d.entry.js.map → nano-tab.entry.js.map} +1 -1
  557. package/dist/nano-components/nano-table-55d753cb.js +5 -0
  558. package/dist/nano-components/nano-table-55d753cb.js.map +1 -0
  559. package/dist/nano-components/nano-table.entry.js +5 -0
  560. package/dist/nano-components/page-dots-467ace2e.js +5 -0
  561. package/dist/nano-components/page-dots-467ace2e.js.map +1 -0
  562. package/dist/nano-components/{p-cd1fd454.js → popover-e5e7a641.js} +1 -1
  563. package/dist/nano-components/scroll-ac332213.js +5 -0
  564. package/dist/nano-components/scroll-ac332213.js.map +1 -0
  565. package/dist/nano-components/{p-dc565459.js → slot-8126e238.js} +1 -1
  566. package/dist/nano-components/{p-f88fa15c.js → tabbable-26a66a22.js} +1 -1
  567. package/dist/nano-components/table.worker-34706ecc.js +5 -0
  568. package/dist/nano-components/{p-411bb8f1.js → theme-82feb8cf.js} +1 -1
  569. package/dist/nano-components/{p-7bff5224.js → throttle-ac4fcefa.js} +1 -1
  570. package/dist/nano-components/{p-c3e8e3f9.js → transitions-fb09eb32.js} +1 -1
  571. package/dist/themes/nanopore.cn.css +1 -1
  572. package/dist/themes/nanopore.cn.css.map +1 -1
  573. package/dist/themes/nanopore.css +1 -1
  574. package/dist/themes/nanopore.css.map +1 -1
  575. package/dist/types/components/algolia/algolia-data.d.ts +1 -1
  576. package/dist/types/components/algolia/algolia-filter.d.ts +1 -1
  577. package/dist/types/components/algolia/algolia-interface.d.ts +8 -2
  578. package/dist/types/components/algolia/algolia-pagination.d.ts +1 -1
  579. package/dist/types/components/algolia/algolia-results.d.ts +1 -1
  580. package/dist/types/components/algolia/algolia.d.ts +4 -11
  581. package/dist/types/components/algolia/lib/squirrelly/browser.d.ts +6 -0
  582. package/dist/types/components/algolia/lib/squirrelly/compile-string.d.ts +5 -0
  583. package/dist/types/components/algolia/lib/squirrelly/compile.d.ts +3 -0
  584. package/dist/types/components/algolia/lib/squirrelly/config.d.ts +48 -0
  585. package/dist/types/components/algolia/lib/squirrelly/container-utils.d.ts +8 -0
  586. package/dist/types/components/algolia/lib/squirrelly/containers.d.ts +18 -0
  587. package/dist/types/components/algolia/lib/squirrelly/err.d.ts +6 -0
  588. package/dist/types/components/algolia/lib/squirrelly/parse.d.ts +23 -0
  589. package/dist/types/components/algolia/lib/squirrelly/render.d.ts +3 -0
  590. package/dist/types/components/algolia/lib/squirrelly/storage.d.ts +13 -0
  591. package/dist/types/components/algolia/lib/squirrelly/utils.d.ts +8 -0
  592. package/dist/types/components/algolia/lib/template.d.ts +2 -0
  593. package/dist/types/components/checkbox/checkbox-group.d.ts +5 -0
  594. package/dist/types/components/global-nav/global-nav.d.ts +47 -20
  595. package/dist/types/components/slides/lib/js/animate.d.ts +2 -0
  596. package/dist/types/components/slides/lib/js/cell.d.ts +1 -0
  597. package/dist/types/components/slides/lib/js/drag.d.ts +1 -0
  598. package/dist/types/components/slides/lib/js/fade.d.ts +1 -0
  599. package/dist/types/components/slides/lib/js/flickity.d.ts +23 -0
  600. package/dist/types/components/slides/lib/js/fullscreen.d.ts +1 -0
  601. package/dist/types/components/slides/lib/js/index.d.ts +5 -0
  602. package/dist/types/components/slides/lib/js/lazyload.d.ts +1 -0
  603. package/dist/types/components/slides/lib/js/page-dots.d.ts +1 -0
  604. package/dist/types/components/slides/lib/js/player.d.ts +1 -0
  605. package/dist/types/components/slides/lib/js/prev-next-button.d.ts +1 -0
  606. package/dist/types/components/slides/lib/js/slide.d.ts +1 -0
  607. package/dist/types/components/slides/lib/js/utils/event-emitter.d.ts +1 -0
  608. package/dist/types/components/slides/lib/js/utils/gestures.d.ts +26 -0
  609. package/dist/types/components/slides/lib/js/utils/get-size.d.ts +6 -0
  610. package/dist/types/components/slides/lib/js/utils/utils.d.ts +5 -0
  611. package/dist/types/components/slides/slides-interface.d.ts +17 -7
  612. package/dist/types/components/slides/slides.d.ts +5 -0
  613. package/dist/types/components.d.ts +12 -137
  614. package/dist/types/utils/scroll.d.ts +5 -1
  615. package/docs-json.json +37 -280
  616. package/docs-vscode.json +6 -63
  617. package/hydrate/index.js +3502 -3443
  618. package/package.json +5 -8
  619. package/dist/cjs/_commonjsHelpers-29614748.js +0 -30
  620. package/dist/cjs/_commonjsHelpers-29614748.js.map +0 -1
  621. package/dist/cjs/algoliasearch-lite.esm.browser-992a2eff.js.map +0 -1
  622. package/dist/cjs/index-1d3ebe1a.js.map +0 -1
  623. package/dist/cjs/nano-algolia-input.cjs.entry.js +0 -168
  624. package/dist/cjs/nano-algolia-input.cjs.entry.js.map +0 -1
  625. package/dist/cjs/scroll-fc1b8387.js.map +0 -1
  626. package/dist/cjs/table.worker-da980a2f.js.map +0 -1
  627. package/dist/collection/components/algolia/algolia-input.js +0 -463
  628. package/dist/collection/components/algolia/algolia-input.js.map +0 -1
  629. package/dist/collection/components/slides/lib/js/add-remove-cell.js +0 -128
  630. package/dist/collection/components/slides/lib/js/images-loaded.js +0 -24
  631. package/dist/collection/components/slides/slides-interface.js +0 -2
  632. package/dist/collection/components/slides/slides-interface.js.map +0 -1
  633. package/dist/collection/utils/template.js.map +0 -1
  634. package/dist/components/_commonjsHelpers.js +0 -26
  635. package/dist/components/_commonjsHelpers.js.map +0 -1
  636. package/dist/components/nano-algolia-input.d.ts +0 -11
  637. package/dist/components/nano-algolia-input.js +0 -195
  638. package/dist/components/nano-algolia-input.js.map +0 -1
  639. package/dist/esm/_commonjsHelpers-04a0e019.js +0 -26
  640. package/dist/esm/_commonjsHelpers-04a0e019.js.map +0 -1
  641. package/dist/esm/algoliasearch-lite.esm.browser-04891fdc.js.map +0 -1
  642. package/dist/esm/index-06666022.js.map +0 -1
  643. package/dist/esm/nano-algolia-input.entry.js +0 -164
  644. package/dist/esm/nano-algolia-input.entry.js.map +0 -1
  645. package/dist/esm/scroll-ec7ac257.js.map +0 -1
  646. package/dist/esm/table.worker-608a4868.js.map +0 -1
  647. package/dist/nano-components/p-02b727d3.entry.js +0 -5
  648. package/dist/nano-components/p-02b727d3.entry.js.map +0 -1
  649. package/dist/nano-components/p-0563e812.entry.js +0 -5
  650. package/dist/nano-components/p-0563e812.entry.js.map +0 -1
  651. package/dist/nano-components/p-06c85b64.js +0 -5
  652. package/dist/nano-components/p-0b7c676c.entry.js +0 -5
  653. package/dist/nano-components/p-0bc40dd1.entry.js +0 -5
  654. package/dist/nano-components/p-0bc40dd1.entry.js.map +0 -1
  655. package/dist/nano-components/p-0e0f07f0.entry.js +0 -5
  656. package/dist/nano-components/p-0e0f07f0.entry.js.map +0 -1
  657. package/dist/nano-components/p-0e4da739.entry.js +0 -5
  658. package/dist/nano-components/p-0e4da739.entry.js.map +0 -1
  659. package/dist/nano-components/p-16e75af9.entry.js +0 -5
  660. package/dist/nano-components/p-16e75af9.entry.js.map +0 -1
  661. package/dist/nano-components/p-17eb456c.entry.js +0 -5
  662. package/dist/nano-components/p-17eb456c.entry.js.map +0 -1
  663. package/dist/nano-components/p-191352c4.entry.js +0 -5
  664. package/dist/nano-components/p-1a55e282.entry.js +0 -5
  665. package/dist/nano-components/p-1a55e282.entry.js.map +0 -1
  666. package/dist/nano-components/p-2234694a.js +0 -5
  667. package/dist/nano-components/p-24dcd788.entry.js +0 -5
  668. package/dist/nano-components/p-24dcd788.entry.js.map +0 -1
  669. package/dist/nano-components/p-2a105609.entry.js +0 -5
  670. package/dist/nano-components/p-2a105609.entry.js.map +0 -1
  671. package/dist/nano-components/p-328ef9d3.entry.js +0 -5
  672. package/dist/nano-components/p-359b7cd2.entry.js +0 -5
  673. package/dist/nano-components/p-359b7cd2.entry.js.map +0 -1
  674. package/dist/nano-components/p-36c3ded8.entry.js +0 -5
  675. package/dist/nano-components/p-36c3ded8.entry.js.map +0 -1
  676. package/dist/nano-components/p-3ae362ae.entry.js +0 -5
  677. package/dist/nano-components/p-3cac5f6d.entry.js +0 -5
  678. package/dist/nano-components/p-3d8fb8a1.entry.js +0 -5
  679. package/dist/nano-components/p-3eeaba47.entry.js +0 -5
  680. package/dist/nano-components/p-3eeaba47.entry.js.map +0 -1
  681. package/dist/nano-components/p-3f40e370.entry.js +0 -5
  682. package/dist/nano-components/p-51133e62.entry.js +0 -5
  683. package/dist/nano-components/p-51133e62.entry.js.map +0 -1
  684. package/dist/nano-components/p-54c4a2f5.entry.js +0 -5
  685. package/dist/nano-components/p-54c4a2f5.entry.js.map +0 -1
  686. package/dist/nano-components/p-5fc3035d.entry.js +0 -5
  687. package/dist/nano-components/p-5fc3035d.entry.js.map +0 -1
  688. package/dist/nano-components/p-650aa197.entry.js +0 -5
  689. package/dist/nano-components/p-650aa197.entry.js.map +0 -1
  690. package/dist/nano-components/p-67ab5a5f.entry.js +0 -5
  691. package/dist/nano-components/p-67ab5a5f.entry.js.map +0 -1
  692. package/dist/nano-components/p-688f1a55.entry.js +0 -5
  693. package/dist/nano-components/p-688f1a55.entry.js.map +0 -1
  694. package/dist/nano-components/p-6c4171fa.entry.js +0 -5
  695. package/dist/nano-components/p-70747f20.js +0 -5
  696. package/dist/nano-components/p-7670058b.entry.js +0 -5
  697. package/dist/nano-components/p-7670058b.entry.js.map +0 -1
  698. package/dist/nano-components/p-79fff4fd.entry.js +0 -5
  699. package/dist/nano-components/p-7c82af28.entry.js +0 -5
  700. package/dist/nano-components/p-7dd30a3f.entry.js +0 -7
  701. package/dist/nano-components/p-7dd30a3f.entry.js.map +0 -1
  702. package/dist/nano-components/p-842f826a.entry.js +0 -5
  703. package/dist/nano-components/p-842f826a.entry.js.map +0 -1
  704. package/dist/nano-components/p-87329424.entry.js +0 -5
  705. package/dist/nano-components/p-8fe51abf.js +0 -5
  706. package/dist/nano-components/p-935968b8.entry.js +0 -23
  707. package/dist/nano-components/p-935968b8.entry.js.map +0 -1
  708. package/dist/nano-components/p-9925e504.entry.js +0 -5
  709. package/dist/nano-components/p-9c290055.entry.js +0 -5
  710. package/dist/nano-components/p-9f60ff14.entry.js +0 -5
  711. package/dist/nano-components/p-a225e976.entry.js +0 -5
  712. package/dist/nano-components/p-a225e976.entry.js.map +0 -1
  713. package/dist/nano-components/p-a26bdb65.js +0 -5
  714. package/dist/nano-components/p-b27b56d3.js +0 -5
  715. package/dist/nano-components/p-b27b56d3.js.map +0 -1
  716. package/dist/nano-components/p-c80336b2.entry.js +0 -5
  717. package/dist/nano-components/p-c80336b2.entry.js.map +0 -1
  718. package/dist/nano-components/p-cad86fb8.js +0 -5
  719. package/dist/nano-components/p-cad86fb8.js.map +0 -1
  720. package/dist/nano-components/p-d18c0a7a.js +0 -5
  721. package/dist/nano-components/p-d18c0a7a.js.map +0 -1
  722. package/dist/nano-components/p-d4e44f93.entry.js +0 -5
  723. package/dist/nano-components/p-dc805ecc.js +0 -5
  724. package/dist/nano-components/p-dd5687db.js +0 -5
  725. package/dist/nano-components/p-e6a0675e.entry.js +0 -5
  726. package/dist/nano-components/p-e98835e2.entry.js +0 -5
  727. package/dist/nano-components/p-efd3e121.entry.js +0 -5
  728. package/dist/nano-components/p-f73f52ed.entry.js +0 -5
  729. package/dist/nano-components/p-f73f52ed.entry.js.map +0 -1
  730. package/dist/nano-components/p-fcbc9122.entry.js +0 -5
  731. package/dist/nano-components/p-fcbc9122.entry.js.map +0 -1
  732. package/dist/types/components/algolia/algolia-input.d.ts +0 -103
  733. package/dist/types/utils/template.d.ts +0 -2
  734. /package/dist/nano-components/{p-74a7fc4f.js.map → active-element-75b7c8a0.js.map} +0 -0
  735. /package/dist/nano-components/{p-cecb9af1.js.map → date-utils-6b7a6e1f.js.map} +0 -0
  736. /package/dist/nano-components/{p-cdfc507e.js.map → dom-8599fac1.js.map} +0 -0
  737. /package/dist/nano-components/{p-842cf127.js.map → drag-1723a4cc.js.map} +0 -0
  738. /package/dist/nano-components/{p-9bfdee71.js.map → events-6a805b42.js.map} +0 -0
  739. /package/dist/nano-components/{p-f8f89998.js.map → focus-visible-8b2c14da.js.map} +0 -0
  740. /package/dist/nano-components/{p-bb07c3d0.js.map → index-f626f476.js.map} +0 -0
  741. /package/dist/nano-components/{p-06c85b64.js.map → local-my-account-6662da72.js.map} +0 -0
  742. /package/dist/nano-components/{p-ee045579.js.map → math-c02ddfda.js.map} +0 -0
  743. /package/dist/nano-components/{p-0b7c676c.entry.js.map → nano-slides.entry.js.map} +0 -0
  744. /package/dist/nano-components/{p-2155fc2c.js.map → nano-table.entry.js.map} +0 -0
  745. /package/dist/nano-components/{p-cd1fd454.js.map → popover-e5e7a641.js.map} +0 -0
  746. /package/dist/nano-components/{p-dc565459.js.map → slot-8126e238.js.map} +0 -0
  747. /package/dist/nano-components/{p-f88fa15c.js.map → tabbable-26a66a22.js.map} +0 -0
  748. /package/dist/nano-components/{p-8fe51abf.js.map → table.worker-34706ecc.js.map} +0 -0
  749. /package/dist/nano-components/{p-f258383d.js → table.worker-f258383d.js} +0 -0
  750. /package/dist/nano-components/{p-411bb8f1.js.map → theme-82feb8cf.js.map} +0 -0
  751. /package/dist/nano-components/{p-7bff5224.js.map → throttle-ac4fcefa.js.map} +0 -0
  752. /package/dist/nano-components/{p-c3e8e3f9.js.map → transitions-fb09eb32.js.map} +0 -0
@@ -6,13 +6,12 @@ import algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';
6
6
  import { getDirectChildren } from '../../utils/dom';
7
7
  import { PromiseQueue } from '../../utils/promise-queue';
8
8
  import { ComponentStore, } from '../../utils/store/component-store';
9
- import { Squirrel } from '../../utils/template';
10
9
  import { debounce } from '../../utils/throttle';
10
+ import { Squirrel } from './lib/template';
11
11
  import { Universe, SearchChangeEvent } from './algolia-data';
12
12
  /**
13
13
  * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.
14
- * Can optionally contain nano-algolia-input components or use them as a 'resultsEmitter'
15
- * @slot search-input - optional. Should contain an algolia-input component.
14
+ * @slot search-input - optional. Should contain an `input` or `nano-input` component.
16
15
  * @slot loader - optional. Elements to show when search results are loading.
17
16
  * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.
18
17
  * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.
@@ -24,7 +23,7 @@ export class Algolia {
24
23
  this.dynFacetFilters = {};
25
24
  this.hasLoadSlot = false;
26
25
  this.placedAlgoliaEles = [];
27
- // lots of stuff happens asynchronously. This makes sure they fire in the corrent order
26
+ // lots of stuff happens asynchronously. This makes sure they fire in the correct order
28
27
  this.promiseQueue = new PromiseQueue();
29
28
  this.searchChange = async () => {
30
29
  if (!this.algoliaIndex)
@@ -167,7 +166,6 @@ export class Algolia {
167
166
  this.inputField = undefined;
168
167
  this.algoliaIndex = undefined;
169
168
  this.indeces = [];
170
- this.resultsEmitterEle = undefined;
171
169
  this.indexResults = undefined;
172
170
  this.filterChanged = '';
173
171
  this.currentHits = undefined;
@@ -184,7 +182,6 @@ export class Algolia {
184
182
  this.query = '';
185
183
  this.operator = 'and';
186
184
  this.filters = [];
187
- this.tplEngine = Squirrel;
188
185
  this.tplRenderFn = Squirrel.render;
189
186
  this.replicaIndex = '';
190
187
  this.browseIndex = false;
@@ -192,6 +189,14 @@ export class Algolia {
192
189
  this.storeId = undefined;
193
190
  this.storeMethod = 'session';
194
191
  }
192
+ handleListenToChange() {
193
+ if (!this.listenTo)
194
+ return;
195
+ const foundInput = document.querySelector(this.listenTo);
196
+ if (['nano-input', 'input'].includes(foundInput.tagName.toLocaleLowerCase())) {
197
+ this.inputField = foundInput;
198
+ }
199
+ }
195
200
  // Public methods
196
201
  /**
197
202
  * @param facetName - will clear all filter selections of that type
@@ -325,6 +330,8 @@ export class Algolia {
325
330
  if (!this.algoliaClient || !this.searchIndex)
326
331
  return;
327
332
  if (this.searchIndex.index) {
333
+ if (!this.searchIndex.hitsPerPage)
334
+ this.searchIndex.hitsPerPage = 100;
328
335
  if (this.replicaIndex)
329
336
  this.searchIndex.index = this.replicaIndex;
330
337
  this.searchIndexName = this.searchIndex.index;
@@ -530,6 +537,8 @@ export class Algolia {
530
537
  else if (this.slottedInput) {
531
538
  this.inputField = this.slottedInput.querySelector('nano-input, input:not([type="radio"]):not([type="checkbox"])');
532
539
  }
540
+ else
541
+ this.handleListenToChange();
533
542
  writeTask((_) => {
534
543
  if (this.showResults && this.tpl)
535
544
  this.searchChange();
@@ -724,7 +733,7 @@ export class Algolia {
724
733
  "optional": true,
725
734
  "docs": {
726
735
  "tags": [],
727
- "text": "JS querSelector string of a `nano-input` / `input` element from which\nto listen to `nano-change` or `change` events and change the `query` prop.\nNot required if an appropriate field is in the 'search-input' slot"
736
+ "text": "JS querySelector string of a `nano-input` / `input` element from which\nto listen to `nano-change` or `change` events and change the `query` prop.\nNot required if an appropriate field is in the 'search-input' slot"
728
737
  },
729
738
  "getter": false,
730
739
  "setter": false,
@@ -794,34 +803,12 @@ export class Algolia {
794
803
  "setter": false,
795
804
  "defaultValue": "[]"
796
805
  },
797
- "tplEngine": {
798
- "type": "unknown",
799
- "mutable": false,
800
- "complexType": {
801
- "original": "Object",
802
- "resolved": "Object",
803
- "references": {
804
- "Object": {
805
- "location": "global"
806
- }
807
- }
808
- },
809
- "required": false,
810
- "optional": false,
811
- "docs": {
812
- "tags": [],
813
- "text": "Template engine to use when rendering results and filters.\nDefaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\nto the underlying squirrel object allowing you to modify it's configuration / add filters."
814
- },
815
- "getter": false,
816
- "setter": false,
817
- "defaultValue": "Squirrel"
818
- },
819
806
  "tplRenderFn": {
820
807
  "type": "unknown",
821
808
  "mutable": false,
822
809
  "complexType": {
823
- "original": "(...args: any[]) => string",
824
- "resolved": "(...args: any[]) => string",
810
+ "original": "(...args: any[]) => any",
811
+ "resolved": "(...args: any[]) => any",
825
812
  "references": {}
826
813
  },
827
814
  "required": false,
@@ -946,7 +933,6 @@ export class Algolia {
946
933
  "inputField": {},
947
934
  "algoliaIndex": {},
948
935
  "indeces": {},
949
- "resultsEmitterEle": {},
950
936
  "indexResults": {},
951
937
  "filterChanged": {},
952
938
  "currentHits": {},
@@ -1098,6 +1084,9 @@ export class Algolia {
1098
1084
  static get elementRef() { return "host"; }
1099
1085
  static get watchers() {
1100
1086
  return [{
1087
+ "propName": "listenTo",
1088
+ "methodName": "handleListenToChange"
1089
+ }, {
1101
1090
  "propName": "_dynFacetFilters",
1102
1091
  "methodName": "dynFacetFiltersChange"
1103
1092
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../../src/components/algolia/algolia.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';\nimport { getDirectChildren } from '../../utils/dom';\nimport { PromiseQueue } from '../../utils/promise-queue';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { Squirrel } from '../../utils/template';\nimport { debounce } from '../../utils/throttle';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport type {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch/lite';\nimport type {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * Can optionally contain nano-algolia-input components or use them as a 'resultsEmitter'\n * @slot search-input - optional. Should contain an algolia-input component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the corrent order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() resultsEmitterEle: HTMLElement;\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop({ mutable: true }) appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop({ mutable: true }) apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop({ mutable: true }) searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querSelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n /**\n * The query string used to search the index. Will automatically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine to use when rendering results and filters.\n * Defaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\n * to the underlying squirrel object allowing you to modify it's configuration / add filters.\n */\n @Prop() tplEngine: Object = Squirrel;\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => string = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop({ mutable: true }) replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\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 // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an results have been updated\n */\n @Event() nanoNewResults!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent & { target: HTMLElement }) {\n ev.stopPropagation();\n\n if (ev.target.tagName === 'NANO-ALGOLIA-RESULTS') {\n requestAnimationFrame(() => {\n this.nanoNewResults.emit(this.indexResults);\n });\n }\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n const dynFilterObj: FilterGroup = {};\n const filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n @Watch('filters')\n handleFilterpropChange() {\n this.algoliaSearch(SearchChangeEvent.Init);\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n const appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n const found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n const searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n const facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n @Listen('nanoChange', { target: 'body' })\n @Listen('change', { target: 'body' })\n handleInputChange(ev: CustomEvent | (Event & { target: HTMLElement })) {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n }\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n const outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n const tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n const algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n const placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/&gt;/gm, '>')\n .replace(/&lt;/gm, '<')\n .replace(/&amp;/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot)\n this.tpl = this.tplSlot.innerHTML || this.tplSlot.innerText;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n }\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../../src/components/algolia/algolia.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';\nimport { getDirectChildren } from '../../utils/dom';\nimport { PromiseQueue } from '../../utils/promise-queue';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { debounce } from '../../utils/throttle';\nimport { Squirrel } from './lib/template';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport type {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch/lite';\nimport type {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * @slot search-input - optional. Should contain an `input` or `nano-input` component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the correct order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop({ mutable: true }) appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop({ mutable: true }) apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop({ mutable: true }) searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querySelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n @Watch('listenTo')\n handleListenToChange() {\n if (!this.listenTo) return;\n\n const foundInput = document.querySelector(this.listenTo);\n if (\n ['nano-input', 'input'].includes(foundInput.tagName.toLocaleLowerCase())\n ) {\n this.inputField = foundInput as HTMLNanoInputElement;\n }\n }\n\n /**\n * The query string used to search the index. Will automatically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => any = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop({ mutable: true }) replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\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 // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an results have been updated\n */\n @Event() nanoNewResults!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent & { target: HTMLElement }) {\n ev.stopPropagation();\n\n if (ev.target.tagName === 'NANO-ALGOLIA-RESULTS') {\n requestAnimationFrame(() => {\n this.nanoNewResults.emit(this.indexResults);\n });\n }\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n const dynFilterObj: FilterGroup = {};\n const filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (!this.searchIndex.hitsPerPage) this.searchIndex.hitsPerPage = 100;\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n @Watch('filters')\n handleFilterpropChange() {\n this.algoliaSearch(SearchChangeEvent.Init);\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n const appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n const found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n const searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n const facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n @Listen('nanoChange', { target: 'body' })\n @Listen('change', { target: 'body' })\n handleInputChange(ev: CustomEvent | (Event & { target: HTMLElement })) {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n }\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n const outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n const tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n const algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n const placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/&gt;/gm, '>')\n .replace(/&lt;/gm, '<')\n .replace(/&amp;/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot)\n this.tpl = this.tplSlot.innerHTML || this.tplSlot.innerText;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n } else this.handleListenToChange();\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ export { default as compileToString, compileScope, compileScopeIntoFunction, } from './compile-string';
5
+ export { default as compile } from './compile';
6
+ export { default as parse } from './parse';
7
+ export { default as render } from './render';
8
+ export { helpers, nativeHelpers, filters, templates } from './containers';
9
+ export { defaultConfig, getConfig } from './config';
10
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../../src/components/algolia/lib/squirrelly/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,IAAI,eAAe,EAC1B,YAAY,EACZ,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC","sourcesContent":["export {\n default as compileToString,\n compileScope,\n compileScopeIntoFunction,\n} from './compile-string';\nexport { default as compile } from './compile';\nexport { default as parse } from './parse';\nexport { default as render } from './render';\nexport { helpers, nativeHelpers, filters, templates } from './containers';\nexport { defaultConfig, getConfig } from './config';\n"]}
@@ -0,0 +1,151 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ import Parse from './parse';
5
+ // import SqrlErr from './err'
6
+ /* END TYPES */
7
+ export default function compileToString(str, env) {
8
+ const buffer = Parse(str, env);
9
+ let res = "var tR='';" +
10
+ (env.useWith ? 'with(' + env.varName + '||{}){' : '') +
11
+ compileScope(buffer, env) +
12
+ 'if(cb){cb(null,tR)} return tR' +
13
+ (env.useWith ? '}' : '');
14
+ if (env.plugins) {
15
+ for (let i = 0; i < env.plugins.length; i++) {
16
+ const plugin = env.plugins[i];
17
+ if (plugin.processFnString) {
18
+ res = plugin.processFnString(res, env);
19
+ }
20
+ }
21
+ }
22
+ return res;
23
+ // TODO: is `return cb()` necessary, or could we just do `cb()`
24
+ }
25
+ function filter(str, filters) {
26
+ for (let i = 0; i < filters.length; i++) {
27
+ const name = filters[i][0];
28
+ const params = filters[i][1];
29
+ const isFilterAsync = filters[i][2];
30
+ // if (isFilterAsync && !env.async) {
31
+ // throw SqrlErr("Async filter '" + name + "' in non-async env")
32
+ // }
33
+ // Let the JS compiler do this, compile() will catch it
34
+ str = (isFilterAsync ? 'await ' : '') + "c.l('F','" + name + "')(" + str;
35
+ if (params) {
36
+ str += ',' + params;
37
+ }
38
+ str += ')';
39
+ }
40
+ return str;
41
+ }
42
+ // TODO: Use type intersections for TemplateObject, etc.
43
+ // so I don't have to make properties mandatory
44
+ function compileHelper(env, res, descendants, params, isAsync, name) {
45
+ let ret = '{exec:' +
46
+ (isAsync ? 'async ' : '') +
47
+ compileScopeIntoFunction(descendants, res, env) +
48
+ ',params:[' +
49
+ params +
50
+ ']';
51
+ if (name) {
52
+ ret += ",name:'" + name + "'";
53
+ }
54
+ if (isAsync) {
55
+ ret += ',async:true';
56
+ }
57
+ ret += '}';
58
+ return ret;
59
+ }
60
+ function compileBlocks(blocks, env) {
61
+ let ret = '[';
62
+ for (let i = 0; i < blocks.length; i++) {
63
+ const block = blocks[i];
64
+ ret += compileHelper(env, block.res || '', block.d, block.p || '', block.a, block.n);
65
+ if (i < blocks.length) {
66
+ ret += ',';
67
+ }
68
+ }
69
+ ret += ']';
70
+ return ret;
71
+ }
72
+ export function compileScopeIntoFunction(buff, res, env) {
73
+ return ('function(' + res + "){var tR='';" + compileScope(buff, env) + 'return tR}');
74
+ }
75
+ export function compileScope(buff, env) {
76
+ let i = 0;
77
+ const buffLength = buff.length;
78
+ let returnStr = '';
79
+ for (i; i < buffLength; i++) {
80
+ const currentBlock = buff[i];
81
+ if (typeof currentBlock === 'string') {
82
+ const str = currentBlock;
83
+ // we know string exists
84
+ returnStr += "tR+='" + str + "';";
85
+ }
86
+ else {
87
+ const type = currentBlock.t; // h, s, e, i
88
+ let content = currentBlock.c || '';
89
+ const filters = currentBlock.f;
90
+ const name = currentBlock.n || '';
91
+ const params = currentBlock.p || '';
92
+ const res = currentBlock.res || '';
93
+ const blocks = currentBlock.b;
94
+ const isAsync = !!currentBlock.a; // !! is to booleanize it
95
+ // if (isAsync && !env.async) {
96
+ // throw SqrlErr("Async block or helper '" + name + "' in non-async env")
97
+ // }
98
+ // Let compiler do this
99
+ if (type === 'i') {
100
+ if (env.defaultFilter) {
101
+ content = "c.l('F','" + env.defaultFilter + "')(" + content + ')';
102
+ }
103
+ let filtered = filter(content, filters);
104
+ if (!currentBlock.raw && env.autoEscape) {
105
+ filtered = "c.l('F','e')(" + filtered + ')';
106
+ }
107
+ returnStr += 'tR+=' + filtered + ';';
108
+ // reference
109
+ }
110
+ else if (type === 'h') {
111
+ // helper
112
+ if (env.storage.nativeHelpers.get(name)) {
113
+ returnStr += env.storage.nativeHelpers.get(name)(currentBlock, env);
114
+ }
115
+ else {
116
+ let helperReturn = (isAsync ? 'await ' : '') +
117
+ "c.l('H','" +
118
+ name +
119
+ "')(" +
120
+ compileHelper(env, res, currentBlock.d, params, isAsync);
121
+ if (blocks) {
122
+ helperReturn += ',' + compileBlocks(blocks, env);
123
+ }
124
+ else {
125
+ helperReturn += ',[]';
126
+ }
127
+ helperReturn += ',c)';
128
+ returnStr += 'tR+=' + filter(helperReturn, filters) + ';';
129
+ }
130
+ }
131
+ else if (type === 's') {
132
+ // self-closing helper
133
+ returnStr +=
134
+ 'tR+=' +
135
+ filter((isAsync ? 'await ' : '') +
136
+ "c.l('H','" +
137
+ name +
138
+ "')({params:[" +
139
+ params +
140
+ ']},[],c)', filters) +
141
+ ';';
142
+ }
143
+ else if (type === 'e') {
144
+ // execute
145
+ returnStr += content + '\n';
146
+ }
147
+ }
148
+ }
149
+ return returnStr;
150
+ }
151
+ //# sourceMappingURL=compile-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-string.js","sourceRoot":"","sources":["../../../../../src/components/algolia/lib/squirrelly/compile-string.ts"],"names":[],"mappings":"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","sourcesContent":["import Parse, { AstObject, Filter, ParentTemplateObject } from './parse';\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\ntype ParsedTagType = 'h' | 's' | 'e' | 'i';\n// import SqrlErr from './err'\n\n/* END TYPES */\n\nexport default function compileToString(str: string, env: SqrlConfig) {\n const buffer: Array<AstObject> = Parse(str, env);\n\n let res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '');\n\n if (env.plugins) {\n for (let i = 0; i < env.plugins.length; i++) {\n const plugin = env.plugins[i];\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env);\n }\n }\n }\n\n return res;\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction filter(str: string, filters: Array<Filter>) {\n for (let i = 0; i < filters.length; i++) {\n const name = filters[i][0];\n const params = filters[i][1];\n const isFilterAsync = filters[i][2];\n\n // if (isFilterAsync && !env.async) {\n // throw SqrlErr(\"Async filter '\" + name + \"' in non-async env\")\n // }\n // Let the JS compiler do this, compile() will catch it\n\n str = (isFilterAsync ? 'await ' : '') + \"c.l('F','\" + name + \"')(\" + str;\n if (params) {\n str += ',' + params;\n }\n str += ')';\n }\n return str;\n}\n\n// TODO: Use type intersections for TemplateObject, etc.\n// so I don't have to make properties mandatory\n\nfunction compileHelper(\n env: SqrlConfig,\n res: string,\n descendants: Array<AstObject>,\n params: string,\n isAsync?: boolean,\n name?: string\n) {\n let ret =\n '{exec:' +\n (isAsync ? 'async ' : '') +\n compileScopeIntoFunction(descendants, res, env) +\n ',params:[' +\n params +\n ']';\n if (name) {\n ret += \",name:'\" + name + \"'\";\n }\n if (isAsync) {\n ret += ',async:true';\n }\n ret += '}';\n return ret;\n}\n\nfunction compileBlocks(blocks: Array<ParentTemplateObject>, env: SqrlConfig) {\n let ret = '[';\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n ret += compileHelper(\n env,\n block.res || '',\n block.d,\n block.p || '',\n block.a,\n block.n\n );\n if (i < blocks.length) {\n ret += ',';\n }\n }\n ret += ']';\n return ret;\n}\n\nexport function compileScopeIntoFunction(\n buff: Array<AstObject>,\n res: string,\n env: SqrlConfig\n) {\n return (\n 'function(' + res + \"){var tR='';\" + compileScope(buff, env) + 'return tR}'\n );\n}\n\nexport function compileScope(buff: Array<AstObject>, env: SqrlConfig) {\n let i = 0;\n const buffLength = buff.length;\n let returnStr = '';\n\n for (i; i < buffLength; i++) {\n const currentBlock = buff[i];\n if (typeof currentBlock === 'string') {\n const str = currentBlock;\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\";\n } else {\n const type: ParsedTagType = currentBlock.t as ParsedTagType; // h, s, e, i\n let content = currentBlock.c || '';\n const filters = currentBlock.f;\n const name = currentBlock.n || '';\n const params = currentBlock.p || '';\n const res = currentBlock.res || '';\n const blocks = currentBlock.b;\n const isAsync = !!currentBlock.a; // !! is to booleanize it\n // if (isAsync && !env.async) {\n // throw SqrlErr(\"Async block or helper '\" + name + \"' in non-async env\")\n // }\n // Let compiler do this\n if (type === 'i') {\n if (env.defaultFilter) {\n content = \"c.l('F','\" + env.defaultFilter + \"')(\" + content + ')';\n }\n let filtered = filter(content, filters);\n if (!currentBlock.raw && env.autoEscape) {\n filtered = \"c.l('F','e')(\" + filtered + ')';\n }\n returnStr += 'tR+=' + filtered + ';';\n // reference\n } else if (type === 'h') {\n // helper\n if (env.storage.nativeHelpers.get(name)) {\n returnStr += env.storage.nativeHelpers.get(name)(currentBlock, env);\n } else {\n let helperReturn =\n (isAsync ? 'await ' : '') +\n \"c.l('H','\" +\n name +\n \"')(\" +\n compileHelper(\n env,\n res,\n (currentBlock as ParentTemplateObject).d,\n params,\n isAsync\n );\n if (blocks) {\n helperReturn += ',' + compileBlocks(blocks, env);\n } else {\n helperReturn += ',[]';\n }\n helperReturn += ',c)';\n\n returnStr += 'tR+=' + filter(helperReturn, filters) + ';';\n }\n } else if (type === 's') {\n // self-closing helper\n\n returnStr +=\n 'tR+=' +\n filter(\n (isAsync ? 'await ' : '') +\n \"c.l('H','\" +\n name +\n \"')({params:[\" +\n params +\n ']},[],c)',\n filters\n ) +\n ';';\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n';\n }\n }\n }\n\n return returnStr;\n}\n"]}
@@ -0,0 +1,44 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ import compileToString from './compile-string';
5
+ import { getConfig } from './config';
6
+ import { asyncFunc } from './utils';
7
+ import SqrlErr from './err';
8
+ /* END TYPES */
9
+ export default function compile(str, env) {
10
+ const options = getConfig(env || {});
11
+ let ctor = Function; // constructor
12
+ /* ASYNC HANDLING */
13
+ // The below code is modified from mde/ejs. All credit should go to them.
14
+ if (options.async) {
15
+ // Have to use generated function for this, since in envs without support,
16
+ // it breaks in parsing
17
+ if (asyncFunc) {
18
+ ctor = asyncFunc;
19
+ }
20
+ else {
21
+ throw SqrlErr("This environment doesn't support async/await");
22
+ }
23
+ }
24
+ /* END ASYNC HANDLING */
25
+ try {
26
+ return new ctor(options.varName, 'c', // SqrlConfig
27
+ 'cb', // optional callback
28
+ compileToString(str, options)); // eslint-disable-line no-new-func
29
+ }
30
+ catch (e) {
31
+ if (e instanceof SyntaxError) {
32
+ throw SqrlErr('Bad template syntax\n\n' +
33
+ e.message +
34
+ '\n' +
35
+ Array(e.message.length + 1).join('=') +
36
+ '\n' +
37
+ compileToString(str, options));
38
+ }
39
+ else {
40
+ throw e;
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../../../src/components/algolia/lib/squirrelly/compile.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAA6B,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,OAAO,MAAM,OAAO,CAAC;AAU5B,eAAe;AAEf,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,GAAW,EACX,GAAmB;EAEnB,MAAM,OAAO,GAAe,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;EACjD,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,cAAc;EAEnC,oBAAoB;EACpB,yEAAyE;EACzE,IAAI,OAAO,CAAC,KAAK,EAAE;IACjB,0EAA0E;IAC1E,uBAAuB;IACvB,IAAI,SAAS,EAAE;MACb,IAAI,GAAG,SAAS,CAAC;KAClB;SAAM;MACL,MAAM,OAAO,CAAC,8CAA8C,CAAC,CAAC;KAC/D;GACF;EAED,wBAAwB;EACxB,IAAI;IACF,OAAO,IAAI,IAAI,CACb,OAAO,CAAC,OAAO,EACf,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,oBAAoB;IAC1B,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CACV,CAAC,CAAC,kCAAkC;GAC1D;EAAC,OAAO,CAAC,EAAE;IACV,IAAI,CAAC,YAAY,WAAW,EAAE;MAC5B,MAAM,OAAO,CACX,yBAAyB;QACvB,CAAC,CAAC,OAAO;QACT,IAAI;QACJ,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACrC,IAAI;QACJ,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAChC,CAAC;KACH;SAAM;MACL,MAAM,CAAC,CAAC;KACT;GACF;AACH,CAAC","sourcesContent":["import compileToString from './compile-string';\nimport { getConfig, SqrlConfig, PartialConfig } from './config';\nimport { asyncFunc } from './utils';\nimport SqrlErr from './err';\n\n/* TYPES */\n\nexport type TemplateFunction = (\n data: object,\n config: SqrlConfig,\n cb?: any\n) => string;\n\n/* END TYPES */\n\nexport default function compile(\n str: string,\n env?: PartialConfig\n): TemplateFunction {\n const options: SqrlConfig = getConfig(env || {});\n let ctor = Function; // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n if (asyncFunc) {\n ctor = asyncFunc;\n } else {\n throw SqrlErr(\"This environment doesn't support async/await\");\n }\n }\n\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'c', // SqrlConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction; // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw SqrlErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n );\n } else {\n throw e;\n }\n }\n}\n"]}