@nanoporetech-digital/components 7.6.0 → 7.8.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 (680) hide show
  1. package/dist/cjs/{algolia-data-0447757c.js → algolia-data-ca9cd58e.js} +2 -2
  2. package/dist/cjs/{algolia-data-0447757c.js.map → algolia-data-ca9cd58e.js.map} +1 -1
  3. package/dist/cjs/app-globals-3e14cb71.js +41 -0
  4. package/dist/cjs/app-globals-3e14cb71.js.map +1 -0
  5. package/dist/cjs/{component-store-6a330cd1.js → component-store-b8d4bd91.js} +2 -2
  6. package/dist/cjs/{component-store-6a330cd1.js.map → component-store-b8d4bd91.js.map} +1 -1
  7. package/dist/cjs/{dom-756fcdac.js → dom-b99a1aec.js} +2 -2
  8. package/dist/cjs/{dom-756fcdac.js.map → dom-b99a1aec.js.map} +1 -1
  9. package/dist/cjs/{fade-2dd9dd8b.js → fade-6a5004f4.js} +4 -3
  10. package/dist/cjs/fade-6a5004f4.js.map +1 -0
  11. package/dist/cjs/form-control-5bb39cc2.js +82 -0
  12. package/dist/cjs/form-control-5bb39cc2.js.map +1 -0
  13. package/dist/cjs/{fullscreen-5d0422de.js → fullscreen-f5db9bbe.js} +4 -3
  14. package/dist/cjs/fullscreen-f5db9bbe.js.map +1 -0
  15. package/dist/cjs/{index-b6fa04fa.js → index-615cdb64.js} +4 -2
  16. package/dist/cjs/index-615cdb64.js.map +1 -0
  17. package/dist/cjs/{index-7795a8f6.js → index-a92a0379.js} +2 -2
  18. package/dist/cjs/{index-7795a8f6.js.map → index-a92a0379.js.map} +1 -1
  19. package/dist/cjs/index.cjs.js +20 -5
  20. package/dist/cjs/index.cjs.js.map +1 -1
  21. package/dist/cjs/{lazyload-f181cb37.js → lazyload-13d72e60.js} +4 -3
  22. package/dist/cjs/lazyload-13d72e60.js.map +1 -0
  23. package/dist/cjs/loader.cjs.js +2 -2
  24. package/dist/cjs/nano-accordion.cjs.entry.js +8 -6
  25. package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nano-alert.cjs.entry.js +12 -11
  27. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-algolia-filter.cjs.entry.js +7 -5
  29. package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-algolia-pagination.cjs.entry.js +4 -4
  31. package/dist/cjs/nano-algolia-results.cjs.entry.js +6 -4
  32. package/dist/cjs/nano-algolia-results.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nano-algolia.cjs.entry.js +14 -11
  34. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nano-animation.cjs.entry.js +3 -2
  36. package/dist/cjs/nano-animation.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nano-checkbox-group.cjs.entry.js +6 -4
  38. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nano-checkbox.cjs.entry.js +6 -5
  40. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nano-components.cjs.js +6 -3
  42. package/dist/cjs/nano-components.cjs.js.map +1 -1
  43. package/dist/cjs/nano-datalist_3.cjs.entry.js +30 -28
  44. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nano-date-input.cjs.entry.js +7 -6
  46. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nano-date-picker.cjs.entry.js +16 -15
  48. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  49. package/dist/cjs/nano-details.cjs.entry.js +7 -6
  50. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nano-dialog.cjs.entry.js +7 -6
  52. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  53. package/dist/cjs/nano-drawer.cjs.entry.js +9 -8
  54. package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
  55. package/dist/cjs/nano-dropdown.cjs.entry.js +9 -7
  56. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nano-field-validator.cjs.entry.js +17 -15
  58. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  59. package/dist/cjs/nano-file-upload.cjs.entry.js +12 -11
  60. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  61. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +30 -27
  62. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  63. package/dist/cjs/nano-global-nav.cjs.entry.js +68 -66
  64. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  65. package/dist/cjs/nano-global-search-results.cjs.entry.js +10 -6
  66. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nano-grid-item.cjs.entry.js +2 -2
  68. package/dist/cjs/nano-grid_2.cjs.entry.js +6 -5
  69. package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nano-hero.cjs.entry.js +11 -10
  71. package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
  72. package/dist/cjs/nano-icon-button_2.cjs.entry.js +6 -5
  73. package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
  74. package/dist/cjs/nano-icon.cjs.entry.js +5 -3
  75. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  76. package/dist/cjs/nano-input.cjs.entry.js +9 -7
  77. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  78. package/dist/cjs/nano-intersection-observe.cjs.entry.js +3 -2
  79. package/dist/cjs/nano-intersection-observe.cjs.entry.js.map +1 -1
  80. package/dist/cjs/nano-menu-drawer.cjs.entry.js +10 -8
  81. package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
  82. package/dist/cjs/nano-more-less.cjs.entry.js +5 -4
  83. package/dist/cjs/nano-more-less.cjs.entry.js.map +1 -1
  84. package/dist/cjs/nano-overflow-nav.cjs.entry.js +7 -6
  85. package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -1
  86. package/dist/cjs/nano-progress-bar.cjs.entry.js +7 -4
  87. package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
  88. package/dist/cjs/nano-range.cjs.entry.js +9 -7
  89. package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
  90. package/dist/cjs/nano-rating.cjs.entry.js +10 -9
  91. package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
  92. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +7 -6
  93. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  94. package/dist/cjs/nano-slide.cjs.entry.js +3 -2
  95. package/dist/cjs/nano-slide.cjs.entry.js.map +1 -1
  96. package/dist/cjs/{nano-slides-612634dc.js → nano-slides-0a60315d.js} +15 -13
  97. package/dist/cjs/nano-slides-0a60315d.js.map +1 -0
  98. package/dist/cjs/nano-slides.cjs.entry.js +3 -2
  99. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  100. package/dist/cjs/nano-sortable.cjs.entry.js +3 -2
  101. package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -1
  102. package/dist/cjs/nano-spinner.cjs.entry.js +3 -2
  103. package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
  104. package/dist/cjs/nano-split-pane.cjs.entry.js +3 -2
  105. package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -1
  106. package/dist/cjs/nano-sticker.cjs.entry.js +6 -5
  107. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  108. package/dist/cjs/nano-tab-content.cjs.entry.js +5 -3
  109. package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
  110. package/dist/cjs/nano-tab-group.cjs.entry.js +16 -14
  111. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  112. package/dist/cjs/nano-tab.cjs.entry.js +4 -3
  113. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  114. package/dist/cjs/{nano-table-99d6a3cc.js → nano-table-43fc3d23.js} +42 -40
  115. package/dist/cjs/nano-table-43fc3d23.js.map +1 -0
  116. package/dist/cjs/nano-table.cjs.entry.js +4 -3
  117. package/dist/cjs/nano-table.cjs.entry.js.map +1 -1
  118. package/dist/cjs/{page-dots-99dd88f6.js → page-dots-ecdd64d1.js} +4 -3
  119. package/dist/cjs/page-dots-ecdd64d1.js.map +1 -0
  120. package/dist/cjs/renderer-cd8b6098.js +63 -0
  121. package/dist/cjs/renderer-cd8b6098.js.map +1 -0
  122. package/dist/cjs/{scroll-772f7d0d.js → scroll-a3e5c6c6.js} +2 -2
  123. package/dist/cjs/{scroll-772f7d0d.js.map → scroll-a3e5c6c6.js.map} +1 -1
  124. package/dist/cjs/{table.worker-263468df.js → table.worker-ad250672.js} +5 -4
  125. package/dist/cjs/table.worker-ad250672.js.map +1 -0
  126. package/dist/collection/components/accordion/accordion.js +7 -5
  127. package/dist/collection/components/accordion/accordion.js.map +1 -1
  128. package/dist/collection/components/alert/alert.helpers.js +3 -2
  129. package/dist/collection/components/alert/alert.helpers.js.map +1 -1
  130. package/dist/collection/components/alert/alert.js +8 -7
  131. package/dist/collection/components/alert/alert.js.map +1 -1
  132. package/dist/collection/components/algolia/algolia-filter.js +5 -3
  133. package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
  134. package/dist/collection/components/algolia/algolia-pagination.js +2 -2
  135. package/dist/collection/components/algolia/algolia-results.js +5 -3
  136. package/dist/collection/components/algolia/algolia-results.js.map +1 -1
  137. package/dist/collection/components/algolia/algolia.js +11 -8
  138. package/dist/collection/components/algolia/algolia.js.map +1 -1
  139. package/dist/collection/components/animation/animation.js +3 -2
  140. package/dist/collection/components/animation/animation.js.map +1 -1
  141. package/dist/collection/components/checkbox/checkbox-group.js +6 -4
  142. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  143. package/dist/collection/components/checkbox/checkbox.js +6 -5
  144. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  145. package/dist/collection/components/datalist/datalist.css +1 -1
  146. package/dist/collection/components/datalist/datalist.js +14 -13
  147. package/dist/collection/components/datalist/datalist.js.map +1 -1
  148. package/dist/collection/components/date-input/date-input.css +3 -3
  149. package/dist/collection/components/date-input/date-input.js +6 -5
  150. package/dist/collection/components/date-input/date-input.js.map +1 -1
  151. package/dist/collection/components/date-picker/date-picker.css +3 -3
  152. package/dist/collection/components/date-picker/date-picker.js +5 -4
  153. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  154. package/dist/collection/components/date-picker/duet-date-picker/date-picker-day.js +1 -1
  155. package/dist/collection/components/date-picker/duet-date-picker/date-picker-day.js.map +1 -1
  156. package/dist/collection/components/date-picker/duet-date-picker/date-picker-month.js +1 -1
  157. package/dist/collection/components/date-picker/duet-date-picker/date-picker-month.js.map +1 -1
  158. package/dist/collection/components/details/details.css +1 -1
  159. package/dist/collection/components/details/details.js +6 -5
  160. package/dist/collection/components/details/details.js.map +1 -1
  161. package/dist/collection/components/dialog/dialog.helpers.js +2 -1
  162. package/dist/collection/components/dialog/dialog.helpers.js.map +1 -1
  163. package/dist/collection/components/dialog/dialog.js +4 -3
  164. package/dist/collection/components/dialog/dialog.js.map +1 -1
  165. package/dist/collection/components/drawer/drawer.css +1 -1
  166. package/dist/collection/components/drawer/drawer.js +5 -4
  167. package/dist/collection/components/drawer/drawer.js.map +1 -1
  168. package/dist/collection/components/dropdown/dropdown.css +1 -1
  169. package/dist/collection/components/dropdown/dropdown.js +8 -6
  170. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  171. package/dist/collection/components/field-validator/field-validator.js +16 -14
  172. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  173. package/dist/collection/components/file-upload/file-upload.css +1 -1
  174. package/dist/collection/components/file-upload/file-upload.js +3 -2
  175. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  176. package/dist/collection/components/form-control/form-control.js +1 -1
  177. package/dist/collection/components/form-control/form-control.js.map +1 -1
  178. package/dist/collection/components/global-nav/global-nav-user-profile.js +3 -2
  179. package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
  180. package/dist/collection/components/global-nav/global-nav.js +50 -48
  181. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  182. package/dist/collection/components/global-nav/style/global-nav.css +33 -33
  183. package/dist/collection/components/global-search-results/global-search-results.css +11 -11
  184. package/dist/collection/components/global-search-results/global-search-results.js +9 -5
  185. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  186. package/dist/collection/components/grid/grid-item.js +1 -1
  187. package/dist/collection/components/grid/grid.js +3 -2
  188. package/dist/collection/components/grid/grid.js.map +1 -1
  189. package/dist/collection/components/hero/hero.css +2 -2
  190. package/dist/collection/components/hero/hero.js +6 -5
  191. package/dist/collection/components/hero/hero.js.map +1 -1
  192. package/dist/collection/components/icon/icon.js +4 -2
  193. package/dist/collection/components/icon/icon.js.map +1 -1
  194. package/dist/collection/components/icon-button/icon-button.js +2 -2
  195. package/dist/collection/components/icon-button/icon-button.js.map +1 -1
  196. package/dist/collection/components/img/img.js +5 -4
  197. package/dist/collection/components/img/img.js.map +1 -1
  198. package/dist/collection/components/input/input.js +7 -5
  199. package/dist/collection/components/input/input.js.map +1 -1
  200. package/dist/collection/components/intersection-observe/intersection-observe.js +3 -2
  201. package/dist/collection/components/intersection-observe/intersection-observe.js.map +1 -1
  202. package/dist/collection/components/menu/menu.css +1 -1
  203. package/dist/collection/components/menu/menu.js +12 -10
  204. package/dist/collection/components/menu/menu.js.map +1 -1
  205. package/dist/collection/components/menu-drawer/menu-drawer.css +3 -3
  206. package/dist/collection/components/menu-drawer/menu-drawer.js +8 -6
  207. package/dist/collection/components/menu-drawer/menu-drawer.js.map +1 -1
  208. package/dist/collection/components/more-less/more-less.js +4 -3
  209. package/dist/collection/components/more-less/more-less.js.map +1 -1
  210. package/dist/collection/components/nav-item/nav-item.css +12 -12
  211. package/dist/collection/components/nav-item/nav-item.js +11 -9
  212. package/dist/collection/components/nav-item/nav-item.js.map +1 -1
  213. package/dist/collection/components/option/option.css +2 -2
  214. package/dist/collection/components/option/option.js +4 -3
  215. package/dist/collection/components/option/option.js.map +1 -1
  216. package/dist/collection/components/overflow-nav/overflow-nav.css +4 -4
  217. package/dist/collection/components/overflow-nav/overflow-nav.js +5 -4
  218. package/dist/collection/components/overflow-nav/overflow-nav.js.map +1 -1
  219. package/dist/collection/components/progress-bar/progress-bar.js +7 -4
  220. package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
  221. package/dist/collection/components/range/range.js +3 -1
  222. package/dist/collection/components/range/range.js.map +1 -1
  223. package/dist/collection/components/rating/rating.css +1 -1
  224. package/dist/collection/components/rating/rating.js +6 -5
  225. package/dist/collection/components/rating/rating.js.map +1 -1
  226. package/dist/collection/components/resize-observe/resize-observe.js +3 -2
  227. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  228. package/dist/collection/components/select/select.css +1 -5
  229. package/dist/collection/components/select/select.js +9 -7
  230. package/dist/collection/components/select/select.js.map +1 -1
  231. package/dist/collection/components/skeleton/skeleton.js +4 -3
  232. package/dist/collection/components/skeleton/skeleton.js.map +1 -1
  233. package/dist/collection/components/slides/slide.js +3 -2
  234. package/dist/collection/components/slides/slide.js.map +1 -1
  235. package/dist/collection/components/slides/slides.js +10 -8
  236. package/dist/collection/components/slides/slides.js.map +1 -1
  237. package/dist/collection/components/sortable/sortable.js +3 -2
  238. package/dist/collection/components/sortable/sortable.js.map +1 -1
  239. package/dist/collection/components/spinner/spinner.js +3 -2
  240. package/dist/collection/components/spinner/spinner.js.map +1 -1
  241. package/dist/collection/components/split-pane/split-pane.js +3 -2
  242. package/dist/collection/components/split-pane/split-pane.js.map +1 -1
  243. package/dist/collection/components/sticker/sticker.js +5 -4
  244. package/dist/collection/components/sticker/sticker.js.map +1 -1
  245. package/dist/collection/components/table/table.cell.js +3 -1
  246. package/dist/collection/components/table/table.cell.js.map +1 -1
  247. package/dist/collection/components/table/table.css +2 -2
  248. package/dist/collection/components/table/table.header.js +2 -1
  249. package/dist/collection/components/table/table.header.js.map +1 -1
  250. package/dist/collection/components/table/table.js +9 -8
  251. package/dist/collection/components/table/table.js.map +1 -1
  252. package/dist/collection/components/table/table.row.js +1 -1
  253. package/dist/collection/components/table/table.row.js.map +1 -1
  254. package/dist/collection/components/tabs/tab-content.js +5 -3
  255. package/dist/collection/components/tabs/tab-content.js.map +1 -1
  256. package/dist/collection/components/tabs/tab-group.css +3 -3
  257. package/dist/collection/components/tabs/tab-group.js +12 -10
  258. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  259. package/dist/collection/components/tabs/tab.js +4 -3
  260. package/dist/collection/components/tabs/tab.js.map +1 -1
  261. package/dist/collection/components/tooltip/tooltip.js +4 -3
  262. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  263. package/dist/collection/global/script/global.js +28 -23
  264. package/dist/collection/global/script/global.js.map +1 -1
  265. package/dist/collection/index.js +17 -2
  266. package/dist/collection/index.js.map +1 -1
  267. package/dist/collection/utils/renderer.js +54 -0
  268. package/dist/collection/utils/renderer.js.map +1 -0
  269. package/dist/components/algolia.js +11 -8
  270. package/dist/components/algolia.js.map +1 -1
  271. package/dist/components/datalist.js +19 -30
  272. package/dist/components/datalist.js.map +1 -1
  273. package/dist/components/date-picker.js +6 -5
  274. package/dist/components/date-picker.js.map +1 -1
  275. package/dist/components/dropdown.js +9 -7
  276. package/dist/components/dropdown.js.map +1 -1
  277. package/dist/components/form-control.js +1 -1
  278. package/dist/components/form-control.js.map +1 -1
  279. package/dist/components/global-nav-user-profile.js +3 -2
  280. package/dist/components/global-nav-user-profile.js.map +1 -1
  281. package/dist/components/grid.js +2 -1
  282. package/dist/components/grid.js.map +1 -1
  283. package/dist/components/icon-button.js +2 -2
  284. package/dist/components/icon-button.js.map +1 -1
  285. package/dist/components/icon.js +4 -2
  286. package/dist/components/icon.js.map +1 -1
  287. package/dist/components/img.js +5 -4
  288. package/dist/components/img.js.map +1 -1
  289. package/dist/components/index.js +48 -31
  290. package/dist/components/index.js.map +1 -1
  291. package/dist/components/input.js +7 -5
  292. package/dist/components/input.js.map +1 -1
  293. package/dist/components/menu.js +13 -11
  294. package/dist/components/menu.js.map +1 -1
  295. package/dist/components/nano-accordion.js +7 -5
  296. package/dist/components/nano-accordion.js.map +1 -1
  297. package/dist/components/nano-alert.js +8 -7
  298. package/dist/components/nano-alert.js.map +1 -1
  299. package/dist/components/nano-algolia-filter.js +5 -3
  300. package/dist/components/nano-algolia-filter.js.map +1 -1
  301. package/dist/components/nano-algolia-pagination.js +2 -2
  302. package/dist/components/nano-algolia-results.js +5 -3
  303. package/dist/components/nano-algolia-results.js.map +1 -1
  304. package/dist/components/nano-animation.js +3 -2
  305. package/dist/components/nano-animation.js.map +1 -1
  306. package/dist/components/nano-checkbox-group.js +6 -4
  307. package/dist/components/nano-checkbox-group.js.map +1 -1
  308. package/dist/components/nano-checkbox.js +6 -5
  309. package/dist/components/nano-checkbox.js.map +1 -1
  310. package/dist/components/nano-date-input.js +7 -6
  311. package/dist/components/nano-date-input.js.map +1 -1
  312. package/dist/components/nano-details.js +7 -6
  313. package/dist/components/nano-details.js.map +1 -1
  314. package/dist/components/nano-dialog.js +4 -3
  315. package/dist/components/nano-dialog.js.map +1 -1
  316. package/dist/components/nano-drawer.js +6 -5
  317. package/dist/components/nano-drawer.js.map +1 -1
  318. package/dist/components/nano-field-validator.js +16 -14
  319. package/dist/components/nano-field-validator.js.map +1 -1
  320. package/dist/components/nano-file-upload.js +4 -3
  321. package/dist/components/nano-file-upload.js.map +1 -1
  322. package/dist/components/nano-global-nav.js +51 -49
  323. package/dist/components/nano-global-nav.js.map +1 -1
  324. package/dist/components/nano-global-search-results.js +10 -6
  325. package/dist/components/nano-global-search-results.js.map +1 -1
  326. package/dist/components/nano-grid-item.js +1 -1
  327. package/dist/components/nano-hero.js +7 -6
  328. package/dist/components/nano-hero.js.map +1 -1
  329. package/dist/components/nano-intersection-observe.js +3 -2
  330. package/dist/components/nano-intersection-observe.js.map +1 -1
  331. package/dist/components/nano-menu-drawer.js +9 -7
  332. package/dist/components/nano-menu-drawer.js.map +1 -1
  333. package/dist/components/nano-more-less.js +4 -3
  334. package/dist/components/nano-more-less.js.map +1 -1
  335. package/dist/components/nano-overflow-nav.js +6 -5
  336. package/dist/components/nano-overflow-nav.js.map +1 -1
  337. package/dist/components/nano-range.js +3 -1
  338. package/dist/components/nano-range.js.map +1 -1
  339. package/dist/components/nano-rating.js +7 -6
  340. package/dist/components/nano-rating.js.map +1 -1
  341. package/dist/components/nano-slide.js +3 -2
  342. package/dist/components/nano-slide.js.map +1 -1
  343. package/dist/components/nano-slides.js +10 -8
  344. package/dist/components/nano-slides.js.map +1 -1
  345. package/dist/components/nano-sortable.js +3 -2
  346. package/dist/components/nano-sortable.js.map +1 -1
  347. package/dist/components/nano-split-pane.js +3 -2
  348. package/dist/components/nano-split-pane.js.map +1 -1
  349. package/dist/components/nano-tab-content.js +5 -3
  350. package/dist/components/nano-tab-content.js.map +1 -1
  351. package/dist/components/nano-tab-group.js +13 -11
  352. package/dist/components/nano-tab-group.js.map +1 -1
  353. package/dist/components/nano-tab.js +4 -3
  354. package/dist/components/nano-tab.js.map +1 -1
  355. package/dist/components/nano-table.js +38 -36
  356. package/dist/components/nano-table.js.map +1 -1
  357. package/dist/components/nav-item.js +12 -10
  358. package/dist/components/nav-item.js.map +1 -1
  359. package/dist/components/option.js +5 -4
  360. package/dist/components/option.js.map +1 -1
  361. package/dist/components/progress-bar.js +7 -4
  362. package/dist/components/progress-bar.js.map +1 -1
  363. package/dist/components/renderer.js +58 -0
  364. package/dist/components/renderer.js.map +1 -0
  365. package/dist/components/resize-observe.js +3 -2
  366. package/dist/components/resize-observe.js.map +1 -1
  367. package/dist/components/select.js +10 -8
  368. package/dist/components/select.js.map +1 -1
  369. package/dist/components/skeleton.js +4 -3
  370. package/dist/components/skeleton.js.map +1 -1
  371. package/dist/components/spinner.js +3 -2
  372. package/dist/components/spinner.js.map +1 -1
  373. package/dist/components/sticker.js +5 -4
  374. package/dist/components/sticker.js.map +1 -1
  375. package/dist/components/tooltip.js +4 -3
  376. package/dist/components/tooltip.js.map +1 -1
  377. package/dist/esm/{algolia-data-8fc24341.js → algolia-data-f0f72f1d.js} +2 -2
  378. package/dist/esm/{algolia-data-8fc24341.js.map → algolia-data-f0f72f1d.js.map} +1 -1
  379. package/dist/esm/app-globals-f0120bbe.js +39 -0
  380. package/dist/esm/app-globals-f0120bbe.js.map +1 -0
  381. package/dist/esm/{component-store-b798181b.js → component-store-199a9fd8.js} +2 -2
  382. package/dist/esm/{component-store-b798181b.js.map → component-store-199a9fd8.js.map} +1 -1
  383. package/dist/esm/{dom-d7f9f24c.js → dom-fafdec9a.js} +2 -2
  384. package/dist/esm/{dom-d7f9f24c.js.map → dom-fafdec9a.js.map} +1 -1
  385. package/dist/esm/{fade-4ff5d9de.js → fade-ce1a4958.js} +4 -3
  386. package/dist/esm/fade-ce1a4958.js.map +1 -0
  387. package/dist/esm/{form-control-812999d0.js → form-control-f48fa873.js} +2 -2
  388. package/dist/esm/form-control-f48fa873.js.map +1 -0
  389. package/dist/esm/{fullscreen-382d7890.js → fullscreen-52d62028.js} +4 -3
  390. package/dist/esm/fullscreen-52d62028.js.map +1 -0
  391. package/dist/esm/{index-3118109b.js → index-6cc72cd9.js} +3 -3
  392. package/dist/esm/index-6cc72cd9.js.map +1 -0
  393. package/dist/esm/{index-d7a4a150.js → index-f5f7b950.js} +2 -2
  394. package/dist/esm/{index-d7a4a150.js.map → index-f5f7b950.js.map} +1 -1
  395. package/dist/esm/index.js +19 -5
  396. package/dist/esm/index.js.map +1 -1
  397. package/dist/esm/{lazyload-49b745e4.js → lazyload-8ff69ba4.js} +4 -3
  398. package/dist/esm/lazyload-8ff69ba4.js.map +1 -0
  399. package/dist/esm/loader.js +3 -3
  400. package/dist/esm/nano-accordion.entry.js +8 -6
  401. package/dist/esm/nano-accordion.entry.js.map +1 -1
  402. package/dist/esm/nano-alert.entry.js +10 -9
  403. package/dist/esm/nano-alert.entry.js.map +1 -1
  404. package/dist/esm/nano-algolia-filter.entry.js +7 -5
  405. package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
  406. package/dist/esm/nano-algolia-pagination.entry.js +4 -4
  407. package/dist/esm/nano-algolia-results.entry.js +6 -4
  408. package/dist/esm/nano-algolia-results.entry.js.map +1 -1
  409. package/dist/esm/nano-algolia.entry.js +14 -11
  410. package/dist/esm/nano-algolia.entry.js.map +1 -1
  411. package/dist/esm/nano-animation.entry.js +3 -2
  412. package/dist/esm/nano-animation.entry.js.map +1 -1
  413. package/dist/esm/nano-checkbox-group.entry.js +6 -4
  414. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  415. package/dist/esm/nano-checkbox.entry.js +6 -5
  416. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  417. package/dist/esm/nano-components.js +7 -4
  418. package/dist/esm/nano-components.js.map +1 -1
  419. package/dist/esm/nano-datalist_3.entry.js +30 -28
  420. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  421. package/dist/esm/nano-date-input.entry.js +7 -6
  422. package/dist/esm/nano-date-input.entry.js.map +1 -1
  423. package/dist/esm/nano-date-picker.entry.js +6 -5
  424. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  425. package/dist/esm/nano-details.entry.js +7 -6
  426. package/dist/esm/nano-details.entry.js.map +1 -1
  427. package/dist/esm/nano-dialog.entry.js +7 -6
  428. package/dist/esm/nano-dialog.entry.js.map +1 -1
  429. package/dist/esm/nano-drawer.entry.js +9 -8
  430. package/dist/esm/nano-drawer.entry.js.map +1 -1
  431. package/dist/esm/nano-dropdown.entry.js +9 -7
  432. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  433. package/dist/esm/nano-field-validator.entry.js +17 -15
  434. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  435. package/dist/esm/nano-file-upload.entry.js +4 -3
  436. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  437. package/dist/esm/nano-global-nav-user-profile_3.entry.js +23 -20
  438. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  439. package/dist/esm/nano-global-nav.entry.js +52 -50
  440. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  441. package/dist/esm/nano-global-search-results.entry.js +10 -6
  442. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  443. package/dist/esm/nano-grid-item.entry.js +2 -2
  444. package/dist/esm/nano-grid_2.entry.js +6 -5
  445. package/dist/esm/nano-grid_2.entry.js.map +1 -1
  446. package/dist/esm/nano-hero.entry.js +7 -6
  447. package/dist/esm/nano-hero.entry.js.map +1 -1
  448. package/dist/esm/nano-icon-button_2.entry.js +6 -5
  449. package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
  450. package/dist/esm/nano-icon.entry.js +4 -2
  451. package/dist/esm/nano-icon.entry.js.map +1 -1
  452. package/dist/esm/nano-input.entry.js +9 -7
  453. package/dist/esm/nano-input.entry.js.map +1 -1
  454. package/dist/esm/nano-intersection-observe.entry.js +3 -2
  455. package/dist/esm/nano-intersection-observe.entry.js.map +1 -1
  456. package/dist/esm/nano-menu-drawer.entry.js +10 -8
  457. package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
  458. package/dist/esm/nano-more-less.entry.js +4 -3
  459. package/dist/esm/nano-more-less.entry.js.map +1 -1
  460. package/dist/esm/nano-overflow-nav.entry.js +7 -6
  461. package/dist/esm/nano-overflow-nav.entry.js.map +1 -1
  462. package/dist/esm/nano-progress-bar.entry.js +7 -4
  463. package/dist/esm/nano-progress-bar.entry.js.map +1 -1
  464. package/dist/esm/nano-range.entry.js +3 -1
  465. package/dist/esm/nano-range.entry.js.map +1 -1
  466. package/dist/esm/nano-rating.entry.js +7 -6
  467. package/dist/esm/nano-rating.entry.js.map +1 -1
  468. package/dist/esm/nano-resize-observe_2.entry.js +5 -4
  469. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  470. package/dist/esm/nano-slide.entry.js +3 -2
  471. package/dist/esm/nano-slide.entry.js.map +1 -1
  472. package/dist/esm/{nano-slides-c3eb1afe.js → nano-slides-2715825b.js} +15 -13
  473. package/dist/esm/nano-slides-2715825b.js.map +1 -0
  474. package/dist/esm/nano-slides.entry.js +3 -2
  475. package/dist/esm/nano-slides.entry.js.map +1 -1
  476. package/dist/esm/nano-sortable.entry.js +3 -2
  477. package/dist/esm/nano-sortable.entry.js.map +1 -1
  478. package/dist/esm/nano-spinner.entry.js +3 -2
  479. package/dist/esm/nano-spinner.entry.js.map +1 -1
  480. package/dist/esm/nano-split-pane.entry.js +3 -2
  481. package/dist/esm/nano-split-pane.entry.js.map +1 -1
  482. package/dist/esm/nano-sticker.entry.js +6 -5
  483. package/dist/esm/nano-sticker.entry.js.map +1 -1
  484. package/dist/esm/nano-tab-content.entry.js +5 -3
  485. package/dist/esm/nano-tab-content.entry.js.map +1 -1
  486. package/dist/esm/nano-tab-group.entry.js +16 -14
  487. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  488. package/dist/esm/nano-tab.entry.js +4 -3
  489. package/dist/esm/nano-tab.entry.js.map +1 -1
  490. package/dist/esm/{nano-table-d15f6782.js → nano-table-4481d4e1.js} +42 -40
  491. package/dist/esm/nano-table-4481d4e1.js.map +1 -0
  492. package/dist/esm/nano-table.entry.js +4 -3
  493. package/dist/esm/nano-table.entry.js.map +1 -1
  494. package/dist/esm/{page-dots-986d3b32.js → page-dots-5b23db8c.js} +4 -3
  495. package/dist/esm/page-dots-5b23db8c.js.map +1 -0
  496. package/dist/esm/renderer-4bc3e2dc.js +58 -0
  497. package/dist/esm/renderer-4bc3e2dc.js.map +1 -0
  498. package/dist/esm/{scroll-f373a189.js → scroll-1afc6a4e.js} +2 -2
  499. package/dist/esm/{scroll-f373a189.js.map → scroll-1afc6a4e.js.map} +1 -1
  500. package/dist/esm/{table.worker-b7ee4edc.js → table.worker-1bc9c170.js} +5 -4
  501. package/dist/esm/table.worker-1bc9c170.js.map +1 -0
  502. package/dist/nano-components/{algolia-data-8fc24341.js → algolia-data-f0f72f1d.js} +2 -2
  503. package/dist/nano-components/app-globals-f0120bbe.js +5 -0
  504. package/dist/nano-components/app-globals-f0120bbe.js.map +1 -0
  505. package/dist/nano-components/{component-store-b798181b.js → component-store-199a9fd8.js} +2 -2
  506. package/dist/nano-components/{dom-d7f9f24c.js → dom-fafdec9a.js} +2 -2
  507. package/dist/nano-components/fade-ce1a4958.js +5 -0
  508. package/dist/nano-components/{fade-4ff5d9de.js.map → fade-ce1a4958.js.map} +1 -1
  509. package/dist/nano-components/form-control-f48fa873.js +5 -0
  510. package/dist/nano-components/form-control-f48fa873.js.map +1 -0
  511. package/dist/nano-components/fullscreen-52d62028.js +5 -0
  512. package/dist/nano-components/{fullscreen-382d7890.js.map → fullscreen-52d62028.js.map} +1 -1
  513. package/dist/nano-components/{index-3118109b.js → index-6cc72cd9.js} +3 -3
  514. package/dist/nano-components/index-6cc72cd9.js.map +1 -0
  515. package/dist/nano-components/{index-d7a4a150.js → index-f5f7b950.js} +2 -2
  516. package/dist/nano-components/index.esm.js +1 -1
  517. package/dist/nano-components/index.esm.js.map +1 -1
  518. package/dist/nano-components/lazyload-8ff69ba4.js +5 -0
  519. package/dist/nano-components/{lazyload-49b745e4.js.map → lazyload-8ff69ba4.js.map} +1 -1
  520. package/dist/nano-components/nano-accordion.entry.js +1 -1
  521. package/dist/nano-components/nano-accordion.entry.js.map +1 -1
  522. package/dist/nano-components/nano-alert.entry.js +1 -1
  523. package/dist/nano-components/nano-alert.entry.js.map +1 -1
  524. package/dist/nano-components/nano-algolia-filter.entry.js +1 -1
  525. package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -1
  526. package/dist/nano-components/nano-algolia-pagination.entry.js +1 -1
  527. package/dist/nano-components/nano-algolia-results.entry.js +1 -1
  528. package/dist/nano-components/nano-algolia-results.entry.js.map +1 -1
  529. package/dist/nano-components/nano-algolia.entry.js +1 -1
  530. package/dist/nano-components/nano-algolia.entry.js.map +1 -1
  531. package/dist/nano-components/nano-animation.entry.js +1 -1
  532. package/dist/nano-components/nano-animation.entry.js.map +1 -1
  533. package/dist/nano-components/nano-checkbox-group.entry.js +1 -1
  534. package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -1
  535. package/dist/nano-components/nano-checkbox.entry.js +1 -1
  536. package/dist/nano-components/nano-checkbox.entry.js.map +1 -1
  537. package/dist/nano-components/nano-components.esm.js +1 -1
  538. package/dist/nano-components/nano-components.esm.js.map +1 -1
  539. package/dist/nano-components/nano-datalist_3.entry.js +1 -1
  540. package/dist/nano-components/nano-datalist_3.entry.js.map +1 -1
  541. package/dist/nano-components/nano-date-input.entry.js +1 -1
  542. package/dist/nano-components/nano-date-input.entry.js.map +1 -1
  543. package/dist/nano-components/nano-date-picker.entry.js +1 -1
  544. package/dist/nano-components/nano-date-picker.entry.js.map +1 -1
  545. package/dist/nano-components/nano-details.entry.js +1 -1
  546. package/dist/nano-components/nano-details.entry.js.map +1 -1
  547. package/dist/nano-components/nano-dialog.entry.js +1 -1
  548. package/dist/nano-components/nano-dialog.entry.js.map +1 -1
  549. package/dist/nano-components/nano-drawer.entry.js +1 -1
  550. package/dist/nano-components/nano-drawer.entry.js.map +1 -1
  551. package/dist/nano-components/nano-dropdown.entry.js +1 -1
  552. package/dist/nano-components/nano-dropdown.entry.js.map +1 -1
  553. package/dist/nano-components/nano-field-validator.entry.js +1 -1
  554. package/dist/nano-components/nano-field-validator.entry.js.map +1 -1
  555. package/dist/nano-components/nano-file-upload.entry.js +1 -1
  556. package/dist/nano-components/nano-file-upload.entry.js.map +1 -1
  557. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
  558. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
  559. package/dist/nano-components/nano-global-nav.entry.js +1 -1
  560. package/dist/nano-components/nano-global-nav.entry.js.map +1 -1
  561. package/dist/nano-components/nano-global-search-results.entry.js +1 -1
  562. package/dist/nano-components/nano-global-search-results.entry.js.map +1 -1
  563. package/dist/nano-components/nano-grid-item.entry.js +1 -1
  564. package/dist/nano-components/nano-grid-item.entry.js.map +1 -1
  565. package/dist/nano-components/nano-grid_2.entry.js +1 -1
  566. package/dist/nano-components/nano-grid_2.entry.js.map +1 -1
  567. package/dist/nano-components/nano-hero.entry.js +1 -1
  568. package/dist/nano-components/nano-hero.entry.js.map +1 -1
  569. package/dist/nano-components/nano-icon-button_2.entry.js +1 -1
  570. package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -1
  571. package/dist/nano-components/nano-icon.entry.js +1 -1
  572. package/dist/nano-components/nano-icon.entry.js.map +1 -1
  573. package/dist/nano-components/nano-input.entry.js +1 -1
  574. package/dist/nano-components/nano-input.entry.js.map +1 -1
  575. package/dist/nano-components/nano-intersection-observe.entry.js +1 -1
  576. package/dist/nano-components/nano-intersection-observe.entry.js.map +1 -1
  577. package/dist/nano-components/nano-menu-drawer.entry.js +1 -1
  578. package/dist/nano-components/nano-menu-drawer.entry.js.map +1 -1
  579. package/dist/nano-components/nano-more-less.entry.js +1 -1
  580. package/dist/nano-components/nano-more-less.entry.js.map +1 -1
  581. package/dist/nano-components/nano-overflow-nav.entry.js +1 -1
  582. package/dist/nano-components/nano-overflow-nav.entry.js.map +1 -1
  583. package/dist/nano-components/nano-progress-bar.entry.js +1 -1
  584. package/dist/nano-components/nano-progress-bar.entry.js.map +1 -1
  585. package/dist/nano-components/nano-range.entry.js +1 -1
  586. package/dist/nano-components/nano-range.entry.js.map +1 -1
  587. package/dist/nano-components/nano-rating.entry.js +1 -1
  588. package/dist/nano-components/nano-rating.entry.js.map +1 -1
  589. package/dist/nano-components/nano-resize-observe_2.entry.js +1 -1
  590. package/dist/nano-components/nano-resize-observe_2.entry.js.map +1 -1
  591. package/dist/nano-components/nano-slide.entry.js +1 -1
  592. package/dist/nano-components/nano-slide.entry.js.map +1 -1
  593. package/dist/nano-components/{nano-slides-c3eb1afe.js → nano-slides-2715825b.js} +5 -5
  594. package/dist/nano-components/nano-slides-2715825b.js.map +1 -0
  595. package/dist/nano-components/nano-slides.entry.js +1 -1
  596. package/dist/nano-components/nano-sortable.entry.js +1 -1
  597. package/dist/nano-components/nano-sortable.entry.js.map +1 -1
  598. package/dist/nano-components/nano-spinner.entry.js +1 -1
  599. package/dist/nano-components/nano-spinner.entry.js.map +1 -1
  600. package/dist/nano-components/nano-split-pane.entry.js +1 -1
  601. package/dist/nano-components/nano-split-pane.entry.js.map +1 -1
  602. package/dist/nano-components/nano-sticker.entry.js +1 -1
  603. package/dist/nano-components/nano-sticker.entry.js.map +1 -1
  604. package/dist/nano-components/nano-tab-content.entry.js +1 -1
  605. package/dist/nano-components/nano-tab-content.entry.js.map +1 -1
  606. package/dist/nano-components/nano-tab-group.entry.js +1 -1
  607. package/dist/nano-components/nano-tab-group.entry.js.map +1 -1
  608. package/dist/nano-components/nano-tab.entry.js +1 -1
  609. package/dist/nano-components/nano-tab.entry.js.map +1 -1
  610. package/dist/nano-components/nano-table-4481d4e1.js +5 -0
  611. package/dist/nano-components/nano-table-4481d4e1.js.map +1 -0
  612. package/dist/nano-components/nano-table.entry.js +1 -1
  613. package/dist/nano-components/page-dots-5b23db8c.js +5 -0
  614. package/dist/nano-components/{page-dots-986d3b32.js.map → page-dots-5b23db8c.js.map} +1 -1
  615. package/dist/nano-components/renderer-4bc3e2dc.js +5 -0
  616. package/dist/nano-components/renderer-4bc3e2dc.js.map +1 -0
  617. package/dist/nano-components/{scroll-f373a189.js → scroll-1afc6a4e.js} +2 -2
  618. package/dist/nano-components/table.worker-1bc9c170.js +5 -0
  619. package/dist/stencil.config.js +1 -0
  620. package/dist/stencil.config.js.map +1 -1
  621. package/dist/types/global/script/global.d.ts +2 -0
  622. package/dist/types/index.d.ts +3 -2
  623. package/dist/types/utils/renderer.d.ts +27 -0
  624. package/docs-json.json +1 -12
  625. package/hydrate/index.js +453 -393
  626. package/hydrate/index.mjs +453 -393
  627. package/package.json +1 -1
  628. package/dist/cjs/app-globals-93d8b419.js +0 -39
  629. package/dist/cjs/app-globals-93d8b419.js.map +0 -1
  630. package/dist/cjs/fade-2dd9dd8b.js.map +0 -1
  631. package/dist/cjs/form-control-2d88adb2.js +0 -82
  632. package/dist/cjs/form-control-2d88adb2.js.map +0 -1
  633. package/dist/cjs/fullscreen-5d0422de.js.map +0 -1
  634. package/dist/cjs/index-b6fa04fa.js.map +0 -1
  635. package/dist/cjs/lazyload-f181cb37.js.map +0 -1
  636. package/dist/cjs/nano-slides-612634dc.js.map +0 -1
  637. package/dist/cjs/nano-table-99d6a3cc.js.map +0 -1
  638. package/dist/cjs/page-dots-99dd88f6.js.map +0 -1
  639. package/dist/cjs/table.worker-263468df.js.map +0 -1
  640. package/dist/esm/app-globals-d4ab01f2.js +0 -37
  641. package/dist/esm/app-globals-d4ab01f2.js.map +0 -1
  642. package/dist/esm/fade-4ff5d9de.js.map +0 -1
  643. package/dist/esm/form-control-812999d0.js.map +0 -1
  644. package/dist/esm/fullscreen-382d7890.js.map +0 -1
  645. package/dist/esm/index-3118109b.js.map +0 -1
  646. package/dist/esm/lazyload-49b745e4.js.map +0 -1
  647. package/dist/esm/nano-slides-c3eb1afe.js.map +0 -1
  648. package/dist/esm/nano-table-d15f6782.js.map +0 -1
  649. package/dist/esm/page-dots-986d3b32.js.map +0 -1
  650. package/dist/esm/table.worker-b7ee4edc.js.map +0 -1
  651. package/dist/nano-components/app-globals-d4ab01f2.js +0 -5
  652. package/dist/nano-components/app-globals-d4ab01f2.js.map +0 -1
  653. package/dist/nano-components/fade-4ff5d9de.js +0 -5
  654. package/dist/nano-components/form-control-812999d0.js +0 -5
  655. package/dist/nano-components/form-control-812999d0.js.map +0 -1
  656. package/dist/nano-components/fullscreen-382d7890.js +0 -5
  657. package/dist/nano-components/index-3118109b.js.map +0 -1
  658. package/dist/nano-components/lazyload-49b745e4.js +0 -5
  659. package/dist/nano-components/nano-slides-c3eb1afe.js.map +0 -1
  660. package/dist/nano-components/nano-table-d15f6782.js +0 -5
  661. package/dist/nano-components/nano-table-d15f6782.js.map +0 -1
  662. package/dist/nano-components/page-dots-986d3b32.js +0 -5
  663. package/dist/nano-components/table.worker-b7ee4edc.js +0 -5
  664. /package/dist/nano-components/{algolia-data-8fc24341.js.map → algolia-data-f0f72f1d.js.map} +0 -0
  665. /package/dist/nano-components/{component-store-b798181b.js.map → component-store-199a9fd8.js.map} +0 -0
  666. /package/dist/nano-components/{dom-d7f9f24c.js.map → dom-fafdec9a.js.map} +0 -0
  667. /package/dist/nano-components/{index-d7a4a150.js.map → index-f5f7b950.js.map} +0 -0
  668. /package/dist/nano-components/{scroll-f373a189.js.map → scroll-1afc6a4e.js.map} +0 -0
  669. /package/dist/nano-components/{table.worker-b7ee4edc.js.map → table.worker-1bc9c170.js.map} +0 -0
  670. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/custom-element-doc-generator.d.ts +0 -0
  671. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/generate-vue-component.d.ts +0 -0
  672. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/index.d.ts +0 -0
  673. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/output-vue.d.ts +0 -0
  674. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/plugin.d.ts +0 -0
  675. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/types.d.ts +0 -0
  676. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/utils.d.ts +0 -0
  677. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
  678. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
  679. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
  680. /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -1,7 +1,8 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
4
+ import { proxyCustomElement, HTMLElement, Host } from '@stencil/core/internal/client';
5
+ import { h } from './renderer.js';
5
6
 
6
7
  const spinnerCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:inline-block;--base-color-rgb:var(--nano-indicator-rgb, 84 140 175);--indicator-color:var(\n --nano-indicator-color,\n rgb(var(--base-color-rgb) / 100%)\n );--track-color:var(--nano-track-color, rgb(var(--base-color-rgb) / 20%));--overlay-color:var(--nano-layer-overlay-light, rgb(255 255 255 / 70%))}.spinner{display:flex;flex-direction:column;align-items:center;justify-content:center}:host([overlay]:not([overlay=false])) .spinner{position:absolute;inset:0}:host([overlay]:not([overlay=false])) .spinner .spinner__loader,:host([overlay]:not([overlay=false])) .spinner .spinner__text{z-index:1}.spinner__overlay{background:var(--overlay-color);position:absolute;inset:0;z-index:0;-webkit-backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px))}.spinner__loader{font-size:var(--spinner-scale, 1em)}.spinner__spin{display:block;margin:auto;inline-size:1em;block-size:1em;border-radius:50%;border:solid 0.1em var(--track-color);border-block-start-color:var(--indicator-color);border-inline-end-color:var(--indicator-color);border-inline-start-color:var(--indicator-color);animation:1s linear infinite spin}.spinner__dna{font-size:0.2286em;display:flex}.spinner__dnatrack{position:relative;padding-block:0;padding-inline:0.625em;block-size:4.375em;inline-size:0.625em;overflow:hidden}.spinner__dnatrack::before{content:\"\";position:absolute;inset-block-start:1.875em;inset-inline-start:50%;transform:translateX(-50%) translateZ(0);inline-size:0.0625em;inline-size:max(.0625em, 1px);block-size:0.625em;background:var(--track-color);animation:flex 1.5s linear infinite;transform-origin:center center}.spinner__dnatrack--2::before{animation:flex 1.5s -1.3s linear infinite}.spinner__dnatrack--3::before{animation:flex 1.5s -1.1s linear infinite}.spinner__dnatrack--4::before{animation:flex 1.5s -0.9s linear infinite}.spinner__dnatrack--5::before{animation:flex 1.5s -0.75s linear infinite}.spinner__dnadot{position:absolute;inline-size:0.5em;block-size:0.5em;border-radius:50%;background:var(--indicator-color);animation:rotate 1.5s linear infinite;transform-origin:center center;inset-inline-start:50%;transform:translateX(-50%) translateZ(0) translateY(0)}.spinner__dnadot--2{animation:rotate 1.5s -0.75s linear infinite}.spinner__dnadot--3{animation:rotate 1.5s -1.3s linear infinite}.spinner__dnadot--4{animation:rotate 1.5s -0.55s linear infinite}.spinner__dnadot--5{animation:rotate 1.5s -1.1s linear infinite}.spinner__dnadot--6{animation:rotate 1.5s -0.35s linear infinite}.spinner__dnadot--7{animation:rotate 1.5s -0.9s linear infinite}.spinner__dnadot--8{animation:rotate 1.5s -0.15s linear infinite}.spinner__dnadot--9{animation:rotate 1.5s -0.75s linear infinite}.spinner__dnadot--10{animation:rotate 1.5s 0s linear infinite}.spinner__text{text-align:center;position:relative;margin-block-start:0.5em}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes rotate{0%,100%{transform:translateX(-50%) translateY(0) scale(1)}25%{transform:translateX(-50%) translateY(1.875em) scale(2)}50%{transform:translateX(-50%) translateY(3.75em) scale(1)}75%{transform:translateX(-50%) translateY(1.875em) scale(0.3)}}@keyframes flex{0%,100%{transform:translateX(-50%) scaleY(5)}25%{transform:translateX(-50%) scaleY(1)}50%{transform:translateX(-50%) scaleY(5)}75%{transform:translateX(-50%) scaleY(1)}}";
7
8
  const NanoSpinnerStyle0 = spinnerCss;
@@ -22,7 +23,7 @@ const Spinner = /*@__PURE__*/ proxyCustomElement(class Spinner extends HTMLEleme
22
23
  this.hasText = !!this.el.childNodes.length;
23
24
  }
24
25
  render() {
25
- return (h("div", { key: 'bf3c9c701299ad688a9befe51ebb57a005af5eb1', class: "spinner", "aria-busy": "true", "aria-live": "polite" }, h("div", { key: 'd3ead911719c415b15ea0aefec292f8205f36f43', class: "spinner__loader" }, this.type === 'dna' && (h("div", { key: '69d9f55f9fc1c9b7a786c73f2b3773bbe5f04cfe', class: "spinner__dna" }, h("div", { key: '7e3cddb01607045969421bbff175138e2c7e2171', class: "spinner__dnatrack spinner__dnatrack--1" }, h("div", { key: '20552425058b7148cf7ab750330cd650bb653cd3', class: "spinner__dnadot spinner__dnadot--1" }), h("div", { key: '9d41cf549c34ecd465fba4e18f138b25df9f627c', class: "spinner__dnadot spinner__dnadot--2" })), h("div", { key: '5f69f3e654d9082aa06d72f37ad5b39094a923b6', class: "spinner__dnatrack spinner__dnatrack--2" }, h("div", { key: 'd7744a929bd439d7eae49f06f1b49b8dba527991', class: "spinner__dnadot spinner__dnadot--3" }), h("div", { key: 'df64b356ac817c45e43f80c5dc8bcb31b29ff2c0', class: "spinner__dnadot spinner__dnadot--4" })), h("div", { key: '462fc990493da3b6947a32eca06c63ec3797fa33', class: "spinner__dnatrack spinner__dnatrack--3" }, h("div", { key: '75e5beaceda3aa7eb2a1c0f2055257990d7da440', class: "spinner__dnadot spinner__dnadot--5" }), h("div", { key: '4387620a95ce780d9c47accbd4bf7b24bd0cf707', class: "spinner__dnadot spinner__dnadot--6" })), h("div", { key: 'edf7dee0f9c6fec893eb3721fa1e798fc5926523', class: "spinner__dnatrack spinner__dnatrack--4" }, h("div", { key: '3787f671edd1390969f56cca251a7d41b5db4a19', class: "spinner__dnadot spinner__dnadot--7" }), h("div", { key: '239a8fefdf0c875e8aa950b17966d31d399bcf54', class: "spinner__dnadot spinner__dnadot--8" })), h("div", { key: '0a713f87acb9b744f8566ee30c32a3f85ddfe6a1', class: "spinner__dnatrack spinner__dnatrack--5" }, h("div", { key: 'e4b28fd81404fee9e52a1dae5ddc2579f5d90dc5', class: "spinner__dnadot spinner__dnadot--9" }), h("div", { key: '3707286cd22fa5c2f24e1d2fcba0bcd500c69b86', class: "spinner__dnadot spinner__dnadot--10" })))), this.type === 'circle' && h("span", { key: '0caad855007af9134362e12c39be0fa79fc8f987', class: "spinner__spin" })), this.hasText && (h("div", { class: "spinner__text", key: "spinner-text" }, h("slot", { key: '724dce48bfb1f48c531138f67c39a1e8ea01ec79' }))), this.overlay && (h("div", { class: "spinner__overlay", key: "spinner-overlay" }))));
26
+ return (h(Host, { key: '650f22e1f076d786590389993562fb03d73b50d5', class: "nano-spinner" }, h("div", { key: '392afaac4ae23acdc247a7d4d5dea7166beaa6f4', class: "spinner", "aria-busy": "true", "aria-live": "polite" }, h("div", { key: '71699c822304d7bc40bc6510a373bd6da4905dc0', class: "spinner__loader" }, this.type === 'dna' && (h("div", { key: 'f3cf1be6056a3aacd9f08fb2ba20a0196a751912', class: "spinner__dna" }, h("div", { key: '9fbc4e80ce66f14751001ed7e9559e01649d1e7b', class: "spinner__dnatrack spinner__dnatrack--1" }, h("div", { key: '1242c2d9c928cf0e371133335ad05dc1e1426380', class: "spinner__dnadot spinner__dnadot--1" }), h("div", { key: '1dcfced70f0813796681ca5049fb50144d83e9ec', class: "spinner__dnadot spinner__dnadot--2" })), h("div", { key: 'cdb111d45ddbab07c9c0fed293bff499e306215e', class: "spinner__dnatrack spinner__dnatrack--2" }, h("div", { key: '326aa2074a4e16f7d6fddc41354672188c602f70', class: "spinner__dnadot spinner__dnadot--3" }), h("div", { key: 'd436ba81949ada55d5fe2356e663ba1b2f24f1fd', class: "spinner__dnadot spinner__dnadot--4" })), h("div", { key: 'ad2b9393afa3d2e9109fe7af696ab06001541344', class: "spinner__dnatrack spinner__dnatrack--3" }, h("div", { key: 'db18ff89bdfa702a733e817099ec03e550b7a967', class: "spinner__dnadot spinner__dnadot--5" }), h("div", { key: '812f51e0fdb34fae89c048fef6925feeed8e5d7f', class: "spinner__dnadot spinner__dnadot--6" })), h("div", { key: 'e53e41b6adc1fbf35ae07f7e0783b097d5a201db', class: "spinner__dnatrack spinner__dnatrack--4" }, h("div", { key: '0407e5a7234424094b1bc452a6f3bfe2c38ad7a7', class: "spinner__dnadot spinner__dnadot--7" }), h("div", { key: 'f9c9ee014b3cb7df2f6ca9e1f5ef6fc21a7b2c5c', class: "spinner__dnadot spinner__dnadot--8" })), h("div", { key: '3af97dda00e1ed9eaa738a2e0167f59916a69dbe', class: "spinner__dnatrack spinner__dnatrack--5" }, h("div", { key: '1f49f2d13828475a24dc318f3f28cca6973e01d5', class: "spinner__dnadot spinner__dnadot--9" }), h("div", { key: '5aee21e437ab1f35a35a1616e170ce1fed8d2811', class: "spinner__dnadot spinner__dnadot--10" })))), this.type === 'circle' && h("span", { key: '3e87f7a4aca4c55d750b6f01d14f83c8c9b232e8', class: "spinner__spin" })), this.hasText && (h("div", { class: "spinner__text", key: "spinner-text" }, h("slot", { key: '1e3e90c45121e16f4297ccf31d3809910d5721cf' }))), this.overlay && (h("div", { class: "spinner__overlay", key: "spinner-overlay" })))));
26
27
  }
27
28
  static get style() { return NanoSpinnerStyle0; }
28
29
  }, [1, "nano-spinner", {
@@ -1 +1 @@
1
- {"file":"spinner.js","mappings":";;;;;AAAA,MAAM,UAAU,GAAG,uiHAAuiH,CAAC;AAC3jH,0BAAe,UAAU;;MCiBZ,OAAO;;;;;;;IAET,OAAO,GAAY,KAAK,CAAC;;IAG1B,IAAI,GAAqB,QAAQ,CAAC;;IAGjB,OAAO,GAAY,KAAK,CAAC;IAElD,iBAAiB;QACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;KAC5C;IAED,MAAM;QACJ,QACE,4DAAK,KAAK,EAAC,SAAS,eAAW,MAAM,eAAW,QAAQ,IACtD,4DAAK,KAAK,EAAC,iBAAiB,IACzB,IAAI,CAAC,IAAI,KAAK,KAAK,KAClB,4DAAK,KAAK,EAAC,cAAc,IACvB,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,qCAAqC,GAAO,CACnD,CACF,CACP,EACA,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,6DAAM,KAAK,EAAC,eAAe,GAAQ,CAC1D,EACL,IAAI,CAAC,OAAO,KACX,WAAK,KAAK,EAAC,eAAe,EAAC,GAAG,EAAC,cAAc,IAC3C,8DAAQ,CACJ,CACP,EACA,IAAI,CAAC,OAAO,KACX,WAAK,KAAK,EAAC,kBAAkB,EAAC,GAAG,EAAC,iBAAiB,GAAO,CAC3D,CACG,EACN;KACH;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/spinner/spinner.scss?tag=nano-spinner&encapsulation=shadow","src/components/spinner/spinner.tsx"],"sourcesContent":["@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --base-color-rgb: default #{tokens.$progress-indicator-color-rgb}\n * @prop --indicator-color: default var(--nano-indicator-color, rgb(var(--base-color-rgb) / 10%));\n * @prop --track-color: default var(--nano-track-color, rgb(var(--base-color-rgb) / 20%));\n * @prop --spinner-scale: optional scaling of the spinner. default contextual font-size\n * @prop --overlay-color: #{tokens.$layer-overlay-light};\n */\n\n display: inline-block;\n\n // --spinner-scale: 5em;\n --base-color-rgb: #{tokens.$progress-indicator-color-rgb};\n --indicator-color:\n var(\n --nano-indicator-color,\n rgb(var(--base-color-rgb) / 100%)\n );\n --track-color: var(--nano-track-color, rgb(var(--base-color-rgb) / 20%));\n --overlay-color: #{tokens.$layer-overlay-light};\n}\n\n.spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n :host([overlay]:not([overlay='false'])) & {\n position: absolute;\n inset: 0;\n\n .spinner__loader,\n .spinner__text {\n z-index: 1;\n }\n }\n\n &__overlay {\n background: var(--overlay-color);\n position: absolute;\n inset: 0;\n z-index: 0;\n backdrop-filter: blur(#{tokens.$layer-overlay-blur});\n }\n\n &__loader {\n font-size: var(--spinner-scale, 1em);\n }\n\n &__spin {\n display: block;\n margin: auto;\n inline-size: 1em;\n block-size: 1em;\n border-radius: 50%;\n border: solid 0.1em var(--track-color);\n border-block-start-color: var(--indicator-color);\n border-inline-end-color: var(--indicator-color);\n border-inline-start-color: var(--indicator-color);\n animation: 1s linear infinite spin;\n }\n\n &__dna {\n font-size: 0.2286em;\n display: flex;\n }\n\n &__dnatrack {\n position: relative;\n padding-block: 0;\n padding-inline: 0.625em;\n block-size: 4.375em;\n inline-size: 0.625em;\n overflow: hidden;\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 1.875em;\n inset-inline-start: 50%;\n transform: translateX(-50%) translateZ(0);\n inline-size: 0.0625em;\n inline-size: #{'max(.0625em, 1px)'};\n block-size: 0.625em;\n background: var(--track-color);\n animation: flex 1.5s linear infinite;\n transform-origin: center center;\n }\n\n &--2::before {\n animation: flex 1.5s -1.3s linear infinite;\n }\n\n &--3::before {\n animation: flex 1.5s -1.1s linear infinite;\n }\n\n &--4::before {\n animation: flex 1.5s -0.9s linear infinite;\n }\n\n &--5::before {\n animation: flex 1.5s -0.75s linear infinite;\n }\n }\n\n &__dnadot {\n position: absolute;\n inline-size: 0.5em;\n block-size: 0.5em;\n border-radius: 50%;\n background: var(--indicator-color);\n animation: rotate 1.5s linear infinite;\n transform-origin: center center;\n inset-inline-start: 50%;\n transform: translateX(-50%) translateZ(0) translateY(0);\n\n &--2 {\n animation: rotate 1.5s -0.75s linear infinite;\n }\n\n &--3 {\n animation: rotate 1.5s -1.3s linear infinite;\n }\n\n &--4 {\n animation: rotate 1.5s -0.55s linear infinite;\n }\n\n &--5 {\n animation: rotate 1.5s -1.1s linear infinite;\n }\n\n &--6 {\n animation: rotate 1.5s -0.35s linear infinite;\n }\n\n &--7 {\n animation: rotate 1.5s -0.9s linear infinite;\n }\n\n &--8 {\n animation: rotate 1.5s -0.15s linear infinite;\n }\n\n &--9 {\n animation: rotate 1.5s -0.75s linear infinite;\n }\n\n &--10 {\n animation: rotate 1.5s 0s linear infinite;\n }\n }\n\n &__text {\n text-align: center;\n position: relative;\n margin-block-start: 0.5em;\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n\n @keyframes rotate {\n 0%,\n 100% {\n transform: translateX(-50%) translateY(0) scale(1);\n }\n\n 25% {\n transform: translateX(-50%) translateY(1.875em) scale(2);\n }\n\n 50% {\n transform: translateX(-50%) translateY(3.75em) scale(1);\n }\n\n 75% {\n transform: translateX(-50%) translateY(1.875em) scale(0.3);\n }\n }\n\n @keyframes flex {\n 0%,\n 100% {\n transform: translateX(-50%) scaleY(5);\n }\n\n 25% {\n transform: translateX(-50%) scaleY(1);\n }\n\n 50% {\n transform: translateX(-50%) scaleY(5);\n }\n\n 75% {\n transform: translateX(-50%) scaleY(1);\n }\n }\n}\n","import {\n Component,\n h,\n ComponentInterface,\n Prop,\n Element,\n State,\n} from '@stencil/core';\n\n/**\n * Spinners are used to show the progress of an indeterminate operation.\n * @slot - Used for loading messages\n */\n@Component({\n tag: 'nano-spinner',\n styleUrl: 'spinner.scss',\n shadow: true,\n})\nexport class Spinner implements ComponentInterface {\n @Element() el: HTMLNanoSpinnerElement;\n @State() hasText: boolean = false;\n\n /** The type of spinner animation */\n @Prop() type: 'dna' | 'circle' = 'circle';\n\n /** Displays absolutely with an overlay */\n @Prop({ reflect: true }) overlay: boolean = false;\n\n componentWillLoad() {\n this.hasText = !!this.el.childNodes.length;\n }\n\n render() {\n return (\n <div class=\"spinner\" aria-busy=\"true\" aria-live=\"polite\">\n <div class=\"spinner__loader\">\n {this.type === 'dna' && (\n <div class=\"spinner__dna\">\n <div class=\"spinner__dnatrack spinner__dnatrack--1\">\n <div class=\"spinner__dnadot spinner__dnadot--1\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--2\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--2\">\n <div class=\"spinner__dnadot spinner__dnadot--3\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--4\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--3\">\n <div class=\"spinner__dnadot spinner__dnadot--5\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--6\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--4\">\n <div class=\"spinner__dnadot spinner__dnadot--7\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--8\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--5\">\n <div class=\"spinner__dnadot spinner__dnadot--9\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--10\"></div>\n </div>\n </div>\n )}\n {this.type === 'circle' && <span class=\"spinner__spin\"></span>}\n </div>\n {this.hasText && (\n <div class=\"spinner__text\" key=\"spinner-text\">\n <slot />\n </div>\n )}\n {this.overlay && (\n <div class=\"spinner__overlay\" key=\"spinner-overlay\"></div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"spinner.js","mappings":";;;;;;AAAA,MAAM,UAAU,GAAG,uiHAAuiH,CAAC;AAC3jH,0BAAe,UAAU;;MCkBZ,OAAO;;;;;;;IAET,OAAO,GAAY,KAAK,CAAC;;IAG1B,IAAI,GAAqB,QAAQ,CAAC;;IAGjB,OAAO,GAAY,KAAK,CAAC;IAElD,iBAAiB;QACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;KAC5C;IAED,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,KAAK,EAAC,cAAc,IACxB,4DAAK,KAAK,EAAC,SAAS,eAAW,MAAM,eAAW,QAAQ,IACtD,4DAAK,KAAK,EAAC,iBAAiB,IACzB,IAAI,CAAC,IAAI,KAAK,KAAK,KAClB,4DAAK,KAAK,EAAC,cAAc,IACvB,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,4DAAK,KAAK,EAAC,wCAAwC,IACjD,4DAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,4DAAK,KAAK,EAAC,qCAAqC,GAAO,CACnD,CACF,CACP,EACA,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,6DAAM,KAAK,EAAC,eAAe,GAAQ,CAC1D,EACL,IAAI,CAAC,OAAO,KACX,WAAK,KAAK,EAAC,eAAe,EAAC,GAAG,EAAC,cAAc,IAC3C,8DAAQ,CACJ,CACP,EACA,IAAI,CAAC,OAAO,KACX,WAAK,KAAK,EAAC,kBAAkB,EAAC,GAAG,EAAC,iBAAiB,GAAO,CAC3D,CACG,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/spinner/spinner.scss?tag=nano-spinner&encapsulation=shadow","src/components/spinner/spinner.tsx"],"sourcesContent":["@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --base-color-rgb: default #{tokens.$progress-indicator-color-rgb}\n * @prop --indicator-color: default var(--nano-indicator-color, rgb(var(--base-color-rgb) / 10%));\n * @prop --track-color: default var(--nano-track-color, rgb(var(--base-color-rgb) / 20%));\n * @prop --spinner-scale: optional scaling of the spinner. default contextual font-size\n * @prop --overlay-color: #{tokens.$layer-overlay-light};\n */\n\n display: inline-block;\n\n // --spinner-scale: 5em;\n --base-color-rgb: #{tokens.$progress-indicator-color-rgb};\n --indicator-color:\n var(\n --nano-indicator-color,\n rgb(var(--base-color-rgb) / 100%)\n );\n --track-color: var(--nano-track-color, rgb(var(--base-color-rgb) / 20%));\n --overlay-color: #{tokens.$layer-overlay-light};\n}\n\n.spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n :host([overlay]:not([overlay='false'])) & {\n position: absolute;\n inset: 0;\n\n .spinner__loader,\n .spinner__text {\n z-index: 1;\n }\n }\n\n &__overlay {\n background: var(--overlay-color);\n position: absolute;\n inset: 0;\n z-index: 0;\n backdrop-filter: blur(#{tokens.$layer-overlay-blur});\n }\n\n &__loader {\n font-size: var(--spinner-scale, 1em);\n }\n\n &__spin {\n display: block;\n margin: auto;\n inline-size: 1em;\n block-size: 1em;\n border-radius: 50%;\n border: solid 0.1em var(--track-color);\n border-block-start-color: var(--indicator-color);\n border-inline-end-color: var(--indicator-color);\n border-inline-start-color: var(--indicator-color);\n animation: 1s linear infinite spin;\n }\n\n &__dna {\n font-size: 0.2286em;\n display: flex;\n }\n\n &__dnatrack {\n position: relative;\n padding-block: 0;\n padding-inline: 0.625em;\n block-size: 4.375em;\n inline-size: 0.625em;\n overflow: hidden;\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 1.875em;\n inset-inline-start: 50%;\n transform: translateX(-50%) translateZ(0);\n inline-size: 0.0625em;\n inline-size: #{'max(.0625em, 1px)'};\n block-size: 0.625em;\n background: var(--track-color);\n animation: flex 1.5s linear infinite;\n transform-origin: center center;\n }\n\n &--2::before {\n animation: flex 1.5s -1.3s linear infinite;\n }\n\n &--3::before {\n animation: flex 1.5s -1.1s linear infinite;\n }\n\n &--4::before {\n animation: flex 1.5s -0.9s linear infinite;\n }\n\n &--5::before {\n animation: flex 1.5s -0.75s linear infinite;\n }\n }\n\n &__dnadot {\n position: absolute;\n inline-size: 0.5em;\n block-size: 0.5em;\n border-radius: 50%;\n background: var(--indicator-color);\n animation: rotate 1.5s linear infinite;\n transform-origin: center center;\n inset-inline-start: 50%;\n transform: translateX(-50%) translateZ(0) translateY(0);\n\n &--2 {\n animation: rotate 1.5s -0.75s linear infinite;\n }\n\n &--3 {\n animation: rotate 1.5s -1.3s linear infinite;\n }\n\n &--4 {\n animation: rotate 1.5s -0.55s linear infinite;\n }\n\n &--5 {\n animation: rotate 1.5s -1.1s linear infinite;\n }\n\n &--6 {\n animation: rotate 1.5s -0.35s linear infinite;\n }\n\n &--7 {\n animation: rotate 1.5s -0.9s linear infinite;\n }\n\n &--8 {\n animation: rotate 1.5s -0.15s linear infinite;\n }\n\n &--9 {\n animation: rotate 1.5s -0.75s linear infinite;\n }\n\n &--10 {\n animation: rotate 1.5s 0s linear infinite;\n }\n }\n\n &__text {\n text-align: center;\n position: relative;\n margin-block-start: 0.5em;\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n\n @keyframes rotate {\n 0%,\n 100% {\n transform: translateX(-50%) translateY(0) scale(1);\n }\n\n 25% {\n transform: translateX(-50%) translateY(1.875em) scale(2);\n }\n\n 50% {\n transform: translateX(-50%) translateY(3.75em) scale(1);\n }\n\n 75% {\n transform: translateX(-50%) translateY(1.875em) scale(0.3);\n }\n }\n\n @keyframes flex {\n 0%,\n 100% {\n transform: translateX(-50%) scaleY(5);\n }\n\n 25% {\n transform: translateX(-50%) scaleY(1);\n }\n\n 50% {\n transform: translateX(-50%) scaleY(5);\n }\n\n 75% {\n transform: translateX(-50%) scaleY(1);\n }\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n State,\n Host,\n} from '@stencil/core';\nimport { h } from '../../utils/renderer';\n\n/**\n * Spinners are used to show the progress of an indeterminate operation.\n * @slot - Used for loading messages\n */\n@Component({\n tag: 'nano-spinner',\n styleUrl: 'spinner.scss',\n shadow: true,\n})\nexport class Spinner implements ComponentInterface {\n @Element() el: HTMLNanoSpinnerElement;\n @State() hasText: boolean = false;\n\n /** The type of spinner animation */\n @Prop() type: 'dna' | 'circle' = 'circle';\n\n /** Displays absolutely with an overlay */\n @Prop({ reflect: true }) overlay: boolean = false;\n\n componentWillLoad() {\n this.hasText = !!this.el.childNodes.length;\n }\n\n render() {\n return (\n <Host class=\"nano-spinner\">\n <div class=\"spinner\" aria-busy=\"true\" aria-live=\"polite\">\n <div class=\"spinner__loader\">\n {this.type === 'dna' && (\n <div class=\"spinner__dna\">\n <div class=\"spinner__dnatrack spinner__dnatrack--1\">\n <div class=\"spinner__dnadot spinner__dnadot--1\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--2\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--2\">\n <div class=\"spinner__dnadot spinner__dnadot--3\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--4\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--3\">\n <div class=\"spinner__dnadot spinner__dnadot--5\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--6\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--4\">\n <div class=\"spinner__dnadot spinner__dnadot--7\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--8\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--5\">\n <div class=\"spinner__dnadot spinner__dnadot--9\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--10\"></div>\n </div>\n </div>\n )}\n {this.type === 'circle' && <span class=\"spinner__spin\"></span>}\n </div>\n {this.hasText && (\n <div class=\"spinner__text\" key=\"spinner-text\">\n <slot />\n </div>\n )}\n {this.overlay && (\n <div class=\"spinner__overlay\" key=\"spinner-overlay\"></div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,10 +1,11 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
4
+ import { proxyCustomElement, HTMLElement, createEvent, Host } from '@stencil/core/internal/client';
5
5
  import { a as getOffset } from './dom.js';
6
6
  import { d as debounce } from './throttle.js';
7
7
  import { f as findScrollParent } from './scroll-parent.js';
8
+ import { t as transformTag, h } from './renderer.js';
8
9
 
9
10
  const stickerCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--stuck-left:initial;--stuck-right:initial;--stuck-z-index:var(--nano-layer-index-menubar, 10);--top-hide:translateY(-110%);--bottom-hide:translateY(110%);display:block;max-inline-size:100%}:host([sticky]){position:sticky;transition:0.3s ease transform;will-change:min-block-size}:host([sticky][stuck]){inset-inline:var(--stuck-left) var(--stuck-right);z-index:var(--stuck-z-index) !important}:host([sticky][hide][placed-top]){transform:var(--top-hide)}:host([sticky][hide][placed-bottom]){transform:var(--bottom-hide)}:host([sticky][index=\"1\"]){z-index:calc(var(--stuck-z-index) + 1)}:host([sticky][index=\"2\"]){z-index:calc(var(--stuck-z-index) + 2)}:host([sticky][index=\"3\"]){z-index:calc(var(--stuck-z-index) + 3)}:host([sticky][index=\"4\"]){z-index:calc(var(--stuck-z-index) + 4)}:host([sticky][index=\"5\"]){z-index:calc(var(--stuck-z-index) + 5)}.sticker{display:inherit;max-inline-size:inherit;inline-size:100%}.sticker:not(.stuck){inline-size:auto !important}.sticker.sticky{transition:0.3s ease all;position:relative}:host([index=\"1\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 1)}:host([index=\"2\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 2)}:host([index=\"3\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 3)}:host([index=\"4\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 4)}:host([index=\"5\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 5)}.sticker.stuck{position:fixed;inset-inline:var(--stuck-left) var(--stuck-right);z-index:var(--stuck-z-index);transform:translateY(0)}:host([placed-top]) .sticker.stuck{inset-block-start:0}:host([placed-bottom]) .sticker.stuck{inset-block-end:0}:host([placed-top]) .sticker.stuck.hide{transform:var(--top-hide)}:host([placed-bottom]) .sticker.stuck.hide{transform:var(--bottom-hide)}.sticker-content{display:flex;flex-wrap:wrap}";
10
11
  const NanoStickerStyle0 = stickerCss;
@@ -568,7 +569,7 @@ const Sticker = /*@__PURE__*/ proxyCustomElement(class Sticker extends HTMLEleme
568
569
  this.quietModeChange();
569
570
  this.listenForScrollParent = true;
570
571
  this.handleParentEvents(true);
571
- this.stickerIndex = Array.from(this.scrollParent.querySelectorAll('nano-sticker'))
572
+ this.stickerIndex = Array.from(this.scrollParent.querySelectorAll(transformTag('nano-sticker')))
572
573
  .filter((sticker) => sticker.position === this.position)
573
574
  .findIndex((sticker) => sticker === this.host);
574
575
  this.setOffset();
@@ -610,12 +611,12 @@ const Sticker = /*@__PURE__*/ proxyCustomElement(class Sticker extends HTMLEleme
610
611
  this.hasBootstrapped = false;
611
612
  }
612
613
  render() {
613
- return (h(Host, { key: '8446391b0510c305f2bead6865154636c329ab9f', sticky: !this.isRootSticker && !this.stickToEle && this.isSticky, hide: this.hide && this.isStuck, siblings: this.stuckCounter, index: this.stickerIndex, stuck: this.isStuck && this.isSticky, "placed-bottom": this.positions.includes('bottom'), "placed-top": this.positions.includes('top'), "placed-end": this.positions.includes('end'), "placed-start": this.positions.includes('start') }, h("div", { key: '2465296095699dd336a3f0af5663e61b151807eb', class: {
614
+ return (h(Host, { key: 'b282e10cddb66120a13fcade77d1f2b554a20579', sticky: !this.isRootSticker && !this.stickToEle && this.isSticky, hide: this.hide && this.isStuck, siblings: this.stuckCounter, index: this.stickerIndex, stuck: this.isStuck && this.isSticky, "placed-bottom": this.positions.includes('bottom'), "placed-top": this.positions.includes('top'), "placed-end": this.positions.includes('end'), "placed-start": this.positions.includes('start'), class: "nano-sticker" }, h("div", { key: '33b8b8a569e522809bc9dd8efba10282728117a8', class: {
614
615
  sticker: true,
615
616
  sticky: this.isRootSticker && this.isSticky,
616
617
  stuck: this.isStuck && this.isRootSticker && this.isSticky,
617
618
  hide: this.isRootSticker && this.hide && this.isStuck,
618
- }, ref: (div) => (this.sticker = div) }, h("div", { key: '351a73899ac20bb834f9610d4210c4860b3db836', class: "sticker-content", ref: (div) => (this.content = div) }, h("slot", { key: 'eacb03d1f9e5637b352bb28b80f60d50bf3b5ac1' })))));
619
+ }, ref: (div) => (this.sticker = div) }, h("div", { key: 'bc0584d28222ecaa8c362817ef3a71f618fe4796', class: "sticker-content", ref: (div) => (this.content = div) }, h("slot", { key: '12f6f6dca5d58ccdc446aee97cd5bee39f3c322e' })))));
619
620
  }
620
621
  static get watchers() { return {
621
622
  "trigger": ["updateTriggerOffset"],
@@ -1 +1 @@
1
- {"file":"sticker.js","mappings":"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","names":[],"sources":["src/components/sticker/sticker.scss?tag=nano-sticker&encapsulation=shadow","src/components/sticker/sticker.tsx"],"sourcesContent":["@use '../../global/style/nano-theme/tokens/layers';\n\n:host {\n /**\n * @prop --stuck-left: The left position when your sticker is stuck. This can be useful to force your sticker to fill the viewport for example. Defaults to initial\n * @prop --stuck-right: The right position when your sticker is stuck. This can be useful to force your sticker to fill the viewport for example. Defaults to initial\n * @prop --stuck-z-index: The z-index order to display your sticker. Can be useful when displaying multiple stickers simultaneously. Defaults to #{layers.$layer-index-menubar};\n * @prop --top-hide: This is used for the hide transform animation (e.g. when quiet-mode is on). Defaults to translateY(-110%);\n * @prop --bottom-hide: This is used for the hide transform animation (e.g. when quiet-mode is on). Defaults to translateY(110%);\n */\n\n --stuck-left: initial;\n --stuck-right: initial;\n --stuck-z-index: #{layers.$layer-index-menubar};\n --top-hide: translateY(-110%);\n --bottom-hide: translateY(110%);\n\n display: block;\n max-inline-size: 100%;\n}\n\n:host([sticky]) {\n position: sticky;\n transition: 0.3s ease transform;\n will-change: min-block-size;\n}\n\n:host([sticky][stuck]) {\n inset-inline: var(--stuck-left) var(--stuck-right);\n z-index: var(--stuck-z-index) !important;\n}\n\n:host([sticky][hide][placed-top]) {\n transform: var(--top-hide);\n}\n\n:host([sticky][hide][placed-bottom]) {\n transform: var(--bottom-hide);\n}\n\n:host([sticky][index='1']) {\n z-index: calc(var(--stuck-z-index) + 1);\n}\n\n:host([sticky][index='2']) {\n z-index: calc(var(--stuck-z-index) + 2);\n}\n\n:host([sticky][index='3']) {\n z-index: calc(var(--stuck-z-index) + 3);\n}\n\n:host([sticky][index='4']) {\n z-index: calc(var(--stuck-z-index) + 4);\n}\n\n:host([sticky][index='5']) {\n z-index: calc(var(--stuck-z-index) + 5);\n}\n\n.sticker {\n display: inherit;\n max-inline-size: inherit;\n inline-size: 100%;\n\n &:not(.stuck) {\n inline-size: auto !important;\n }\n\n &.sticky {\n transition: 0.3s ease all;\n position: relative;\n\n :host([index='1']) & {\n z-index: calc(var(--stuck-z-index) + 1);\n }\n\n :host([index='2']) & {\n z-index: calc(var(--stuck-z-index) + 2);\n }\n\n :host([index='3']) & {\n z-index: calc(var(--stuck-z-index) + 3);\n }\n\n :host([index='4']) & {\n z-index: calc(var(--stuck-z-index) + 4);\n }\n\n :host([index='5']) & {\n z-index: calc(var(--stuck-z-index) + 5);\n }\n }\n\n &.stuck {\n position: fixed;\n inset-inline: var(--stuck-left) var(--stuck-right);\n z-index: var(--stuck-z-index);\n transform: translateY(0);\n\n :host([placed-top]) & {\n inset-block-start: 0;\n }\n\n :host([placed-bottom]) & {\n inset-block-end: 0;\n }\n\n &.hide {\n :host([placed-top]) & {\n transform: var(--top-hide);\n }\n\n :host([placed-bottom]) & {\n transform: var(--bottom-hide);\n }\n }\n }\n}\n\n.sticker-content {\n display: flex;\n flex-wrap: wrap;\n}\n","import {\n Component,\n ComponentInterface,\n h,\n Host,\n Prop,\n State,\n Watch,\n Element,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { getOffset } from '../../utils/dom';\nimport { debounce } from '../../utils/throttle';\nimport { findScrollParent } from '../../utils/scroll-parent';\n\nfunction _getScrollTop(ele: HTMLElement | Document) {\n return ele instanceof Document ? window.pageYOffset : ele.scrollTop;\n}\n\nfunction _getOffset(ele: HTMLElement, parent: HTMLElement | Document) {\n const parentEle =\n parent instanceof Document ? document.documentElement : parent;\n return getOffset(ele, parentEle);\n}\n\ntype Positions = 'top' | 'bottom' | 'start' | 'end';\n\n/**\n * The Sticker component is a toolbox for 'sticking' items to scrolling containers.\n *\n */\n@Component({\n tag: 'nano-sticker',\n styleUrl: 'sticker.scss',\n shadow: true,\n})\nexport class Sticker implements ComponentInterface {\n private isRtl: boolean = false;\n private io: IntersectionObserver;\n private contentSizeObserver: ResizeObserver;\n private parentSizeObserver: ResizeObserver;\n private sticker: HTMLDivElement;\n private content: HTMLDivElement;\n private scrollPosCache = 0;\n private scrollPosThresholdCache = 0;\n private cacheOffset: number | { v: number; h: number } = 0;\n private slottedContent: Element[];\n private pauseResizeWatcher = false;\n private listenForScrollParent = false;\n private stickToEleInitSize?: DOMRect;\n private positions: Positions[] = [];\n private pauseHide: boolean = false;\n private hasBootstrapped = false;\n\n @Element() host: HTMLNanoStickerElement;\n\n // Internal State\n\n @State() isStuck = false;\n @State() isRootSticker = true;\n @State() hide = false;\n @State() scrollHide = false;\n @State() multiStickerHide = false;\n @State() scrollingTo = false;\n @State() quietModeIsOn = false;\n @State() stuckCounter = 0;\n @State() stickerIndex = 0;\n @State() stickToEle?: HTMLNanoStickerElement;\n @State() triggerPos: { top: number; left: number };\n @State() trigger: HTMLDivElement;\n @State() _offset: number | { v: number; h: number } = 0;\n\n // Public API\n\n /** Only applicable to root stickers. When applied the sticker will grow or shrink to the scrollParent size */\n @Prop() autoResize = true;\n\n /** Manually enable / disabled sticky behaviour */\n @Prop({ mutable: true }) isSticky = true;\n\n /** Distance the item should be stuck from the sticky edge. */\n @Prop({ mutable: true }) offset: number | { v: number; h: number } = 0;\n\n /** The edge of the scroll-parent to stick to */\n @Prop() position: 'top' | 'bottom' = 'top';\n // other opts I'd like one day. 'start' | 'end' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'\n\n /** When applied, the sticker will hide when the scroll-parent\n * is scrolling away from the sticker's stuck position and show when scrolling toward it.\n * By default this will apply when the parent is below either the h or w dimensions */\n @Prop() quietMode: 'on' | 'off' | { h: number; w: number } = {\n h: 600,\n w: 600,\n };\n\n /** When applied stickers will hide upon new stickers being stuck to the same position */\n @Prop() hideOnNewStickers = true;\n\n /** The max width of the item to implement sticky behaviour. */\n @Prop() breakPointMax: null | number = null;\n\n /** The min width of the item to implement sticky behaviour. */\n @Prop() breakPointMin: null | number = null;\n\n /** Define which scroll element to listen & stick to.\n * By default, it will find traverse the DOM to find the closest. */\n @Prop({ mutable: true }) scrollParent?: HTMLElement | Document;\n\n /** Upon being stuck, attach the sticker to another sticker element.\n * JS query selector string or DOM element pointing to a `<nano-sticker>` */\n @Prop() stickTo: string | HTMLNanoStickerElement;\n\n // Broadcasted Events\n\n /** Emitted when a sticker is stuck */\n @Event() nanoStuck!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n /** Emitted when a sticker is unstuck */\n @Event() nanoUnstuck!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n /** Emitted when a sticker is hidden */\n @Event() nanoHide!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n /** Emitted when a sticker is showing */\n @Event() nanoShow!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n // Public methods\n\n /**\n * Method to return the visibility status of the sticker\n * @returns boolean\n */\n @Method()\n async isHiding() {\n return this.hide;\n }\n\n /**\n * Method to return the stuck status of the sticker\n * @returns boolean\n */\n @Method()\n async isSticking() {\n this.shouldStick();\n return this.isStuck;\n }\n\n /**\n * @internal\n * @param offset\n * @returns the trigger position\n */\n @Method()\n async setTriggerPos(offset: number | { v: number; h: number }) {\n return (this._offset = offset);\n }\n\n /**\n * @internal\n * @returns the trigger position\n */\n @Method()\n async getTriggerPos() {\n return this.triggerPos;\n }\n\n /**\n * @internal\n * @param pause\n */\n @Method()\n async pauseHiding(pause: boolean) {\n this.pauseHide = pause;\n }\n\n // Watchers\n\n /** Keep a note of trigger position. Need this to track sticker order in the DOM */\n @Watch('trigger')\n @Watch('scrollParent')\n updateTriggerOffset() {\n if (!this.trigger || !this.scrollParent || !this.listenForScrollParent)\n return;\n this.triggerPos = _getOffset(this.trigger, this.scrollParent);\n }\n\n /** A root sticker is a fixed element Or this sticker is sticking to another.\n * We need a content resize watcher to make sure we maintain a correct placeholder size in the body */\n @Watch('position')\n stickerResizeListener() {\n if (!this.content || !window['ResizeObserver']) return;\n\n if (this.contentSizeObserver) {\n this.contentSizeObserver.disconnect();\n this.contentSizeObserver = undefined;\n }\n\n this.contentSizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (this.pauseResizeWatcher) return;\n\n if (entry.contentRect.height) {\n if (this.position === 'top')\n this.host.style.height = entry.contentRect.height + 'px';\n if (this.position === 'bottom')\n this.host.style.minHeight = entry.contentRect.height + 'px';\n }\n }\n });\n this.contentSizeObserver.observe(this.content);\n }\n\n @Watch('quietMode')\n quietModeChange() {\n if (this.quietMode === 'on')\n requestAnimationFrame(() => (this.quietModeIsOn = true));\n else if (this.quietMode === 'off')\n requestAnimationFrame(() => (this.quietModeIsOn = false));\n }\n\n /** offset is part of the public API but we also use it to manipulate trigger points */\n @Watch('offset')\n @Watch('_offset')\n setOffset() {\n if (this.trigger) this.trigger.setAttribute('style', '');\n let v: number, h: number, _v: number, _h: number;\n const sticker: HTMLElement =\n this.isRootSticker || this.stickToEle ? this.sticker : this.host;\n\n if (!sticker) return;\n\n if (typeof this.offset === 'object') ({ v, h } = this.offset);\n else v = h = this.offset;\n\n if (typeof this._offset === 'object') ({ v = _v, h = _h } = this._offset);\n else _v = _h = this._offset;\n\n const setPos = (pos: 'top' | 'bottom' | 'left' | 'right') => {\n const u = pos.match(/(top|bottom)/) ? v : h;\n setTriggetPos(pos);\n sticker.style[pos] = u + 'px';\n if (u)\n this.host.style.setProperty(\n '--hide-transform-amount',\n `(110% + ${u}px)`\n );\n else this.host.style.setProperty('--hide-transform-amount', null);\n };\n\n const setTriggetPos = (pos: 'top' | 'bottom' | 'left' | 'right') => {\n const u = pos.match(/(top|bottom)/) ? v + _v : h + _h;\n this.trigger.style[pos] = u * -1 + 'px';\n this.trigger.style.position = 'relative';\n this.trigger.style.minHeight = '1px';\n this.trigger.style.maxHeight = '1px';\n this.trigger.style.overflow = 'hidden';\n };\n\n if (\n (this.positions.includes('start') && this.isRtl) ||\n (this.positions.includes('end') && !this.isRtl)\n )\n setPos('right');\n\n if (\n (this.positions.includes('end') && this.isRtl) ||\n (this.positions.includes('start') && !this.isRtl)\n )\n setPos('left');\n\n if (this.positions.includes('top')) setPos('top');\n if (this.positions.includes('bottom')) setPos('bottom');\n }\n\n @Watch('position')\n positionChange() {\n this.positions = this.position.split('-') as Positions[];\n this.setOffset();\n }\n\n /** If this sticker is attached to a 'master' sticker (stickToEle),\n * here we move the content of this sticker in and out accordingly */\n @Watch('isStuck')\n async stuckChange() {\n if (this.isStuck) {\n if (this.stickToEle) {\n const content = this.host.children;\n this.slottedContent = Array.from(content);\n\n this.slottedContent.forEach((child: HTMLElement) => {\n this.stickToEle.appendChild(child);\n child.style.order = this.stickerIndex + '';\n });\n\n this.nanoStuck.emit({ sticker: this.stickToEle });\n } else this.nanoStuck.emit({ sticker: this.host });\n } else {\n this.scrollHide = false;\n\n if (this.stickToEle) {\n this.slottedContent.forEach((child: HTMLElement) => {\n this.host.appendChild(child);\n child.style.order = '';\n });\n this.nanoUnstuck.emit({ sticker: this.stickToEle });\n } else this.nanoUnstuck.emit({ sticker: this.host });\n }\n }\n\n /** attach scroll listener. 'hides' stickers when scrolling away from trigger and 'shows' when scrolling toward */\n @Watch('quietModeIsOn')\n attachScrollListeners() {\n if (this.quietModeIsOn)\n this.scrollParent.addEventListener('scroll', this.onScroll, {\n passive: true,\n capture: false,\n });\n else if (this.scrollParent) {\n this.scrollParent.removeEventListener('scroll', this.onScroll);\n this.moveTrigger(true);\n }\n }\n\n /** Add / remove parent scrolling listeners. If there's stickToEle we need to remove them */\n @Watch('scrollParent')\n @Watch('stickToEle')\n handleParentEvents(_, oldParent: null | HTMLElement = null) {\n if (!this.listenForScrollParent) return;\n if (oldParent) this.manageListenersOnParent(false, oldParent);\n if (this.scrollParent) this.manageListenersOnParent(!this.stickToEle);\n }\n\n /** Add remove specific listeners if we're sticking to a sticker.\n * We need to adjust triggers according to the status of the 'master' */\n @Watch('stickToEle')\n stickToEleChange(_, oldEle: null | HTMLNanoStickerElement) {\n if (this.stickToEle) {\n this.stickToEle.addEventListener('nanoHide', this.onStickToDisplayEvent);\n this.stickToEle.addEventListener('nanoShow', this.onStickToDisplayEvent);\n this.stickToEle.addEventListener('nanoStuck', this.onStickToDisplayEvent);\n this.stickToEle.addEventListener(\n 'nanoUnstuck',\n this.onStickToDisplayEvent\n );\n }\n if (oldEle) {\n oldEle.removeEventListener('nanoHide', this.onStickToDisplayEvent);\n oldEle.removeEventListener('nanoShow', this.onStickToDisplayEvent);\n oldEle.removeEventListener('nanoStuck', this.onStickToDisplayEvent);\n oldEle.removeEventListener('nanoUnstuck', this.onStickToDisplayEvent);\n }\n }\n\n /** Find and set the stickToEle from the public, selector string */\n @Watch('stickTo')\n stickToChange() {\n if (typeof this.stickTo === 'string')\n this.stickToEle = this.scrollParent.querySelector(this.stickTo);\n else if (this.stickTo) this.stickToEle = this.stickTo;\n else this.stickToEle = undefined;\n }\n\n /** 2 potential criteria for hiding. Multi-stickers or quiet mode. */\n @Watch('multiStickerHide')\n @Watch('scrollHide')\n visibilityDecisionHandler() {\n if (this.multiStickerHide || this.scrollHide) this.hide = true;\n else this.hide = false;\n }\n\n @Watch('hide')\n handleHideChange() {\n if (this.hide) this.nanoHide.emit({ sticker: this.host });\n else this.nanoShow.emit({ sticker: this.host });\n }\n\n @Watch('scrollParent')\n setupIO() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n if (!this.scrollParent || !this.hasBootstrapped || !this.trigger) return;\n\n this.isRootSticker = this.scrollParent instanceof Document;\n let root = this.scrollParent;\n if (this.scrollParent instanceof Document) root = null;\n\n this.io = new window.IntersectionObserver(\n (_) => {\n if (this.pauseResizeWatcher || !this.isSticky) return;\n this.shouldStick(_.slice(-1)[0]);\n },\n { root: root as HTMLElement }\n );\n\n this.io.observe(this.trigger);\n }\n\n // Private methods / handlers\n\n /** Assesses the public API quitemode and works out if it should be applied atm.\n * If 'small screen', or there is a breakpointmax / min it will add a resizeobserver to conditionally add behaviour */\n private setupParentResizeListener = () => {\n if (!window['ResizeObserver']) return;\n\n if (this.parentSizeObserver) {\n this.parentSizeObserver.disconnect();\n this.parentSizeObserver = undefined;\n }\n\n this.parentSizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n let height: number, width: number;\n if (entry.contentRect.height) height = entry.contentRect.height;\n if (entry.contentRect.width) width = entry.contentRect.width;\n\n if (typeof this.quietMode === 'object') {\n if (width < this.quietMode.w || height < this.quietMode.h)\n this.quietModeIsOn = true;\n else this.quietModeIsOn = false;\n }\n\n if (this.breakPointMin) {\n if (width > this.breakPointMin) this.isSticky = true;\n else this.isSticky = false;\n }\n\n if (this.breakPointMax) {\n if (width < this.breakPointMax) this.isSticky = true;\n else this.isSticky = false;\n }\n\n if (this.isRootSticker && this.sticker && this.autoResize)\n this.sticker.style.width = this.host.scrollWidth + 'px';\n }\n });\n\n const toWatch =\n this.scrollParent instanceof Document\n ? this.scrollParent.documentElement\n : this.scrollParent;\n if (toWatch) this.parentSizeObserver.observe(toWatch);\n };\n\n /** For stickTo stickers. We listen to the events from the 'master' sticker to amend the hide/show trigger\n * Main diffs from root-stickers / non is height being on 'master' */\n private onStickToDisplayEvent = (\n e: CustomEvent<{ sticker: HTMLNanoStickerElement }>\n ) => {\n if (e.detail.sticker !== this.stickToEle) return;\n\n switch (e.type) {\n case 'nanoHide':\n this._offset = 0;\n this.cacheOffset = this.offset;\n this.offset = 0;\n /** trigger moves down, underneath sticker if the main sticker hides */\n if (!this.isStuck) this.moveTrigger(false);\n\n /** If it's an actual 'position: sticky' element, we need to give the sticker an appropriate height.\n * This minimises content jumping around as items are added */\n if (!this.isRootSticker && this.quietModeIsOn) {\n requestAnimationFrame(() => {\n this.stickToEle.style.minHeight =\n this.stickToEleInitSize.height +\n (this.host.scrollHeight +\n (typeof this.cacheOffset === 'object'\n ? this.cacheOffset.v\n : this.cacheOffset)) +\n 'px';\n this.stickToEle.setTriggerPos(this.stickToEleInitSize.height * -1);\n });\n }\n break;\n case 'nanoShow':\n this._offset = this.stickToEleInitSize.height;\n this.offset = this.cacheOffset;\n this.moveTrigger(true);\n\n /** reset master sticker size */\n if (!this.isRootSticker && this.quietModeIsOn) {\n requestAnimationFrame(() => {\n this.stickToEle.style.minHeight = '';\n this.stickToEle.setTriggerPos(0);\n });\n }\n break;\n case 'nanoStuck':\n this.stickToEleInitSize = this.stickToEle.getBoundingClientRect();\n this._offset = this.stickToEleInitSize.height;\n break;\n }\n };\n\n /** Add or removes event listeners / observers on scrolling parent\n * for when the scrolling parent changes, or, this sticker is sticking to another */\n private manageListenersOnParent(\n addEvents: boolean,\n ele?: HTMLElement | Document\n ) {\n const scrollParent = ele || this.scrollParent;\n\n if (!scrollParent) return;\n\n if (!addEvents) {\n try {\n if (this.quietModeIsOn)\n scrollParent.removeEventListener('scroll', this.onScroll);\n scrollParent.removeEventListener('nanoStuck', this.onStickEvent);\n scrollParent.removeEventListener('nanoUnstuck', this.onStickEvent);\n } catch (_e) {\n console.error('Events haven`t been added');\n }\n } else {\n scrollParent.addEventListener('nanoStuck', this.onStickEvent);\n scrollParent.addEventListener('nanoUnstuck', this.onStickEvent);\n\n if (this.quietModeIsOn) this.attachScrollListeners();\n }\n this.setupParentResizeListener();\n }\n\n /** Handler applied to scrolling parent. When 'hideOnNewStickers' is true, hide this sticker on subsequent stuck stickers. */\n private onStickEvent = async (\n e: CustomEvent<{ sticker: HTMLNanoStickerElement }>\n ) => {\n const sticker = e.detail ? e.detail.sticker : null;\n if (!sticker || sticker.position !== this.position) return;\n\n const incomingTriggerPos = await sticker.getTriggerPos();\n\n if (\n e.type === 'nanoStuck' &&\n sticker !== this.host &&\n sticker.scrollParent === this.host.scrollParent\n ) {\n this.stickerIndex++;\n\n if (!this.hideOnNewStickers) return;\n\n if (\n (this.positions.includes('top') &&\n this.triggerPos.top < incomingTriggerPos.top) ||\n (this.positions.includes('bottom') &&\n this.triggerPos.top > incomingTriggerPos.top)\n ) {\n this.multiStickerHide = true;\n this.stuckCounter++;\n }\n }\n\n if (\n e.type === 'nanoUnstuck' &&\n sticker !== this.host &&\n sticker.scrollParent === this.host.scrollParent\n ) {\n this.stickerIndex--;\n\n if (!this.hideOnNewStickers) return;\n\n if (\n (this.positions.includes('top') &&\n this.triggerPos.top < incomingTriggerPos.top) ||\n (this.positions.includes('bottom') &&\n this.triggerPos.top > incomingTriggerPos.top)\n ) {\n this.stuckCounter--;\n if (this.stuckCounter < 1) this.multiStickerHide = false;\n }\n }\n };\n\n /** Scroll handler applied to scrolling parent. Only applied when quietmode is on.\n * 'hides' stickers when scrolling over 100px away from trigger and 'shows' when scrolling toward */\n private onScroll = () => {\n const y: number = _getScrollTop(this.scrollParent);\n\n // scrolling up\n if (y < this.scrollPosCache) {\n if (!this.positions.includes('bottom')) this.handleScrollTo();\n else this.handleScrollAway(y);\n }\n\n // scrolling down\n if (y > this.scrollPosCache) {\n if (!this.positions.includes('bottom')) this.handleScrollAway(y);\n else this.handleScrollTo();\n }\n this.scrollPosCache = y;\n };\n\n /** Watch for scroll direction. Only applies when quietmode is on.\n * We need to addjust the position of the trigger when the sticker is hidden */\n private handleScrollTo() {\n this.scrollPosThresholdCache = null;\n if (!this.scrollHide) return;\n\n if (this.scrollingTo !== true) {\n this._offset = this.cacheOffset || this._offset;\n }\n this.scrollingTo = true;\n this.scrollHide = false;\n }\n\n private handleScrollAway(currScroll: number) {\n if (this.scrollHide) return;\n\n if (!this.isStuck) return;\n\n if (this.scrollingTo !== false) {\n this.cacheOffset = this._offset;\n this._offset = 0;\n }\n this.scrollingTo = false;\n\n if (!this.scrollPosThresholdCache)\n this.scrollPosThresholdCache = currScroll;\n else if (\n !this.pauseHide &&\n Math.abs(currScroll - this.scrollPosThresholdCache) > 100\n )\n this.scrollHide = true;\n }\n\n private moveTrigger(toInitial?: boolean) {\n if (\n (this.positions.includes('bottom') && !toInitial) ||\n (!this.positions.includes('bottom') && toInitial)\n ) {\n this.host.parentNode.insertBefore(this.trigger, this.host);\n } else\n this.host.parentNode.insertBefore(this.trigger, this.host.nextSibling);\n }\n\n private shouldStick(data?: IntersectionObserverEntry) {\n let scrollAmt: number;\n\n if (this.positions.includes('top')) {\n if (!this.isRootSticker) {\n scrollAmt = _getOffset(this.trigger, this.scrollParent).top;\n } else {\n scrollAmt = this.trigger.getBoundingClientRect().top;\n }\n this.isStuck = scrollAmt < -1;\n } else if (this.positions.includes('bottom')) {\n scrollAmt = this.trigger.getBoundingClientRect().top;\n const parentBounding =\n data && data.rootBounds\n ? data.rootBounds\n : (this.scrollParent instanceof Document\n ? document.documentElement\n : this.scrollParent\n ).getBoundingClientRect();\n this.isStuck =\n !data.isIntersecting ||\n scrollAmt > parentBounding.height + parentBounding.top;\n }\n }\n\n private bootstrapGurantor() {\n this.hasBootstrapped = true;\n\n const scrollParent = this.scrollParent || findScrollParent(this.host);\n this.scrollParent =\n scrollParent === document.documentElement ? document : scrollParent;\n this.isRootSticker = this.scrollParent instanceof Document;\n\n this.trigger = this.trigger || document.createElement('div');\n this.trigger.innerHTML = '&nbsp;';\n this.trigger.classList.add('sticker-trigger');\n\n this.positionChange();\n this.moveTrigger(true);\n this.quietModeChange();\n\n this.listenForScrollParent = true;\n this.handleParentEvents(true);\n\n this.stickerIndex = Array.from(\n this.scrollParent.querySelectorAll('nano-sticker')\n )\n .filter(\n (sticker: HTMLNanoStickerElement) => sticker.position === this.position\n )\n .findIndex((sticker) => sticker === this.host);\n\n this.setOffset();\n this.stickerResizeListener();\n this.setupParentResizeListener();\n\n // bit of a hack ... add default 'order'. Required for 'stickTo' elements.\n this.slottedContent = Array.from(this.host.children);\n this.slottedContent.forEach((child: HTMLElement) => {\n child.style.order = this.stickerIndex + '';\n });\n\n this.updateTriggerOffset();\n this.stickToChange();\n this.setupIO();\n this.onStickToDisplayEvent = debounce(this.onStickToDisplayEvent, 50);\n }\n\n // Stencil methods\n\n connectedCallback() {\n this.isRtl =\n this.host.dir === 'rtl' || this.host.ownerDocument.dir === 'rtl';\n\n // this is all horrible.... shrug\n document.documentElement.addEventListener('nanoComponentsReady', () => {\n setTimeout((_) => this.bootstrapGurantor(), 200);\n });\n setTimeout((_) => {\n if (!this.hasBootstrapped) this.bootstrapGurantor();\n }, 1000);\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n\n if (this.parentSizeObserver) {\n this.parentSizeObserver.disconnect();\n this.parentSizeObserver = undefined;\n }\n\n this.scrollParent = null;\n this.hasBootstrapped = false;\n }\n\n render() {\n return (\n <Host\n sticky={!this.isRootSticker && !this.stickToEle && this.isSticky}\n hide={this.hide && this.isStuck}\n siblings={this.stuckCounter}\n index={this.stickerIndex}\n stuck={this.isStuck && this.isSticky}\n placed-bottom={this.positions.includes('bottom')}\n placed-top={this.positions.includes('top')}\n placed-end={this.positions.includes('end')}\n placed-start={this.positions.includes('start')}\n >\n <div\n class={{\n sticker: true,\n sticky: this.isRootSticker && this.isSticky,\n stuck: this.isStuck && this.isRootSticker && this.isSticky,\n hide: this.isRootSticker && this.hide && this.isStuck,\n }}\n ref={(div) => (this.sticker = div)}\n >\n <div class=\"sticker-content\" ref={(div) => (this.content = div)}>\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"sticker.js","mappings":"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","names":[],"sources":["src/components/sticker/sticker.scss?tag=nano-sticker&encapsulation=shadow","src/components/sticker/sticker.tsx"],"sourcesContent":["@use '../../global/style/nano-theme/tokens/layers';\n\n:host {\n /**\n * @prop --stuck-left: The left position when your sticker is stuck. This can be useful to force your sticker to fill the viewport for example. Defaults to initial\n * @prop --stuck-right: The right position when your sticker is stuck. This can be useful to force your sticker to fill the viewport for example. Defaults to initial\n * @prop --stuck-z-index: The z-index order to display your sticker. Can be useful when displaying multiple stickers simultaneously. Defaults to #{layers.$layer-index-menubar};\n * @prop --top-hide: This is used for the hide transform animation (e.g. when quiet-mode is on). Defaults to translateY(-110%);\n * @prop --bottom-hide: This is used for the hide transform animation (e.g. when quiet-mode is on). Defaults to translateY(110%);\n */\n\n --stuck-left: initial;\n --stuck-right: initial;\n --stuck-z-index: #{layers.$layer-index-menubar};\n --top-hide: translateY(-110%);\n --bottom-hide: translateY(110%);\n\n display: block;\n max-inline-size: 100%;\n}\n\n:host([sticky]) {\n position: sticky;\n transition: 0.3s ease transform;\n will-change: min-block-size;\n}\n\n:host([sticky][stuck]) {\n inset-inline: var(--stuck-left) var(--stuck-right);\n z-index: var(--stuck-z-index) !important;\n}\n\n:host([sticky][hide][placed-top]) {\n transform: var(--top-hide);\n}\n\n:host([sticky][hide][placed-bottom]) {\n transform: var(--bottom-hide);\n}\n\n:host([sticky][index='1']) {\n z-index: calc(var(--stuck-z-index) + 1);\n}\n\n:host([sticky][index='2']) {\n z-index: calc(var(--stuck-z-index) + 2);\n}\n\n:host([sticky][index='3']) {\n z-index: calc(var(--stuck-z-index) + 3);\n}\n\n:host([sticky][index='4']) {\n z-index: calc(var(--stuck-z-index) + 4);\n}\n\n:host([sticky][index='5']) {\n z-index: calc(var(--stuck-z-index) + 5);\n}\n\n.sticker {\n display: inherit;\n max-inline-size: inherit;\n inline-size: 100%;\n\n &:not(.stuck) {\n inline-size: auto !important;\n }\n\n &.sticky {\n transition: 0.3s ease all;\n position: relative;\n\n :host([index='1']) & {\n z-index: calc(var(--stuck-z-index) + 1);\n }\n\n :host([index='2']) & {\n z-index: calc(var(--stuck-z-index) + 2);\n }\n\n :host([index='3']) & {\n z-index: calc(var(--stuck-z-index) + 3);\n }\n\n :host([index='4']) & {\n z-index: calc(var(--stuck-z-index) + 4);\n }\n\n :host([index='5']) & {\n z-index: calc(var(--stuck-z-index) + 5);\n }\n }\n\n &.stuck {\n position: fixed;\n inset-inline: var(--stuck-left) var(--stuck-right);\n z-index: var(--stuck-z-index);\n transform: translateY(0);\n\n :host([placed-top]) & {\n inset-block-start: 0;\n }\n\n :host([placed-bottom]) & {\n inset-block-end: 0;\n }\n\n &.hide {\n :host([placed-top]) & {\n transform: var(--top-hide);\n }\n\n :host([placed-bottom]) & {\n transform: var(--bottom-hide);\n }\n }\n }\n}\n\n.sticker-content {\n display: flex;\n flex-wrap: wrap;\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n Prop,\n State,\n Watch,\n Element,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { getOffset } from '../../utils/dom';\nimport { debounce } from '../../utils/throttle';\nimport { findScrollParent } from '../../utils/scroll-parent';\nimport { transformTag, h } from '../../utils/renderer';\n\nfunction _getScrollTop(ele: HTMLElement | Document) {\n return ele instanceof Document ? window.pageYOffset : ele.scrollTop;\n}\n\nfunction _getOffset(ele: HTMLElement, parent: HTMLElement | Document) {\n const parentEle =\n parent instanceof Document ? document.documentElement : parent;\n return getOffset(ele, parentEle);\n}\n\ntype Positions = 'top' | 'bottom' | 'start' | 'end';\n\n/**\n * The Sticker component is a toolbox for 'sticking' items to scrolling containers.\n *\n */\n@Component({\n tag: 'nano-sticker',\n styleUrl: 'sticker.scss',\n shadow: true,\n})\nexport class Sticker implements ComponentInterface {\n private isRtl: boolean = false;\n private io: IntersectionObserver;\n private contentSizeObserver: ResizeObserver;\n private parentSizeObserver: ResizeObserver;\n private sticker: HTMLDivElement;\n private content: HTMLDivElement;\n private scrollPosCache = 0;\n private scrollPosThresholdCache = 0;\n private cacheOffset: number | { v: number; h: number } = 0;\n private slottedContent: Element[];\n private pauseResizeWatcher = false;\n private listenForScrollParent = false;\n private stickToEleInitSize?: DOMRect;\n private positions: Positions[] = [];\n private pauseHide: boolean = false;\n private hasBootstrapped = false;\n\n @Element() host: HTMLNanoStickerElement;\n\n // Internal State\n\n @State() isStuck = false;\n @State() isRootSticker = true;\n @State() hide = false;\n @State() scrollHide = false;\n @State() multiStickerHide = false;\n @State() scrollingTo = false;\n @State() quietModeIsOn = false;\n @State() stuckCounter = 0;\n @State() stickerIndex = 0;\n @State() stickToEle?: HTMLNanoStickerElement;\n @State() triggerPos: { top: number; left: number };\n @State() trigger: HTMLDivElement;\n @State() _offset: number | { v: number; h: number } = 0;\n\n // Public API\n\n /** Only applicable to root stickers. When applied the sticker will grow or shrink to the scrollParent size */\n @Prop() autoResize = true;\n\n /** Manually enable / disabled sticky behaviour */\n @Prop({ mutable: true }) isSticky = true;\n\n /** Distance the item should be stuck from the sticky edge. */\n @Prop({ mutable: true }) offset: number | { v: number; h: number } = 0;\n\n /** The edge of the scroll-parent to stick to */\n @Prop() position: 'top' | 'bottom' = 'top';\n // other opts I'd like one day. 'start' | 'end' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'\n\n /** When applied, the sticker will hide when the scroll-parent\n * is scrolling away from the sticker's stuck position and show when scrolling toward it.\n * By default this will apply when the parent is below either the h or w dimensions */\n @Prop() quietMode: 'on' | 'off' | { h: number; w: number } = {\n h: 600,\n w: 600,\n };\n\n /** When applied stickers will hide upon new stickers being stuck to the same position */\n @Prop() hideOnNewStickers = true;\n\n /** The max width of the item to implement sticky behaviour. */\n @Prop() breakPointMax: null | number = null;\n\n /** The min width of the item to implement sticky behaviour. */\n @Prop() breakPointMin: null | number = null;\n\n /** Define which scroll element to listen & stick to.\n * By default, it will find traverse the DOM to find the closest. */\n @Prop({ mutable: true }) scrollParent?: HTMLElement | Document;\n\n /** Upon being stuck, attach the sticker to another sticker element.\n * JS query selector string or DOM element pointing to a `<nano-sticker>` */\n @Prop() stickTo: string | HTMLNanoStickerElement;\n\n // Broadcasted Events\n\n /** Emitted when a sticker is stuck */\n @Event() nanoStuck!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n /** Emitted when a sticker is unstuck */\n @Event() nanoUnstuck!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n /** Emitted when a sticker is hidden */\n @Event() nanoHide!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n /** Emitted when a sticker is showing */\n @Event() nanoShow!: EventEmitter<{ sticker: HTMLNanoStickerElement }>;\n\n // Public methods\n\n /**\n * Method to return the visibility status of the sticker\n * @returns boolean\n */\n @Method()\n async isHiding() {\n return this.hide;\n }\n\n /**\n * Method to return the stuck status of the sticker\n * @returns boolean\n */\n @Method()\n async isSticking() {\n this.shouldStick();\n return this.isStuck;\n }\n\n /**\n * @internal\n * @param offset\n * @returns the trigger position\n */\n @Method()\n async setTriggerPos(offset: number | { v: number; h: number }) {\n return (this._offset = offset);\n }\n\n /**\n * @internal\n * @returns the trigger position\n */\n @Method()\n async getTriggerPos() {\n return this.triggerPos;\n }\n\n /**\n * @internal\n * @param pause\n */\n @Method()\n async pauseHiding(pause: boolean) {\n this.pauseHide = pause;\n }\n\n // Watchers\n\n /** Keep a note of trigger position. Need this to track sticker order in the DOM */\n @Watch('trigger')\n @Watch('scrollParent')\n updateTriggerOffset() {\n if (!this.trigger || !this.scrollParent || !this.listenForScrollParent)\n return;\n this.triggerPos = _getOffset(this.trigger, this.scrollParent);\n }\n\n /** A root sticker is a fixed element Or this sticker is sticking to another.\n * We need a content resize watcher to make sure we maintain a correct placeholder size in the body */\n @Watch('position')\n stickerResizeListener() {\n if (!this.content || !window['ResizeObserver']) return;\n\n if (this.contentSizeObserver) {\n this.contentSizeObserver.disconnect();\n this.contentSizeObserver = undefined;\n }\n\n this.contentSizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (this.pauseResizeWatcher) return;\n\n if (entry.contentRect.height) {\n if (this.position === 'top')\n this.host.style.height = entry.contentRect.height + 'px';\n if (this.position === 'bottom')\n this.host.style.minHeight = entry.contentRect.height + 'px';\n }\n }\n });\n this.contentSizeObserver.observe(this.content);\n }\n\n @Watch('quietMode')\n quietModeChange() {\n if (this.quietMode === 'on')\n requestAnimationFrame(() => (this.quietModeIsOn = true));\n else if (this.quietMode === 'off')\n requestAnimationFrame(() => (this.quietModeIsOn = false));\n }\n\n /** offset is part of the public API but we also use it to manipulate trigger points */\n @Watch('offset')\n @Watch('_offset')\n setOffset() {\n if (this.trigger) this.trigger.setAttribute('style', '');\n let v: number, h: number, _v: number, _h: number;\n const sticker: HTMLElement =\n this.isRootSticker || this.stickToEle ? this.sticker : this.host;\n\n if (!sticker) return;\n\n if (typeof this.offset === 'object') ({ v, h } = this.offset);\n else v = h = this.offset;\n\n if (typeof this._offset === 'object') ({ v = _v, h = _h } = this._offset);\n else _v = _h = this._offset;\n\n const setPos = (pos: 'top' | 'bottom' | 'left' | 'right') => {\n const u = pos.match(/(top|bottom)/) ? v : h;\n setTriggetPos(pos);\n sticker.style[pos] = u + 'px';\n if (u)\n this.host.style.setProperty(\n '--hide-transform-amount',\n `(110% + ${u}px)`\n );\n else this.host.style.setProperty('--hide-transform-amount', null);\n };\n\n const setTriggetPos = (pos: 'top' | 'bottom' | 'left' | 'right') => {\n const u = pos.match(/(top|bottom)/) ? v + _v : h + _h;\n this.trigger.style[pos] = u * -1 + 'px';\n this.trigger.style.position = 'relative';\n this.trigger.style.minHeight = '1px';\n this.trigger.style.maxHeight = '1px';\n this.trigger.style.overflow = 'hidden';\n };\n\n if (\n (this.positions.includes('start') && this.isRtl) ||\n (this.positions.includes('end') && !this.isRtl)\n )\n setPos('right');\n\n if (\n (this.positions.includes('end') && this.isRtl) ||\n (this.positions.includes('start') && !this.isRtl)\n )\n setPos('left');\n\n if (this.positions.includes('top')) setPos('top');\n if (this.positions.includes('bottom')) setPos('bottom');\n }\n\n @Watch('position')\n positionChange() {\n this.positions = this.position.split('-') as Positions[];\n this.setOffset();\n }\n\n /** If this sticker is attached to a 'master' sticker (stickToEle),\n * here we move the content of this sticker in and out accordingly */\n @Watch('isStuck')\n async stuckChange() {\n if (this.isStuck) {\n if (this.stickToEle) {\n const content = this.host.children;\n this.slottedContent = Array.from(content);\n\n this.slottedContent.forEach((child: HTMLElement) => {\n this.stickToEle.appendChild(child);\n child.style.order = this.stickerIndex + '';\n });\n\n this.nanoStuck.emit({ sticker: this.stickToEle });\n } else this.nanoStuck.emit({ sticker: this.host });\n } else {\n this.scrollHide = false;\n\n if (this.stickToEle) {\n this.slottedContent.forEach((child: HTMLElement) => {\n this.host.appendChild(child);\n child.style.order = '';\n });\n this.nanoUnstuck.emit({ sticker: this.stickToEle });\n } else this.nanoUnstuck.emit({ sticker: this.host });\n }\n }\n\n /** attach scroll listener. 'hides' stickers when scrolling away from trigger and 'shows' when scrolling toward */\n @Watch('quietModeIsOn')\n attachScrollListeners() {\n if (this.quietModeIsOn)\n this.scrollParent.addEventListener('scroll', this.onScroll, {\n passive: true,\n capture: false,\n });\n else if (this.scrollParent) {\n this.scrollParent.removeEventListener('scroll', this.onScroll);\n this.moveTrigger(true);\n }\n }\n\n /** Add / remove parent scrolling listeners. If there's stickToEle we need to remove them */\n @Watch('scrollParent')\n @Watch('stickToEle')\n handleParentEvents(_, oldParent: null | HTMLElement = null) {\n if (!this.listenForScrollParent) return;\n if (oldParent) this.manageListenersOnParent(false, oldParent);\n if (this.scrollParent) this.manageListenersOnParent(!this.stickToEle);\n }\n\n /** Add remove specific listeners if we're sticking to a sticker.\n * We need to adjust triggers according to the status of the 'master' */\n @Watch('stickToEle')\n stickToEleChange(_, oldEle: null | HTMLNanoStickerElement) {\n if (this.stickToEle) {\n this.stickToEle.addEventListener('nanoHide', this.onStickToDisplayEvent);\n this.stickToEle.addEventListener('nanoShow', this.onStickToDisplayEvent);\n this.stickToEle.addEventListener('nanoStuck', this.onStickToDisplayEvent);\n this.stickToEle.addEventListener(\n 'nanoUnstuck',\n this.onStickToDisplayEvent\n );\n }\n if (oldEle) {\n oldEle.removeEventListener('nanoHide', this.onStickToDisplayEvent);\n oldEle.removeEventListener('nanoShow', this.onStickToDisplayEvent);\n oldEle.removeEventListener('nanoStuck', this.onStickToDisplayEvent);\n oldEle.removeEventListener('nanoUnstuck', this.onStickToDisplayEvent);\n }\n }\n\n /** Find and set the stickToEle from the public, selector string */\n @Watch('stickTo')\n stickToChange() {\n if (typeof this.stickTo === 'string')\n this.stickToEle = this.scrollParent.querySelector(this.stickTo);\n else if (this.stickTo) this.stickToEle = this.stickTo;\n else this.stickToEle = undefined;\n }\n\n /** 2 potential criteria for hiding. Multi-stickers or quiet mode. */\n @Watch('multiStickerHide')\n @Watch('scrollHide')\n visibilityDecisionHandler() {\n if (this.multiStickerHide || this.scrollHide) this.hide = true;\n else this.hide = false;\n }\n\n @Watch('hide')\n handleHideChange() {\n if (this.hide) this.nanoHide.emit({ sticker: this.host });\n else this.nanoShow.emit({ sticker: this.host });\n }\n\n @Watch('scrollParent')\n setupIO() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n if (!this.scrollParent || !this.hasBootstrapped || !this.trigger) return;\n\n this.isRootSticker = this.scrollParent instanceof Document;\n let root = this.scrollParent;\n if (this.scrollParent instanceof Document) root = null;\n\n this.io = new window.IntersectionObserver(\n (_) => {\n if (this.pauseResizeWatcher || !this.isSticky) return;\n this.shouldStick(_.slice(-1)[0]);\n },\n { root: root as HTMLElement }\n );\n\n this.io.observe(this.trigger);\n }\n\n // Private methods / handlers\n\n /** Assesses the public API quitemode and works out if it should be applied atm.\n * If 'small screen', or there is a breakpointmax / min it will add a resizeobserver to conditionally add behaviour */\n private setupParentResizeListener = () => {\n if (!window['ResizeObserver']) return;\n\n if (this.parentSizeObserver) {\n this.parentSizeObserver.disconnect();\n this.parentSizeObserver = undefined;\n }\n\n this.parentSizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n let height: number, width: number;\n if (entry.contentRect.height) height = entry.contentRect.height;\n if (entry.contentRect.width) width = entry.contentRect.width;\n\n if (typeof this.quietMode === 'object') {\n if (width < this.quietMode.w || height < this.quietMode.h)\n this.quietModeIsOn = true;\n else this.quietModeIsOn = false;\n }\n\n if (this.breakPointMin) {\n if (width > this.breakPointMin) this.isSticky = true;\n else this.isSticky = false;\n }\n\n if (this.breakPointMax) {\n if (width < this.breakPointMax) this.isSticky = true;\n else this.isSticky = false;\n }\n\n if (this.isRootSticker && this.sticker && this.autoResize)\n this.sticker.style.width = this.host.scrollWidth + 'px';\n }\n });\n\n const toWatch =\n this.scrollParent instanceof Document\n ? this.scrollParent.documentElement\n : this.scrollParent;\n if (toWatch) this.parentSizeObserver.observe(toWatch);\n };\n\n /** For stickTo stickers. We listen to the events from the 'master' sticker to amend the hide/show trigger\n * Main diffs from root-stickers / non is height being on 'master' */\n private onStickToDisplayEvent = (\n e: CustomEvent<{ sticker: HTMLNanoStickerElement }>\n ) => {\n if (e.detail.sticker !== this.stickToEle) return;\n\n switch (e.type) {\n case 'nanoHide':\n this._offset = 0;\n this.cacheOffset = this.offset;\n this.offset = 0;\n /** trigger moves down, underneath sticker if the main sticker hides */\n if (!this.isStuck) this.moveTrigger(false);\n\n /** If it's an actual 'position: sticky' element, we need to give the sticker an appropriate height.\n * This minimises content jumping around as items are added */\n if (!this.isRootSticker && this.quietModeIsOn) {\n requestAnimationFrame(() => {\n this.stickToEle.style.minHeight =\n this.stickToEleInitSize.height +\n (this.host.scrollHeight +\n (typeof this.cacheOffset === 'object'\n ? this.cacheOffset.v\n : this.cacheOffset)) +\n 'px';\n this.stickToEle.setTriggerPos(this.stickToEleInitSize.height * -1);\n });\n }\n break;\n case 'nanoShow':\n this._offset = this.stickToEleInitSize.height;\n this.offset = this.cacheOffset;\n this.moveTrigger(true);\n\n /** reset master sticker size */\n if (!this.isRootSticker && this.quietModeIsOn) {\n requestAnimationFrame(() => {\n this.stickToEle.style.minHeight = '';\n this.stickToEle.setTriggerPos(0);\n });\n }\n break;\n case 'nanoStuck':\n this.stickToEleInitSize = this.stickToEle.getBoundingClientRect();\n this._offset = this.stickToEleInitSize.height;\n break;\n }\n };\n\n /** Add or removes event listeners / observers on scrolling parent\n * for when the scrolling parent changes, or, this sticker is sticking to another */\n private manageListenersOnParent(\n addEvents: boolean,\n ele?: HTMLElement | Document\n ) {\n const scrollParent = ele || this.scrollParent;\n\n if (!scrollParent) return;\n\n if (!addEvents) {\n try {\n if (this.quietModeIsOn)\n scrollParent.removeEventListener('scroll', this.onScroll);\n scrollParent.removeEventListener('nanoStuck', this.onStickEvent);\n scrollParent.removeEventListener('nanoUnstuck', this.onStickEvent);\n } catch (_e) {\n console.error('Events haven`t been added');\n }\n } else {\n scrollParent.addEventListener('nanoStuck', this.onStickEvent);\n scrollParent.addEventListener('nanoUnstuck', this.onStickEvent);\n\n if (this.quietModeIsOn) this.attachScrollListeners();\n }\n this.setupParentResizeListener();\n }\n\n /** Handler applied to scrolling parent. When 'hideOnNewStickers' is true, hide this sticker on subsequent stuck stickers. */\n private onStickEvent = async (\n e: CustomEvent<{ sticker: HTMLNanoStickerElement }>\n ) => {\n const sticker = e.detail ? e.detail.sticker : null;\n if (!sticker || sticker.position !== this.position) return;\n\n const incomingTriggerPos = await sticker.getTriggerPos();\n\n if (\n e.type === 'nanoStuck' &&\n sticker !== this.host &&\n sticker.scrollParent === this.host.scrollParent\n ) {\n this.stickerIndex++;\n\n if (!this.hideOnNewStickers) return;\n\n if (\n (this.positions.includes('top') &&\n this.triggerPos.top < incomingTriggerPos.top) ||\n (this.positions.includes('bottom') &&\n this.triggerPos.top > incomingTriggerPos.top)\n ) {\n this.multiStickerHide = true;\n this.stuckCounter++;\n }\n }\n\n if (\n e.type === 'nanoUnstuck' &&\n sticker !== this.host &&\n sticker.scrollParent === this.host.scrollParent\n ) {\n this.stickerIndex--;\n\n if (!this.hideOnNewStickers) return;\n\n if (\n (this.positions.includes('top') &&\n this.triggerPos.top < incomingTriggerPos.top) ||\n (this.positions.includes('bottom') &&\n this.triggerPos.top > incomingTriggerPos.top)\n ) {\n this.stuckCounter--;\n if (this.stuckCounter < 1) this.multiStickerHide = false;\n }\n }\n };\n\n /** Scroll handler applied to scrolling parent. Only applied when quietmode is on.\n * 'hides' stickers when scrolling over 100px away from trigger and 'shows' when scrolling toward */\n private onScroll = () => {\n const y: number = _getScrollTop(this.scrollParent);\n\n // scrolling up\n if (y < this.scrollPosCache) {\n if (!this.positions.includes('bottom')) this.handleScrollTo();\n else this.handleScrollAway(y);\n }\n\n // scrolling down\n if (y > this.scrollPosCache) {\n if (!this.positions.includes('bottom')) this.handleScrollAway(y);\n else this.handleScrollTo();\n }\n this.scrollPosCache = y;\n };\n\n /** Watch for scroll direction. Only applies when quietmode is on.\n * We need to addjust the position of the trigger when the sticker is hidden */\n private handleScrollTo() {\n this.scrollPosThresholdCache = null;\n if (!this.scrollHide) return;\n\n if (this.scrollingTo !== true) {\n this._offset = this.cacheOffset || this._offset;\n }\n this.scrollingTo = true;\n this.scrollHide = false;\n }\n\n private handleScrollAway(currScroll: number) {\n if (this.scrollHide) return;\n\n if (!this.isStuck) return;\n\n if (this.scrollingTo !== false) {\n this.cacheOffset = this._offset;\n this._offset = 0;\n }\n this.scrollingTo = false;\n\n if (!this.scrollPosThresholdCache)\n this.scrollPosThresholdCache = currScroll;\n else if (\n !this.pauseHide &&\n Math.abs(currScroll - this.scrollPosThresholdCache) > 100\n )\n this.scrollHide = true;\n }\n\n private moveTrigger(toInitial?: boolean) {\n if (\n (this.positions.includes('bottom') && !toInitial) ||\n (!this.positions.includes('bottom') && toInitial)\n ) {\n this.host.parentNode.insertBefore(this.trigger, this.host);\n } else\n this.host.parentNode.insertBefore(this.trigger, this.host.nextSibling);\n }\n\n private shouldStick(data?: IntersectionObserverEntry) {\n let scrollAmt: number;\n\n if (this.positions.includes('top')) {\n if (!this.isRootSticker) {\n scrollAmt = _getOffset(this.trigger, this.scrollParent).top;\n } else {\n scrollAmt = this.trigger.getBoundingClientRect().top;\n }\n this.isStuck = scrollAmt < -1;\n } else if (this.positions.includes('bottom')) {\n scrollAmt = this.trigger.getBoundingClientRect().top;\n const parentBounding =\n data && data.rootBounds\n ? data.rootBounds\n : (this.scrollParent instanceof Document\n ? document.documentElement\n : this.scrollParent\n ).getBoundingClientRect();\n this.isStuck =\n !data.isIntersecting ||\n scrollAmt > parentBounding.height + parentBounding.top;\n }\n }\n\n private bootstrapGurantor() {\n this.hasBootstrapped = true;\n\n const scrollParent = this.scrollParent || findScrollParent(this.host);\n this.scrollParent =\n scrollParent === document.documentElement ? document : scrollParent;\n this.isRootSticker = this.scrollParent instanceof Document;\n\n this.trigger = this.trigger || document.createElement('div');\n this.trigger.innerHTML = '&nbsp;';\n this.trigger.classList.add('sticker-trigger');\n\n this.positionChange();\n this.moveTrigger(true);\n this.quietModeChange();\n\n this.listenForScrollParent = true;\n this.handleParentEvents(true);\n\n this.stickerIndex = Array.from(\n this.scrollParent.querySelectorAll(transformTag('nano-sticker'))\n )\n .filter(\n (sticker: HTMLNanoStickerElement) => sticker.position === this.position\n )\n .findIndex((sticker) => sticker === this.host);\n\n this.setOffset();\n this.stickerResizeListener();\n this.setupParentResizeListener();\n\n // bit of a hack ... add default 'order'. Required for 'stickTo' elements.\n this.slottedContent = Array.from(this.host.children);\n this.slottedContent.forEach((child: HTMLElement) => {\n child.style.order = this.stickerIndex + '';\n });\n\n this.updateTriggerOffset();\n this.stickToChange();\n this.setupIO();\n this.onStickToDisplayEvent = debounce(this.onStickToDisplayEvent, 50);\n }\n\n // Stencil methods\n\n connectedCallback() {\n this.isRtl =\n this.host.dir === 'rtl' || this.host.ownerDocument.dir === 'rtl';\n\n // this is all horrible.... shrug\n document.documentElement.addEventListener('nanoComponentsReady', () => {\n setTimeout((_) => this.bootstrapGurantor(), 200);\n });\n setTimeout((_) => {\n if (!this.hasBootstrapped) this.bootstrapGurantor();\n }, 1000);\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n\n if (this.parentSizeObserver) {\n this.parentSizeObserver.disconnect();\n this.parentSizeObserver = undefined;\n }\n\n this.scrollParent = null;\n this.hasBootstrapped = false;\n }\n\n render() {\n return (\n <Host\n sticky={!this.isRootSticker && !this.stickToEle && this.isSticky}\n hide={this.hide && this.isStuck}\n siblings={this.stuckCounter}\n index={this.stickerIndex}\n stuck={this.isStuck && this.isSticky}\n placed-bottom={this.positions.includes('bottom')}\n placed-top={this.positions.includes('top')}\n placed-end={this.positions.includes('end')}\n placed-start={this.positions.includes('start')}\n class=\"nano-sticker\"\n >\n <div\n class={{\n sticker: true,\n sticky: this.isRootSticker && this.isSticky,\n stuck: this.isStuck && this.isRootSticker && this.isSticky,\n hide: this.isRootSticker && this.hide && this.isStuck,\n }}\n ref={(div) => (this.sticker = div)}\n >\n <div class=\"sticker-content\" ref={(div) => (this.content = div)}>\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,7 +1,8 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
4
+ import { proxyCustomElement, HTMLElement, createEvent, Host } from '@stencil/core/internal/client';
5
+ import { h } from './renderer.js';
5
6
  import { P as Popover } from './popover.js';
6
7
 
7
8
  const tooltipCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0.125s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;--background:var(--nano-tooltip-bg-color, #4a4a4a);--color:var(--nano-tooltip-color, #fff);display:contents}.tooltip{max-inline-size:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:var(--background);font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:var(--color);opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));transform:translateY(10px) translateZ(0);transform-origin:bottom;transition:opacity, transform var(--hide-duration) var(--hide-timing-function) var(--hide-delay);white-space:normal}.tooltip-arrow{content:\"\";position:absolute;inline-size:0;block-size:0;color:var(--background);transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000);border:0;background:none;padding:0;overflow:visible;color:unset}.tooltip-positioner::backdrop{display:none}.tooltip-positioner[popover],.tooltip-positioner:popover-open{inset:unset}.tooltip-positioner .tooltip{transition-delay:var(--show-delay);transition-duration:var(--show-duration);transition-timing-function:var(--show-timing-function)}.tooltip-positioner[data-popper-placement^=top] .tooltip{transform-origin:bottom;transform:translateY(-10px) translateZ(0)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip{transform-origin:top}.tooltip-positioner[data-popper-placement^=left] .tooltip{transform-origin:right}.tooltip-positioner[data-popper-placement^=right] .tooltip{transform-origin:left}.tooltip-positioner.popover-visible .tooltip{opacity:1;transform:none}.tooltip-positioner[data-popper-placement^=bottom] .tooltip-arrow{inset-block-end:100%;inset-inline-start:calc(50% - 5px);border-block-end:5px solid;border-inline-start:5px solid transparent;border-inline-end:5px solid transparent}.tooltip-positioner[data-popper-placement=bottom-start] .tooltip-arrow{inset-inline-start:5px}.tooltip-positioner[data-popper-placement=bottom-end] .tooltip-arrow{inset-inline:auto 5px}.tooltip-positioner[data-popper-placement^=top] .tooltip-arrow{inset-block-start:100%;inset-inline-start:calc(50% - 5px);border-block-start:5px solid;border-inline-start:5px solid transparent;border-inline-end:5px solid transparent}.tooltip-positioner[data-popper-placement=top-start] .tooltip-arrow{inset-inline-start:5px}.tooltip-positioner[data-popper-placement=top-end] .tooltip-arrow{inset-inline:auto 5px}.tooltip-positioner[data-popper-placement^=left] .tooltip-arrow{inset-block-start:calc(50% - 5px);inset-inline-start:100%;border-inline-start:5px solid;border-block-start:5px solid transparent;border-block-end:5px solid transparent}.tooltip-positioner[data-popper-placement=left-start] .tooltip-arrow{inset-block-start:5px}.tooltip-positioner[data-popper-placement=left-end] .tooltip-arrow{inset-block:auto 5px}.tooltip-positioner[data-popper-placement^=right] .tooltip-arrow{inset-block-start:calc(50% - 5px);inset-inline-end:100%;border-inline-end:5px solid;border-block-start:5px solid transparent;border-block-end:5px solid transparent}.tooltip-positioner[data-popper-placement=right-start] .tooltip-arrow{inset-block-start:5px}.tooltip-positioner[data-popper-placement=right-end] .tooltip-arrow{inset-block:auto 5px}";
@@ -217,10 +218,10 @@ const Tooltip = /*@__PURE__*/ proxyCustomElement(class Tooltip extends HTMLEleme
217
218
  this.popover.destroy();
218
219
  }
219
220
  render() {
220
- return (h(Host, { key: '24bcb9c2e705abc82a3a3c6f53d1a9ac4c38bd2a', onKeyDown: this.handleKeyDown, onMouseOver: this.handleMouseOver, onMouseOut: this.handleMouseOut, onBlur: this.handleBlur, onFocus: this.handleFocus, onClick: this.handleClick }, h("slot", { key: '50f175c4b6090ec769a4ea9d06cd23be521a01e3', onSlotchange: this.handleSlotChange }), h("div", { key: '6413a83c5416cca23af4c0e856c7dc63b9d0fd6b', ref: (el) => (this.tooltipPositioner = el), class: "tooltip-positioner", popover: "manual" }, h("div", { key: '99cd8748322e5aae2f04160359bbe9521914ca92', part: "base", ref: (el) => (this.tooltip = el), class: {
221
+ return (h(Host, { key: 'aea96e5f6c3a04be33309614166cde8809501bdd', onKeyDown: this.handleKeyDown, onMouseOver: this.handleMouseOver, onMouseOut: this.handleMouseOut, onBlur: this.handleBlur, onFocus: this.handleFocus, onClick: this.handleClick, class: "nano-tooltip" }, h("slot", { key: '1d35074667f546275cd81875cf49b5de5a9a144f', onSlotchange: this.handleSlotChange }), h("div", { key: '694a19141a36749d393e0db08ce48bfc490e7938', ref: (el) => (this.tooltipPositioner = el), class: "tooltip-positioner", popover: "manual" }, h("div", { key: '8b181e183dff1ab3b1a2253f693f6d62f6a504d2', part: "base", ref: (el) => (this.tooltip = el), class: {
221
222
  tooltip: true,
222
223
  'tooltip--open': this.open,
223
- }, role: "tooltip", "aria-hidden": this.open ? 'false' : 'true' }, h("slot", { key: 'e7b096bfb90f18f0b7a440c6680e00d5bb547c4a', name: "content", onSlotchange: () => this.setLabel() }, this.content), h("div", { key: '96cc982fde977a2c65bd877a7b1cd894c89e9bad', class: "tooltip-arrow", "data-popper-arrow": true })))));
224
+ }, role: "tooltip", "aria-hidden": this.open ? 'false' : 'true' }, h("slot", { key: 'ba3d58a1cab421828b90a880019c334ddd15c40a', name: "content", onSlotchange: () => this.setLabel() }, this.content), h("div", { key: 'e254be92d3ca7ff1fc592c6f81a6b4de0185434a', class: "tooltip-arrow", "data-popper-arrow": true })))));
224
225
  }
225
226
  static get watchers() { return {
226
227
  "content": ["setLabel"],
@@ -1 +1 @@
1
- {"file":"tooltip.js","mappings":"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","names":[],"sources":["src/components/tooltip/tooltip.scss?tag=nano-tooltip&encapsulation=shadow","src/components/tooltip/tooltip.tsx"],"sourcesContent":["@use '../../global/style/nano-theme/tokens';\n\n/**\n * @prop --hide-delay: The amount of time to wait before hiding the tooltip.\n * @prop --hide-duration: The amount of time the hide transition takes to complete.\n * @prop --hide-timing-function: The timing function (easing) to use for the hide transition.\n * @prop --max-width: The maximum width of the tooltip.\n * @prop --show-delay: The amount of time to wait before showing the tooltip.\n * @prop --show-duration: The amount of time the show transition takes to complete.\n * @prop --show-timing-function: The timing function (easing) to use for the show transition.\n */\n:host {\n --max-width: 20rem;\n --hide-delay: 0.125s;\n --hide-duration: 0.125s;\n --hide-timing-function: ease;\n --show-delay: 0.125s;\n --show-duration: 0.125s;\n --show-timing-function: ease;\n --background: #{tokens.$tooltip-bg-color};\n --color: #{tokens.$tooltip-color};;\n\n /* autoprefixer: ignore next */\n display: contents;\n}\n\n.tooltip {\n $self: &;\n\n max-inline-size: var(--max-width);\n border-radius: #{tokens.$tooltip-border-radius};\n background-color: var(--background);\n font-size: #{tokens.$tooltip-fontsize};\n line-height: 1.5;\n color: var(--color);\n opacity: 0;\n padding: #{tokens.$tooltip-padding};\n transform: translateY(10px) translateZ(0);\n transform-origin: bottom;\n transition: opacity, transform var(--hide-duration) var(--hide-timing-function) var(--hide-delay);\n white-space: normal;\n\n &-arrow {\n content: '';\n position: absolute;\n inline-size: 0;\n block-size: 0;\n color: var(--background);\n transition: 0.2s ease transform;\n }\n\n &-positioner {\n position: absolute;\n z-index: #{tokens.$layer-index-tooltip};\n border: 0;\n background: none;\n padding: 0;\n overflow: visible;\n color: unset;\n\n &::backdrop { display: none; }\n\n &[popover],\n &:popover-open {\n inset: unset;\n }\n\n #{$self} {\n transition-delay: var(--show-delay);\n transition-duration: var(--show-duration);\n transition-timing-function: var(--show-timing-function);\n }\n\n &[data-popper-placement^='top'] #{$self} {\n transform-origin: bottom;\n transform: translateY(-10px) translateZ(0);\n }\n\n &[data-popper-placement^='bottom'] #{$self} {\n transform-origin: top;\n }\n\n &[data-popper-placement^='left'] #{$self} {\n transform-origin: right;\n }\n\n &[data-popper-placement^='right'] #{$self} {\n transform-origin: left;\n }\n\n &.popover-visible #{$self} {\n opacity: 1;\n transform: none;\n }\n\n // Arrow + bottom\n &[data-popper-placement^='bottom'] #{$self}-arrow {\n inset-block-end: 100%;\n inset-inline-start: calc(50% - #{tokens.$tooltip-arrow-size});\n border-block-end: #{tokens.$tooltip-arrow-size} solid;\n border-inline-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-inline-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='bottom-start'] #{$self}-arrow {\n inset-inline-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='bottom-end'] #{$self}-arrow {\n inset-inline: auto #{tokens.$tooltip-arrow-offset};\n }\n\n // Arrow + top\n &[data-popper-placement^='top'] #{$self}-arrow {\n inset-block-start: 100%;\n inset-inline-start: calc(50% - #{tokens.$tooltip-arrow-size});\n border-block-start: #{tokens.$tooltip-arrow-size} solid;\n border-inline-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-inline-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='top-start'] #{$self}-arrow {\n inset-inline-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='top-end'] #{$self}-arrow {\n inset-inline: auto #{tokens.$tooltip-arrow-offset};\n }\n\n // Arrow + left\n &[data-popper-placement^='left'] #{$self}-arrow {\n inset-block-start: calc(50% - #{tokens.$tooltip-arrow-size});\n inset-inline-start: 100%;\n border-inline-start: #{tokens.$tooltip-arrow-size} solid;\n border-block-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-block-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='left-start'] #{$self}-arrow {\n inset-block-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='left-end'] #{$self}-arrow {\n inset-block: auto #{tokens.$tooltip-arrow-offset};\n }\n\n // Arrow + right\n &[data-popper-placement^='right'] #{$self}-arrow {\n inset-block-start: calc(50% - #{tokens.$tooltip-arrow-size});\n inset-inline-end: 100%;\n border-inline-end: #{tokens.$tooltip-arrow-size} solid;\n border-block-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-block-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='right-start'] #{$self}-arrow {\n inset-block-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='right-end'] #{$self}-arrow {\n inset-block: auto #{tokens.$tooltip-arrow-offset};\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n Watch,\n h,\n} from '@stencil/core';\nimport Popover from '../../utils/popover';\n\n/**\n * Tooltips display additional information based on a specific action.\n * @slot - The tooltip's target element. Only the first element will be used as the target.\n * @slot content - The tooltip's content. Alternatively, you can use the content prop.\n */\n@Component({\n tag: 'nano-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n})\nexport class Tooltip {\n private isVisible = false;\n private popover: Popover;\n private tooltipPositioner: HTMLElement;\n private tooltip: HTMLElement;\n\n private _target: HTMLElement;\n private get target() {\n return this._target;\n }\n private set target(newTarget) {\n if (newTarget !== this._target && this._target) {\n this._target.removeAttribute('aria-label');\n }\n newTarget.setAttribute('aria-label', this.label);\n this._target = newTarget;\n }\n\n private label = '';\n\n @Element() host: HTMLNanoTooltipElement;\n\n /** The tooltip's content. Alternatively, you can use the content slot. */\n @Prop() content = '';\n\n @Watch('content')\n setLabel() {\n const contentSlotNodes = Array.from(\n this.host.querySelectorAll('[slot=\"content\"]')\n );\n const textContent = contentSlotNodes\n .map((node) => node.textContent)\n .join(' ')\n .trim();\n\n if (!this.target) {\n this.target = this.getTarget();\n\n if (!this.target) return;\n }\n\n this.label = textContent || this.content;\n this.target.setAttribute('aria-label', this.label);\n }\n\n /**\n * The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\n * inside of the viewport.\n */\n @Prop() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'top';\n\n /** Set to true to disable the tooltip so it won't show when triggered. */\n @Prop() disabled = false;\n\n /** The distance in pixels from which to offset the tooltip away from its target. */\n @Prop() distance = 10;\n\n /** Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** The distance in pixels from which to offset the tooltip along its target. */\n @Prop() skidding = 0;\n\n /**\n * Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`.\n */\n @Prop({ mutable: true }) hoist = false;\n\n /**\n * Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\n * options can be passed by separating them with a space. When manual is used, the tooltip must be activated\n * programmatically.\n */\n @Prop() trigger: string = 'hover focus';\n\n @Watch('open')\n handleOpenChange() {\n if (this.open) this.show();\n else this.hide();\n }\n\n // Events\n\n /** Emitted when the tooltip begins to show. Calling `event.preventDefault()` will prevent it from being shown. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the tooltip has shown and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the tooltip begins to hide. Calling `event.preventDefault()` will prevent it from being hidden. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the tooltip has hidden and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n // Public methods\n\n /** Shows the tooltip. */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible || this.disabled) {\n return;\n }\n const slShow = this.nanoShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.isVisible = true;\n this.open = true;\n if (typeof this.tooltipPositioner?.showPopover === 'function') {\n this.hoist = true;\n this.popover.show();\n this.tooltipPositioner.showPopover();\n } else {\n this.popover.show();\n }\n }\n\n /** Hides the tooltip. */\n @Method()\n async hide() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible) {\n return;\n }\n\n const slHide = this.nanoHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n\n setTimeout(() => {\n if (\n !this.open &&\n typeof this.tooltipPositioner?.hidePopover === 'function'\n ) {\n this.tooltipPositioner.hidePopover();\n }\n }, 300);\n }\n\n // Private methods\n\n private getTarget() {\n // Get the first child that isn't a <style> or content slot\n const target = [...Array.from(this.host.children)].find(\n (el) =>\n el.tagName.toLowerCase() !== 'style' &&\n el.getAttribute('slot') !== 'content'\n ) as HTMLElement;\n\n if (!target) {\n throw new Error('Invalid tooltip target: no child element was found.');\n }\n\n return target;\n }\n\n private hasTrigger(triggerType: string) {\n const triggers = this.trigger.split(' ');\n return triggers.includes(triggerType);\n }\n\n private syncOptions() {\n this.popover.setOptions({\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.tooltip,\n onAfterHide: () => this.nanoAfterHide.emit(),\n onAfterShow: () => this.nanoAfterShow.emit(),\n });\n }\n\n // Event Handlers\n\n private handleBlur = () => {\n if (this.hasTrigger('focus')) {\n this.hide();\n }\n };\n\n private handleClick = () => {\n if (this.hasTrigger('click')) {\n if (this.open) this.hide();\n else this.show();\n }\n };\n\n private handleFocus = () => {\n if (this.hasTrigger('focus')) {\n this.show();\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Pressing escape when the target element has focus should dismiss the tooltip\n if (this.open && event.key === 'Escape') {\n event.stopPropagation();\n this.hide();\n }\n };\n\n private handleMouseOver = () => {\n if (this.hasTrigger('hover')) {\n this.show();\n }\n };\n\n private handleMouseOut = () => {\n if (this.hasTrigger('hover')) {\n this.hide();\n }\n };\n\n private handleSlotChange = () => {\n this.target = this.getTarget();\n };\n\n // Stencil hooks\n\n componentDidLoad() {\n this.target = this.getTarget();\n this.popover = new Popover(this.target, this.tooltipPositioner);\n this.syncOptions();\n this.setLabel();\n\n // Show on init if open\n this.tooltipPositioner.hidden = !this.open;\n if (this.open) {\n this.show();\n }\n }\n\n componentDidUpdate() {\n this.syncOptions();\n }\n\n disconnectedCallback() {\n if (this.popover) this.popover.destroy();\n }\n\n render() {\n return (\n <Host\n onKeyDown={this.handleKeyDown}\n onMouseOver={this.handleMouseOver}\n onMouseOut={this.handleMouseOut}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n >\n <slot onSlotchange={this.handleSlotChange} />\n <div\n ref={(el) => (this.tooltipPositioner = el)}\n class=\"tooltip-positioner\"\n popover=\"manual\"\n >\n <div\n part=\"base\"\n ref={(el) => (this.tooltip = el)}\n class={{\n tooltip: true,\n 'tooltip--open': this.open,\n }}\n role=\"tooltip\"\n aria-hidden={this.open ? 'false' : 'true'}\n >\n <slot name=\"content\" onSlotchange={() => this.setLabel()}>\n {this.content}\n </slot>\n <div class=\"tooltip-arrow\" data-popper-arrow></div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"tooltip.js","mappings":"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","names":[],"sources":["src/components/tooltip/tooltip.scss?tag=nano-tooltip&encapsulation=shadow","src/components/tooltip/tooltip.tsx"],"sourcesContent":["@use '../../global/style/nano-theme/tokens';\n\n/**\n * @prop --hide-delay: The amount of time to wait before hiding the tooltip.\n * @prop --hide-duration: The amount of time the hide transition takes to complete.\n * @prop --hide-timing-function: The timing function (easing) to use for the hide transition.\n * @prop --max-width: The maximum width of the tooltip.\n * @prop --show-delay: The amount of time to wait before showing the tooltip.\n * @prop --show-duration: The amount of time the show transition takes to complete.\n * @prop --show-timing-function: The timing function (easing) to use for the show transition.\n */\n:host {\n --max-width: 20rem;\n --hide-delay: 0.125s;\n --hide-duration: 0.125s;\n --hide-timing-function: ease;\n --show-delay: 0.125s;\n --show-duration: 0.125s;\n --show-timing-function: ease;\n --background: #{tokens.$tooltip-bg-color};\n --color: #{tokens.$tooltip-color};;\n\n /* autoprefixer: ignore next */\n display: contents;\n}\n\n.tooltip {\n $self: &;\n\n max-inline-size: var(--max-width);\n border-radius: #{tokens.$tooltip-border-radius};\n background-color: var(--background);\n font-size: #{tokens.$tooltip-fontsize};\n line-height: 1.5;\n color: var(--color);\n opacity: 0;\n padding: #{tokens.$tooltip-padding};\n transform: translateY(10px) translateZ(0);\n transform-origin: bottom;\n transition: opacity, transform var(--hide-duration) var(--hide-timing-function) var(--hide-delay);\n white-space: normal;\n\n &-arrow {\n content: '';\n position: absolute;\n inline-size: 0;\n block-size: 0;\n color: var(--background);\n transition: 0.2s ease transform;\n }\n\n &-positioner {\n position: absolute;\n z-index: #{tokens.$layer-index-tooltip};\n border: 0;\n background: none;\n padding: 0;\n overflow: visible;\n color: unset;\n\n &::backdrop { display: none; }\n\n &[popover],\n &:popover-open {\n inset: unset;\n }\n\n #{$self} {\n transition-delay: var(--show-delay);\n transition-duration: var(--show-duration);\n transition-timing-function: var(--show-timing-function);\n }\n\n &[data-popper-placement^='top'] #{$self} {\n transform-origin: bottom;\n transform: translateY(-10px) translateZ(0);\n }\n\n &[data-popper-placement^='bottom'] #{$self} {\n transform-origin: top;\n }\n\n &[data-popper-placement^='left'] #{$self} {\n transform-origin: right;\n }\n\n &[data-popper-placement^='right'] #{$self} {\n transform-origin: left;\n }\n\n &.popover-visible #{$self} {\n opacity: 1;\n transform: none;\n }\n\n // Arrow + bottom\n &[data-popper-placement^='bottom'] #{$self}-arrow {\n inset-block-end: 100%;\n inset-inline-start: calc(50% - #{tokens.$tooltip-arrow-size});\n border-block-end: #{tokens.$tooltip-arrow-size} solid;\n border-inline-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-inline-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='bottom-start'] #{$self}-arrow {\n inset-inline-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='bottom-end'] #{$self}-arrow {\n inset-inline: auto #{tokens.$tooltip-arrow-offset};\n }\n\n // Arrow + top\n &[data-popper-placement^='top'] #{$self}-arrow {\n inset-block-start: 100%;\n inset-inline-start: calc(50% - #{tokens.$tooltip-arrow-size});\n border-block-start: #{tokens.$tooltip-arrow-size} solid;\n border-inline-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-inline-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='top-start'] #{$self}-arrow {\n inset-inline-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='top-end'] #{$self}-arrow {\n inset-inline: auto #{tokens.$tooltip-arrow-offset};\n }\n\n // Arrow + left\n &[data-popper-placement^='left'] #{$self}-arrow {\n inset-block-start: calc(50% - #{tokens.$tooltip-arrow-size});\n inset-inline-start: 100%;\n border-inline-start: #{tokens.$tooltip-arrow-size} solid;\n border-block-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-block-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='left-start'] #{$self}-arrow {\n inset-block-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='left-end'] #{$self}-arrow {\n inset-block: auto #{tokens.$tooltip-arrow-offset};\n }\n\n // Arrow + right\n &[data-popper-placement^='right'] #{$self}-arrow {\n inset-block-start: calc(50% - #{tokens.$tooltip-arrow-size});\n inset-inline-end: 100%;\n border-inline-end: #{tokens.$tooltip-arrow-size} solid;\n border-block-start: #{tokens.$tooltip-arrow-size} solid transparent;\n border-block-end: #{tokens.$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='right-start'] #{$self}-arrow {\n inset-block-start: #{tokens.$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='right-end'] #{$self}-arrow {\n inset-block: auto #{tokens.$tooltip-arrow-offset};\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { h } from '../../utils/renderer';\nimport Popover from '../../utils/popover';\n\n/**\n * Tooltips display additional information based on a specific action.\n * @slot - The tooltip's target element. Only the first element will be used as the target.\n * @slot content - The tooltip's content. Alternatively, you can use the content prop.\n */\n@Component({\n tag: 'nano-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n})\nexport class Tooltip {\n private isVisible = false;\n private popover: Popover;\n private tooltipPositioner: HTMLElement;\n private tooltip: HTMLElement;\n\n private _target: HTMLElement;\n private get target() {\n return this._target;\n }\n private set target(newTarget) {\n if (newTarget !== this._target && this._target) {\n this._target.removeAttribute('aria-label');\n }\n newTarget.setAttribute('aria-label', this.label);\n this._target = newTarget;\n }\n\n private label = '';\n\n @Element() host: HTMLNanoTooltipElement;\n\n /** The tooltip's content. Alternatively, you can use the content slot. */\n @Prop() content = '';\n\n @Watch('content')\n setLabel() {\n const contentSlotNodes = Array.from(\n this.host.querySelectorAll('[slot=\"content\"]')\n );\n const textContent = contentSlotNodes\n .map((node) => node.textContent)\n .join(' ')\n .trim();\n\n if (!this.target) {\n this.target = this.getTarget();\n\n if (!this.target) return;\n }\n\n this.label = textContent || this.content;\n this.target.setAttribute('aria-label', this.label);\n }\n\n /**\n * The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\n * inside of the viewport.\n */\n @Prop() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'top';\n\n /** Set to true to disable the tooltip so it won't show when triggered. */\n @Prop() disabled = false;\n\n /** The distance in pixels from which to offset the tooltip away from its target. */\n @Prop() distance = 10;\n\n /** Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** The distance in pixels from which to offset the tooltip along its target. */\n @Prop() skidding = 0;\n\n /**\n * Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`.\n */\n @Prop({ mutable: true }) hoist = false;\n\n /**\n * Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\n * options can be passed by separating them with a space. When manual is used, the tooltip must be activated\n * programmatically.\n */\n @Prop() trigger: string = 'hover focus';\n\n @Watch('open')\n handleOpenChange() {\n if (this.open) this.show();\n else this.hide();\n }\n\n // Events\n\n /** Emitted when the tooltip begins to show. Calling `event.preventDefault()` will prevent it from being shown. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the tooltip has shown and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the tooltip begins to hide. Calling `event.preventDefault()` will prevent it from being hidden. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the tooltip has hidden and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n // Public methods\n\n /** Shows the tooltip. */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible || this.disabled) {\n return;\n }\n const slShow = this.nanoShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.isVisible = true;\n this.open = true;\n if (typeof this.tooltipPositioner?.showPopover === 'function') {\n this.hoist = true;\n this.popover.show();\n this.tooltipPositioner.showPopover();\n } else {\n this.popover.show();\n }\n }\n\n /** Hides the tooltip. */\n @Method()\n async hide() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible) {\n return;\n }\n\n const slHide = this.nanoHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n\n setTimeout(() => {\n if (\n !this.open &&\n typeof this.tooltipPositioner?.hidePopover === 'function'\n ) {\n this.tooltipPositioner.hidePopover();\n }\n }, 300);\n }\n\n // Private methods\n\n private getTarget() {\n // Get the first child that isn't a <style> or content slot\n const target = [...Array.from(this.host.children)].find(\n (el) =>\n el.tagName.toLowerCase() !== 'style' &&\n el.getAttribute('slot') !== 'content'\n ) as HTMLElement;\n\n if (!target) {\n throw new Error('Invalid tooltip target: no child element was found.');\n }\n\n return target;\n }\n\n private hasTrigger(triggerType: string) {\n const triggers = this.trigger.split(' ');\n return triggers.includes(triggerType);\n }\n\n private syncOptions() {\n this.popover.setOptions({\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.tooltip,\n onAfterHide: () => this.nanoAfterHide.emit(),\n onAfterShow: () => this.nanoAfterShow.emit(),\n });\n }\n\n // Event Handlers\n\n private handleBlur = () => {\n if (this.hasTrigger('focus')) {\n this.hide();\n }\n };\n\n private handleClick = () => {\n if (this.hasTrigger('click')) {\n if (this.open) this.hide();\n else this.show();\n }\n };\n\n private handleFocus = () => {\n if (this.hasTrigger('focus')) {\n this.show();\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Pressing escape when the target element has focus should dismiss the tooltip\n if (this.open && event.key === 'Escape') {\n event.stopPropagation();\n this.hide();\n }\n };\n\n private handleMouseOver = () => {\n if (this.hasTrigger('hover')) {\n this.show();\n }\n };\n\n private handleMouseOut = () => {\n if (this.hasTrigger('hover')) {\n this.hide();\n }\n };\n\n private handleSlotChange = () => {\n this.target = this.getTarget();\n };\n\n // Stencil hooks\n\n componentDidLoad() {\n this.target = this.getTarget();\n this.popover = new Popover(this.target, this.tooltipPositioner);\n this.syncOptions();\n this.setLabel();\n\n // Show on init if open\n this.tooltipPositioner.hidden = !this.open;\n if (this.open) {\n this.show();\n }\n }\n\n componentDidUpdate() {\n this.syncOptions();\n }\n\n disconnectedCallback() {\n if (this.popover) this.popover.destroy();\n }\n\n render() {\n return (\n <Host\n onKeyDown={this.handleKeyDown}\n onMouseOver={this.handleMouseOver}\n onMouseOut={this.handleMouseOut}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n class=\"nano-tooltip\"\n >\n <slot onSlotchange={this.handleSlotChange} />\n <div\n ref={(el) => (this.tooltipPositioner = el)}\n class=\"tooltip-positioner\"\n popover=\"manual\"\n >\n <div\n part=\"base\"\n ref={(el) => (this.tooltip = el)}\n class={{\n tooltip: true,\n 'tooltip--open': this.open,\n }}\n role=\"tooltip\"\n aria-hidden={this.open ? 'false' : 'true'}\n >\n <slot name=\"content\" onSlotchange={() => this.setLabel()}>\n {this.content}\n </slot>\n <div class=\"tooltip-arrow\" data-popper-arrow></div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import { g as getElement } from './index-3118109b.js';
4
+ import { g as getElement } from './index-6cc72cd9.js';
5
5
 
6
6
  var createDeferredPromise = function () {
7
7
  var resolve;
@@ -46,4 +46,4 @@ const Wormhole = (Component, props) => openWormhole(Component, props);
46
46
 
47
47
  export { SearchChangeEvent as S, Wormhole as W };
48
48
 
49
- //# sourceMappingURL=algolia-data-8fc24341.js.map
49
+ //# sourceMappingURL=algolia-data-f0f72f1d.js.map
@@ -1 +1 @@
1
- {"file":"algolia-data-8fc24341.js","mappings":";;;;;AAAO,IAAI,qBAAqB,GAAG,YAAY;AAC/C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjE,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;;ACFM,IAAI,YAAY,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE;AACtD,IAAI,IAAI,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC;AACjD,IAAI,IAAI,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;AACjE,IAAI,kBAAkB,CAAC,iBAAiB,GAAG,YAAY;AACvD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,MAAM,GAAG,qBAAqB,EAAE,CAAC;AAC7C,QAAQ,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,cAAc,EAAE;AACpD,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,MAAM,EAAE;AACpB,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,gBAAgB,MAAM,EAAE,KAAK;AAC7B,gBAAgB,OAAO,EAAE,UAAU,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;AACxE,gBAAgB,MAAM,EAAE,MAAM;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY;AAC/C,YAAY,IAAI,iBAAiB,EAAE;AACnC,gBAAgB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,CAAC;;ICbW;AAAZ,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;MAqBY,QAAQ,GAAG,CACtB,SAAsC,EACtC,KAA8B,KAC3B,YAAY,CAAC,SAAS,EAAE,KAAK;;;;","names":[],"sources":["../../node_modules/.pnpm/stencil-wormhole@3.2.1_@stencil+core@4.27.2/node_modules/stencil-wormhole/dist/esm/deferred.js","../../node_modules/.pnpm/stencil-wormhole@3.2.1_@stencil+core@4.27.2/node_modules/stencil-wormhole/dist/esm/consumer.js","src/components/algolia/algolia-data.ts"],"sourcesContent":["export var createDeferredPromise = function () {\n var resolve;\n var promise = new Promise(function (res) { resolve = res; });\n return { promise: promise, resolve: resolve };\n};\n","import { getElement } from \"@stencil/core\";\nimport { createDeferredPromise } from \"./deferred\";\nexport var openWormhole = function (Component, props) {\n var ComponentPrototype = Component.prototype;\n var componentWillLoad = ComponentPrototype.componentWillLoad;\n ComponentPrototype.componentWillLoad = function () {\n var _this = this;\n var el = getElement(this);\n var onOpen = createDeferredPromise();\n var event = new CustomEvent('openWormhole', {\n bubbles: true,\n composed: true,\n detail: {\n consumer: this,\n fields: props,\n updater: function (prop, value) { _this[prop] = value; },\n onOpen: onOpen,\n },\n });\n el.dispatchEvent(event);\n return onOpen.promise.then(function () {\n if (componentWillLoad) {\n return componentWillLoad.call(_this);\n }\n });\n };\n};\n","import {\n openWormhole,\n type WormholeConsumerConstructor,\n} from 'stencil-wormhole';\nimport type { SearchIndex as AlgoliaIndex } from 'algoliasearch';\nimport type { StorageMethods } from '../../utils/store/component-store';\n\nimport type {\n IndexResult,\n AlgoliaResultHit,\n SearchIndex,\n} from './algolia-interface';\n\nexport enum SearchChangeEvent {\n Filter = 'filter',\n Page = 'page',\n Replica = 'replica',\n Init = 'init',\n}\n\nexport interface WormholeState {\n indexResults: IndexResult;\n filterChanged?: string;\n facets?: {\n [prop: string]: {\n [prop: string]: number;\n };\n };\n results: AlgoliaResultHit[];\n resultsPage: number;\n tplRenderFn?: (...args: any[]) => any;\n changeEvent: SearchChangeEvent;\n algoliaIndex: AlgoliaIndex;\n searchIndex: SearchIndex;\n browseIndex: boolean;\n globalStoreMethod: StorageMethods;\n isLoading: boolean;\n}\n\nexport const Wormhole = (\n Component: WormholeConsumerConstructor,\n props: (keyof WormholeState)[]\n) => openWormhole(Component, props);\n\nexport * from 'stencil-wormhole';\n"],"version":3}
1
+ {"file":"algolia-data-f0f72f1d.js","mappings":";;;;;AAAO,IAAI,qBAAqB,GAAG,YAAY;AAC/C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjE,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;;ACFM,IAAI,YAAY,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE;AACtD,IAAI,IAAI,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC;AACjD,IAAI,IAAI,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;AACjE,IAAI,kBAAkB,CAAC,iBAAiB,GAAG,YAAY;AACvD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,MAAM,GAAG,qBAAqB,EAAE,CAAC;AAC7C,QAAQ,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,cAAc,EAAE;AACpD,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,MAAM,EAAE;AACpB,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,gBAAgB,MAAM,EAAE,KAAK;AAC7B,gBAAgB,OAAO,EAAE,UAAU,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;AACxE,gBAAgB,MAAM,EAAE,MAAM;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY;AAC/C,YAAY,IAAI,iBAAiB,EAAE;AACnC,gBAAgB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,CAAC;;ICbW;AAAZ,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;MAqBY,QAAQ,GAAG,CACtB,SAAsC,EACtC,KAA8B,KAC3B,YAAY,CAAC,SAAS,EAAE,KAAK;;;;","names":[],"sources":["../../node_modules/.pnpm/stencil-wormhole@3.2.1_@stencil+core@4.27.2/node_modules/stencil-wormhole/dist/esm/deferred.js","../../node_modules/.pnpm/stencil-wormhole@3.2.1_@stencil+core@4.27.2/node_modules/stencil-wormhole/dist/esm/consumer.js","src/components/algolia/algolia-data.ts"],"sourcesContent":["export var createDeferredPromise = function () {\n var resolve;\n var promise = new Promise(function (res) { resolve = res; });\n return { promise: promise, resolve: resolve };\n};\n","import { getElement } from \"@stencil/core\";\nimport { createDeferredPromise } from \"./deferred\";\nexport var openWormhole = function (Component, props) {\n var ComponentPrototype = Component.prototype;\n var componentWillLoad = ComponentPrototype.componentWillLoad;\n ComponentPrototype.componentWillLoad = function () {\n var _this = this;\n var el = getElement(this);\n var onOpen = createDeferredPromise();\n var event = new CustomEvent('openWormhole', {\n bubbles: true,\n composed: true,\n detail: {\n consumer: this,\n fields: props,\n updater: function (prop, value) { _this[prop] = value; },\n onOpen: onOpen,\n },\n });\n el.dispatchEvent(event);\n return onOpen.promise.then(function () {\n if (componentWillLoad) {\n return componentWillLoad.call(_this);\n }\n });\n };\n};\n","import {\n openWormhole,\n type WormholeConsumerConstructor,\n} from 'stencil-wormhole';\nimport type { SearchIndex as AlgoliaIndex } from 'algoliasearch';\nimport type { StorageMethods } from '../../utils/store/component-store';\n\nimport type {\n IndexResult,\n AlgoliaResultHit,\n SearchIndex,\n} from './algolia-interface';\n\nexport enum SearchChangeEvent {\n Filter = 'filter',\n Page = 'page',\n Replica = 'replica',\n Init = 'init',\n}\n\nexport interface WormholeState {\n indexResults: IndexResult;\n filterChanged?: string;\n facets?: {\n [prop: string]: {\n [prop: string]: number;\n };\n };\n results: AlgoliaResultHit[];\n resultsPage: number;\n tplRenderFn?: (...args: any[]) => any;\n changeEvent: SearchChangeEvent;\n algoliaIndex: AlgoliaIndex;\n searchIndex: SearchIndex;\n browseIndex: boolean;\n globalStoreMethod: StorageMethods;\n isLoading: boolean;\n}\n\nexport const Wormhole = (\n Component: WormholeConsumerConstructor,\n props: (keyof WormholeState)[]\n) => openWormhole(Component, props);\n\nexport * from 'stencil-wormhole';\n"],"version":3}
@@ -0,0 +1,39 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ const appGlobalScript = async () => {
5
+ if (globalThis.window &&
6
+ 'MutationObserver' in globalThis.window &&
7
+ globalThis['document']) {
8
+ // fire global 'ready' event when everything is hydrated
9
+ const docEle = document.documentElement;
10
+ window.addEventListener('appload', () => {
11
+ docEle.classList.add('hydrated');
12
+ });
13
+ const docIsReady = () => {
14
+ if (!docEle.classList.contains('hydrated'))
15
+ return false;
16
+ docEle.dispatchEvent(new CustomEvent('nanoComponentsReady'));
17
+ return true;
18
+ };
19
+ if (!docIsReady()) {
20
+ let mutationO = new MutationObserver((_) => {
21
+ if (!docIsReady())
22
+ return;
23
+ mutationO.disconnect();
24
+ mutationO = null;
25
+ });
26
+ mutationO.observe(docEle, {
27
+ childList: false,
28
+ subtree: false,
29
+ attributes: true,
30
+ });
31
+ }
32
+ }
33
+ };
34
+
35
+ const globalScripts = appGlobalScript;
36
+
37
+ export { globalScripts as g };
38
+
39
+ //# sourceMappingURL=app-globals-f0120bbe.js.map
@@ -0,0 +1 @@
1
+ {"file":"app-globals-f0120bbe.js","mappings":";;;AAAA,wBAAe;IACb,IACE,UAAU,CAAC,MAAM;QACjB,kBAAkB,IAAI,UAAU,CAAC,MAAM;QACvC,UAAU,CAAC,UAAU,CAAC,EACtB;;QAGA,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe;QAEvC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE;YACjC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;SACjC,CAAC;QAEF,MAAM,UAAU,GAAG;YACjB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,KAAK;YACxD,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC5D,OAAO,IAAI;SACZ;QAED,IAAI,CAAC,UAAU,EAAE,EAAE;YACjB,IAAI,SAAS,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,UAAU,EAAE;oBAAE;gBAEnB,SAAS,CAAC,UAAU,EAAE;gBACtB,SAAS,GAAG,IAAI;aACjB,CAAC;YAEF,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;gBACxB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,IAAI;aACjB,CAAC;;;AAGR,CAAC;;AClCW,MAAC,aAAa,GAAG;;;;","names":[],"sources":["src/global/script/global.ts","@stencil/core/internal/app-globals"],"sourcesContent":["export default async () => {\n if (\n globalThis.window &&\n 'MutationObserver' in globalThis.window &&\n globalThis['document']\n ) {\n // fire global 'ready' event when everything is hydrated\n\n const docEle = document.documentElement;\n\n window.addEventListener('appload', () => {\n docEle.classList.add('hydrated');\n });\n\n const docIsReady = () => {\n if (!docEle.classList.contains('hydrated')) return false;\n docEle.dispatchEvent(new CustomEvent('nanoComponentsReady'));\n return true;\n };\n\n if (!docIsReady()) {\n let mutationO = new MutationObserver((_) => {\n if (!docIsReady()) return;\n\n mutationO.disconnect();\n mutationO = null;\n });\n\n mutationO.observe(docEle, {\n childList: false,\n subtree: false,\n attributes: true,\n });\n }\n }\n};\n","import appGlobalScript from '/builds/Te2fj7s-/0/Digital/nano-components/packages/components/src/global/script/global.ts';\nexport const globalScripts = appGlobalScript;\n"],"version":3}