@nanoporetech-digital/components 2.9.0 → 2.10.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 (473) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/{algoliasearch.umd-dcf18a4a.js → algoliasearch.umd-7ee60729.js} +3 -3
  3. package/dist/cjs/{algoliasearch.umd-dcf18a4a.js.map → algoliasearch.umd-7ee60729.js.map} +1 -1
  4. package/dist/cjs/{component-store-722032a5.js → component-store-19844199.js} +37 -25
  5. package/dist/cjs/component-store-19844199.js.map +1 -0
  6. package/dist/cjs/index-cb62df44.js +5 -0
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/nano-algolia-filter.cjs.entry.js +1 -1
  9. package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
  10. package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
  11. package/dist/cjs/nano-checkbox-group.cjs.entry.js +58 -20
  12. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nano-checkbox.cjs.entry.js +27 -15
  14. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-components.cjs.js +1 -1
  16. package/dist/cjs/nano-date-input.cjs.entry.js +17 -4
  17. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nano-dialog.cjs.entry.js +13 -2
  19. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-field-validator.cjs.entry.js +529 -0
  21. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -0
  22. package/dist/cjs/nano-file-upload.cjs.entry.js +59 -36
  23. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
  25. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nano-input.cjs.entry.js +25 -13
  27. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-nav-item_2.cjs.entry.js +40 -15
  29. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-sticker.cjs.entry.js +2 -2
  31. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
  33. package/dist/collection/collection-manifest.json +2 -1
  34. package/dist/collection/components/accordion/accordion.js +1 -1
  35. package/dist/collection/components/alert/alert.js +1 -1
  36. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  37. package/dist/collection/components/algolia/algolia-input.js +5 -5
  38. package/dist/collection/components/algolia/algolia-results.js +1 -1
  39. package/dist/collection/components/algolia/algolia.js +6 -6
  40. package/dist/collection/components/checkbox/checkbox-group.css +5 -5
  41. package/dist/collection/components/checkbox/checkbox-group.js +119 -25
  42. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  43. package/dist/collection/components/checkbox/checkbox.css +1 -1
  44. package/dist/collection/components/checkbox/checkbox.js +83 -22
  45. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  46. package/dist/collection/components/datalist/datalist.js +1 -1
  47. package/dist/collection/components/date-input/date-input.js +44 -12
  48. package/dist/collection/components/date-input/date-input.js.map +1 -1
  49. package/dist/collection/components/date-picker/date-picker.js +5 -5
  50. package/dist/collection/components/details/details.js +1 -1
  51. package/dist/collection/components/dialog/dialog.js +34 -1
  52. package/dist/collection/components/dialog/dialog.js.map +1 -1
  53. package/dist/collection/components/dropdown/dropdown.js +1 -1
  54. package/dist/collection/components/field-validator/field-validator.js +577 -0
  55. package/dist/collection/components/field-validator/field-validator.js.map +1 -0
  56. package/dist/collection/components/file-upload/file-upload.css +17 -5
  57. package/dist/collection/components/file-upload/file-upload.js +111 -44
  58. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  59. package/dist/collection/components/global-nav/global-nav.js +4 -4
  60. package/dist/collection/components/grid/grid-item.js +1 -1
  61. package/dist/collection/components/icon/icon.js +2 -2
  62. package/dist/collection/components/icon/icon.js.map +1 -1
  63. package/dist/collection/components/input/input.css +2 -2
  64. package/dist/collection/components/input/input.js +51 -22
  65. package/dist/collection/components/input/input.js.map +1 -1
  66. package/dist/collection/components/nav-item/nav-item.js +4 -4
  67. package/dist/collection/components/range/range.js +4 -4
  68. package/dist/collection/components/resize-observe/resize-observe.js +1 -1
  69. package/dist/collection/components/select/select.css +2 -2
  70. package/dist/collection/components/select/select.js +74 -25
  71. package/dist/collection/components/select/select.js.map +1 -1
  72. package/dist/collection/components/slides/slides.js +7 -7
  73. package/dist/collection/components/{sticky → sticker}/sticker.css +0 -0
  74. package/dist/collection/components/{sticky → sticker}/sticker.js +2 -2
  75. package/dist/collection/components/sticker/sticker.js.map +1 -0
  76. package/dist/collection/components/tabs/tab-group.js +2 -2
  77. package/dist/collection/utils/store/component-store.js +4 -13
  78. package/dist/collection/utils/store/component-store.js.map +1 -1
  79. package/dist/collection/utils/store/get-set.js +15 -1
  80. package/dist/collection/utils/store/get-set.js.map +1 -1
  81. package/dist/components/algoliasearch.umd.js +2 -2
  82. package/dist/components/algoliasearch.umd.js.map +1 -1
  83. package/dist/components/component-store.js +36 -24
  84. package/dist/components/component-store.js.map +1 -1
  85. package/dist/components/icon.js.map +1 -1
  86. package/dist/components/input.js +27 -14
  87. package/dist/components/input.js.map +1 -1
  88. package/dist/components/nano-checkbox-group.js +62 -21
  89. package/dist/components/nano-checkbox-group.js.map +1 -1
  90. package/dist/components/nano-checkbox.js +31 -17
  91. package/dist/components/nano-checkbox.js.map +1 -1
  92. package/dist/components/nano-date-input.js +18 -4
  93. package/dist/components/nano-date-input.js.map +1 -1
  94. package/dist/components/nano-dialog.js +13 -1
  95. package/dist/components/nano-dialog.js.map +1 -1
  96. package/dist/components/nano-field-validator.d.ts +11 -0
  97. package/dist/components/nano-field-validator.js +557 -0
  98. package/dist/components/nano-field-validator.js.map +1 -0
  99. package/dist/components/nano-file-upload.js +62 -37
  100. package/dist/components/nano-file-upload.js.map +1 -1
  101. package/dist/components/select.js +44 -17
  102. package/dist/components/select.js.map +1 -1
  103. package/dist/components/sticker.js +2 -2
  104. package/dist/components/sticker.js.map +1 -1
  105. package/dist/custom-elements/index.d.ts +6 -0
  106. package/dist/custom-elements/index.js +2436 -554
  107. package/dist/custom-elements/index.js.map +1 -1
  108. package/dist/esm/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
  109. package/dist/esm/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +1 -1
  110. package/dist/esm/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
  111. package/dist/esm/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
  112. package/dist/esm/{component-store-b6fbfa35.js → component-store-d238fee4.js} +38 -26
  113. package/dist/esm/component-store-d238fee4.js.map +1 -0
  114. package/dist/esm/{form-control-cf23c6a2.js → form-control-ad05507c.js} +2 -2
  115. package/dist/esm/{form-control-cf23c6a2.js.map → form-control-ad05507c.js.map} +1 -1
  116. package/dist/esm/{index-5f8d16e7.js → index-c42becad.js} +7 -2
  117. package/dist/esm/{index-5f8d16e7.js.map → index-c42becad.js.map} +1 -1
  118. package/dist/esm/loader.js +2 -2
  119. package/dist/esm/nano-accordion.entry.js +1 -1
  120. package/dist/esm/nano-alert.entry.js +1 -1
  121. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  122. package/dist/esm/nano-algolia-input.entry.js +4 -4
  123. package/dist/esm/nano-algolia-pagination.entry.js +2 -2
  124. package/dist/esm/nano-algolia-results.entry.js +2 -2
  125. package/dist/esm/nano-algolia.entry.js +4 -4
  126. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  127. package/dist/esm/nano-checkbox-group.entry.js +59 -21
  128. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  129. package/dist/esm/nano-checkbox.entry.js +28 -16
  130. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  131. package/dist/esm/nano-components.js +2 -2
  132. package/dist/esm/nano-datalist_3.entry.js +1 -1
  133. package/dist/esm/nano-date-input.entry.js +18 -5
  134. package/dist/esm/nano-date-input.entry.js.map +1 -1
  135. package/dist/esm/nano-date-picker.entry.js +1 -1
  136. package/dist/esm/nano-details.entry.js +1 -1
  137. package/dist/esm/nano-dialog.entry.js +14 -3
  138. package/dist/esm/nano-dialog.entry.js.map +1 -1
  139. package/dist/esm/nano-drawer.entry.js +1 -1
  140. package/dist/esm/nano-dropdown.entry.js +1 -1
  141. package/dist/esm/nano-field-validator.entry.js +525 -0
  142. package/dist/esm/nano-field-validator.entry.js.map +1 -0
  143. package/dist/esm/nano-file-upload.entry.js +60 -37
  144. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  145. package/dist/esm/nano-global-nav.entry.js +3 -3
  146. package/dist/esm/nano-global-search-results.entry.js +1 -1
  147. package/dist/esm/nano-grid_3.entry.js +1 -1
  148. package/dist/esm/nano-hero.entry.js +1 -1
  149. package/dist/esm/nano-icon-button.entry.js +1 -1
  150. package/dist/esm/nano-icon.entry.js +1 -1
  151. package/dist/esm/nano-icon.entry.js.map +1 -1
  152. package/dist/esm/nano-input.entry.js +28 -16
  153. package/dist/esm/nano-input.entry.js.map +1 -1
  154. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  155. package/dist/esm/nano-nav-item_2.entry.js +43 -18
  156. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  157. package/dist/esm/nano-range.entry.js +1 -1
  158. package/dist/esm/nano-rating.entry.js +1 -1
  159. package/dist/esm/nano-resize-observe_2.entry.js +1 -1
  160. package/dist/esm/nano-slide.entry.js +1 -1
  161. package/dist/esm/nano-slides.entry.js +1 -1
  162. package/dist/esm/nano-spinner.entry.js +1 -1
  163. package/dist/esm/nano-split-pane.entry.js +1 -1
  164. package/dist/esm/nano-sticker.entry.js +3 -3
  165. package/dist/esm/nano-sticker.entry.js.map +1 -1
  166. package/dist/esm/nano-tab-content.entry.js +1 -1
  167. package/dist/esm/nano-tab-group.entry.js +2 -2
  168. package/dist/esm/nano-tab.entry.js +1 -1
  169. package/dist/esm/nano-tooltip.entry.js +1 -1
  170. package/dist/esm-es5/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
  171. package/dist/esm-es5/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +0 -0
  172. package/dist/esm-es5/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
  173. package/dist/esm-es5/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
  174. package/dist/esm-es5/component-store-d238fee4.js +5 -0
  175. package/dist/esm-es5/component-store-d238fee4.js.map +1 -0
  176. package/dist/esm-es5/{form-control-cf23c6a2.js → form-control-ad05507c.js} +2 -2
  177. package/dist/esm-es5/{form-control-cf23c6a2.js.map → form-control-ad05507c.js.map} +0 -0
  178. package/dist/esm-es5/{index-5f8d16e7.js → index-c42becad.js} +2 -2
  179. package/dist/esm-es5/{index-5f8d16e7.js.map → index-c42becad.js.map} +0 -0
  180. package/dist/esm-es5/loader.js +1 -1
  181. package/dist/esm-es5/loader.js.map +1 -1
  182. package/dist/esm-es5/nano-accordion.entry.js +1 -1
  183. package/dist/esm-es5/nano-alert.entry.js +1 -1
  184. package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
  185. package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
  186. package/dist/esm-es5/nano-algolia-pagination.entry.js +1 -1
  187. package/dist/esm-es5/nano-algolia-results.entry.js +1 -1
  188. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  189. package/dist/esm-es5/nano-aspect-ratio.entry.js +1 -1
  190. package/dist/esm-es5/nano-checkbox-group.entry.js +2 -2
  191. package/dist/esm-es5/nano-checkbox-group.entry.js.map +1 -1
  192. package/dist/esm-es5/nano-checkbox.entry.js +1 -1
  193. package/dist/esm-es5/nano-checkbox.entry.js.map +1 -1
  194. package/dist/esm-es5/nano-components.js +1 -1
  195. package/dist/esm-es5/nano-components.js.map +1 -1
  196. package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
  197. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  198. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  199. package/dist/esm-es5/nano-date-picker.entry.js +1 -1
  200. package/dist/esm-es5/nano-details.entry.js +1 -1
  201. package/dist/esm-es5/nano-dialog.entry.js +1 -1
  202. package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
  203. package/dist/esm-es5/nano-drawer.entry.js +1 -1
  204. package/dist/esm-es5/nano-dropdown.entry.js +1 -1
  205. package/dist/esm-es5/nano-field-validator.entry.js +5 -0
  206. package/dist/esm-es5/nano-field-validator.entry.js.map +1 -0
  207. package/dist/esm-es5/nano-file-upload.entry.js +2 -2
  208. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  209. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  210. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  211. package/dist/esm-es5/nano-grid_3.entry.js +1 -1
  212. package/dist/esm-es5/nano-hero.entry.js +1 -1
  213. package/dist/esm-es5/nano-icon-button.entry.js +1 -1
  214. package/dist/esm-es5/nano-icon.entry.js +1 -1
  215. package/dist/esm-es5/nano-icon.entry.js.map +1 -1
  216. package/dist/esm-es5/nano-input.entry.js +1 -1
  217. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  218. package/dist/esm-es5/nano-menu-drawer.entry.js +1 -1
  219. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  220. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  221. package/dist/esm-es5/nano-range.entry.js +1 -1
  222. package/dist/esm-es5/nano-rating.entry.js +1 -1
  223. package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
  224. package/dist/esm-es5/nano-slide.entry.js +1 -1
  225. package/dist/esm-es5/nano-slides.entry.js +1 -1
  226. package/dist/esm-es5/nano-spinner.entry.js +1 -1
  227. package/dist/esm-es5/nano-split-pane.entry.js +1 -1
  228. package/dist/esm-es5/nano-sticker.entry.js +1 -1
  229. package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
  230. package/dist/esm-es5/nano-tab-content.entry.js +1 -1
  231. package/dist/esm-es5/nano-tab-group.entry.js +1 -1
  232. package/dist/esm-es5/nano-tab.entry.js +2 -2
  233. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  234. package/dist/nano-components/nano-components.css +1 -1
  235. package/dist/nano-components/nano-components.esm.js +1 -1
  236. package/dist/nano-components/nano-components.esm.js.map +1 -1
  237. package/dist/nano-components/nano-components.js +1 -1
  238. package/dist/nano-components/{p-6f94d755.entry.js → p-00eaa36a.entry.js} +2 -2
  239. package/dist/nano-components/{p-6f94d755.entry.js.map → p-00eaa36a.entry.js.map} +0 -0
  240. package/dist/nano-components/{p-4429caac.system.entry.js → p-0c6c2141.system.entry.js} +2 -2
  241. package/dist/nano-components/{p-4429caac.system.entry.js.map → p-0c6c2141.system.entry.js.map} +0 -0
  242. package/dist/nano-components/{p-7232c046.system.entry.js → p-0d0dfc06.system.entry.js} +2 -2
  243. package/dist/nano-components/{p-7232c046.system.entry.js.map → p-0d0dfc06.system.entry.js.map} +0 -0
  244. package/dist/nano-components/{p-e562bffd.entry.js → p-0e2e3f4a.entry.js} +2 -2
  245. package/dist/nano-components/{p-e562bffd.entry.js.map → p-0e2e3f4a.entry.js.map} +0 -0
  246. package/dist/nano-components/{p-56ba0d63.entry.js → p-1030797a.entry.js} +2 -2
  247. package/dist/nano-components/{p-56ba0d63.entry.js.map → p-1030797a.entry.js.map} +0 -0
  248. package/dist/nano-components/p-11451a4b.system.entry.js +5 -0
  249. package/dist/nano-components/p-11451a4b.system.entry.js.map +1 -0
  250. package/dist/nano-components/p-129e2b4b.system.js +5 -0
  251. package/dist/nano-components/p-129e2b4b.system.js.map +1 -0
  252. package/dist/nano-components/{p-c0ddb4c3.entry.js → p-166ade3e.entry.js} +2 -2
  253. package/dist/nano-components/{p-c0ddb4c3.entry.js.map → p-166ade3e.entry.js.map} +0 -0
  254. package/dist/nano-components/{p-5653961d.system.entry.js → p-1a30dfdd.system.entry.js} +2 -2
  255. package/dist/nano-components/p-1a30dfdd.system.entry.js.map +1 -0
  256. package/dist/nano-components/p-1b120f53.entry.js +5 -0
  257. package/dist/nano-components/p-1b120f53.entry.js.map +1 -0
  258. package/dist/nano-components/{p-7d351076.system.entry.js → p-21af2a5e.system.entry.js} +2 -2
  259. package/dist/nano-components/{p-7d351076.system.entry.js.map → p-21af2a5e.system.entry.js.map} +0 -0
  260. package/dist/nano-components/{p-346588cc.entry.js → p-222d8095.entry.js} +2 -2
  261. package/dist/nano-components/{p-346588cc.entry.js.map → p-222d8095.entry.js.map} +0 -0
  262. package/dist/nano-components/{p-933c35a6.system.entry.js → p-241d90eb.system.entry.js} +2 -2
  263. package/dist/nano-components/{p-933c35a6.system.entry.js.map → p-241d90eb.system.entry.js.map} +0 -0
  264. package/dist/nano-components/{p-040b6cda.entry.js → p-2649fc8e.entry.js} +2 -2
  265. package/dist/nano-components/{p-040b6cda.entry.js.map → p-2649fc8e.entry.js.map} +0 -0
  266. package/dist/nano-components/{p-3456db01.entry.js → p-27efac97.entry.js} +2 -2
  267. package/dist/nano-components/{p-3456db01.entry.js.map → p-27efac97.entry.js.map} +0 -0
  268. package/dist/nano-components/{p-462ad4f1.entry.js → p-2c8d7273.entry.js} +2 -2
  269. package/dist/nano-components/{p-462ad4f1.entry.js.map → p-2c8d7273.entry.js.map} +0 -0
  270. package/dist/nano-components/{p-2e6c55e2.entry.js → p-2d53d1a0.entry.js} +2 -2
  271. package/dist/nano-components/{p-2e6c55e2.entry.js.map → p-2d53d1a0.entry.js.map} +0 -0
  272. package/dist/nano-components/{p-1f99d776.entry.js → p-3093915f.entry.js} +2 -2
  273. package/dist/nano-components/{p-1f99d776.entry.js.map → p-3093915f.entry.js.map} +0 -0
  274. package/dist/nano-components/{p-8a8f893b.system.entry.js → p-316f83a9.system.entry.js} +2 -2
  275. package/dist/nano-components/{p-8a8f893b.system.entry.js.map → p-316f83a9.system.entry.js.map} +0 -0
  276. package/dist/nano-components/{p-7246bef5.entry.js → p-325c1cad.entry.js} +2 -2
  277. package/dist/nano-components/{p-7246bef5.entry.js.map → p-325c1cad.entry.js.map} +0 -0
  278. package/dist/nano-components/{p-ec39b143.system.entry.js → p-32f396c0.system.entry.js} +2 -2
  279. package/dist/nano-components/{p-ec39b143.system.entry.js.map → p-32f396c0.system.entry.js.map} +0 -0
  280. package/dist/nano-components/p-32f4516e.js +5 -0
  281. package/dist/nano-components/p-32f4516e.js.map +1 -0
  282. package/dist/nano-components/{p-43543d18.entry.js → p-333237e8.entry.js} +2 -2
  283. package/dist/nano-components/{p-43543d18.entry.js.map → p-333237e8.entry.js.map} +0 -0
  284. package/dist/nano-components/{p-1e8321ea.entry.js → p-35108e08.entry.js} +2 -2
  285. package/dist/nano-components/{p-1e8321ea.entry.js.map → p-35108e08.entry.js.map} +0 -0
  286. package/dist/nano-components/{p-a898bf92.system.entry.js → p-379e21d9.system.entry.js} +2 -2
  287. package/dist/nano-components/{p-a898bf92.system.entry.js.map → p-379e21d9.system.entry.js.map} +0 -0
  288. package/dist/nano-components/{p-3ad1d5aa.system.entry.js → p-39d36fd1.system.entry.js} +2 -2
  289. package/dist/nano-components/{p-3ad1d5aa.system.entry.js.map → p-39d36fd1.system.entry.js.map} +0 -0
  290. package/dist/nano-components/{p-41a2e2e4.system.js → p-3a00de47.system.js} +2 -2
  291. package/dist/nano-components/{p-41a2e2e4.system.js.map → p-3a00de47.system.js.map} +0 -0
  292. package/dist/nano-components/{p-6afdb510.system.entry.js → p-3ccb176c.system.entry.js} +2 -2
  293. package/dist/nano-components/{p-6afdb510.system.entry.js.map → p-3ccb176c.system.entry.js.map} +0 -0
  294. package/dist/nano-components/{p-08b43111.entry.js → p-3e930ac7.entry.js} +2 -2
  295. package/dist/nano-components/{p-08b43111.entry.js.map → p-3e930ac7.entry.js.map} +0 -0
  296. package/dist/nano-components/{p-d8d8bac6.system.entry.js → p-42cebbfe.system.entry.js} +2 -2
  297. package/dist/nano-components/{p-d8d8bac6.system.entry.js.map → p-42cebbfe.system.entry.js.map} +0 -0
  298. package/dist/nano-components/{p-1ca46443.entry.js → p-45070c8f.entry.js} +2 -2
  299. package/dist/nano-components/{p-1ca46443.entry.js.map → p-45070c8f.entry.js.map} +0 -0
  300. package/dist/nano-components/{p-3ef30ded.system.entry.js → p-48874481.system.entry.js} +2 -2
  301. package/dist/nano-components/{p-3ef30ded.system.entry.js.map → p-48874481.system.entry.js.map} +0 -0
  302. package/dist/nano-components/{p-08ffc9a1.entry.js → p-4e2c0abb.entry.js} +2 -2
  303. package/dist/nano-components/{p-08ffc9a1.entry.js.map → p-4e2c0abb.entry.js.map} +0 -0
  304. package/dist/nano-components/{p-090f22a9.system.entry.js → p-5100ae70.system.entry.js} +2 -2
  305. package/dist/nano-components/{p-090f22a9.system.entry.js.map → p-5100ae70.system.entry.js.map} +0 -0
  306. package/dist/nano-components/{p-593de29b.system.entry.js → p-52769304.system.entry.js} +2 -2
  307. package/dist/nano-components/{p-593de29b.system.entry.js.map → p-52769304.system.entry.js.map} +0 -0
  308. package/dist/nano-components/{p-8278c5d2.system.entry.js → p-56f86047.system.entry.js} +2 -2
  309. package/dist/nano-components/{p-8278c5d2.system.entry.js.map → p-56f86047.system.entry.js.map} +0 -0
  310. package/dist/nano-components/{p-2057d480.system.entry.js → p-5b66bb8f.system.entry.js} +2 -2
  311. package/dist/nano-components/{p-2057d480.system.entry.js.map → p-5b66bb8f.system.entry.js.map} +0 -0
  312. package/dist/nano-components/{p-033296c7.system.entry.js → p-5d17cfbb.system.entry.js} +2 -2
  313. package/dist/nano-components/{p-033296c7.system.entry.js.map → p-5d17cfbb.system.entry.js.map} +0 -0
  314. package/dist/nano-components/{p-88f17c86.system.entry.js → p-5d5ea4ab.system.entry.js} +2 -2
  315. package/dist/nano-components/{p-88f17c86.system.entry.js.map → p-5d5ea4ab.system.entry.js.map} +0 -0
  316. package/dist/nano-components/{p-20387cde.system.entry.js → p-6b4dd158.system.entry.js} +2 -2
  317. package/dist/nano-components/{p-20387cde.system.entry.js.map → p-6b4dd158.system.entry.js.map} +0 -0
  318. package/dist/nano-components/{p-d24811c8.system.js → p-6b5760b1.system.js} +3 -3
  319. package/dist/nano-components/{p-d24811c8.system.js.map → p-6b5760b1.system.js.map} +1 -1
  320. package/dist/nano-components/p-6d138abf.entry.js +5 -0
  321. package/dist/nano-components/p-6d138abf.entry.js.map +1 -0
  322. package/dist/nano-components/{p-5066e563.system.entry.js → p-6dad332b.system.entry.js} +2 -2
  323. package/dist/nano-components/{p-5066e563.system.entry.js.map → p-6dad332b.system.entry.js.map} +0 -0
  324. package/dist/nano-components/{p-730f60ea.entry.js → p-6ddb51e4.entry.js} +2 -2
  325. package/dist/nano-components/p-6ddb51e4.entry.js.map +1 -0
  326. package/dist/nano-components/p-71bbb7ba.entry.js +5 -0
  327. package/dist/nano-components/p-71bbb7ba.entry.js.map +1 -0
  328. package/dist/nano-components/{p-a6c84740.js → p-71e9fa33.js} +2 -2
  329. package/dist/nano-components/{p-a6c84740.js.map → p-71e9fa33.js.map} +0 -0
  330. package/dist/nano-components/{p-39a5280e.system.entry.js → p-72ed603c.system.entry.js} +2 -2
  331. package/dist/nano-components/{p-39a5280e.system.entry.js.map → p-72ed603c.system.entry.js.map} +0 -0
  332. package/dist/nano-components/{p-313970ff.entry.js → p-73985eda.entry.js} +2 -2
  333. package/dist/nano-components/{p-313970ff.entry.js.map → p-73985eda.entry.js.map} +0 -0
  334. package/dist/nano-components/{p-58d7f10f.entry.js → p-76c903db.entry.js} +2 -2
  335. package/dist/nano-components/{p-58d7f10f.entry.js.map → p-76c903db.entry.js.map} +0 -0
  336. package/dist/nano-components/{p-3aa1d07d.entry.js → p-76d9d1d4.entry.js} +2 -2
  337. package/dist/nano-components/p-76d9d1d4.entry.js.map +1 -0
  338. package/dist/nano-components/{p-f53989c3.system.entry.js → p-7aa7425d.system.entry.js} +2 -2
  339. package/dist/nano-components/{p-f53989c3.system.entry.js.map → p-7aa7425d.system.entry.js.map} +1 -1
  340. package/dist/nano-components/{p-531d5275.system.entry.js → p-7ad4a27a.system.entry.js} +2 -2
  341. package/dist/nano-components/p-7ad4a27a.system.entry.js.map +1 -0
  342. package/dist/nano-components/{p-2ae4918d.system.entry.js → p-7e55b214.system.entry.js} +2 -2
  343. package/dist/nano-components/{p-2ae4918d.system.entry.js.map → p-7e55b214.system.entry.js.map} +0 -0
  344. package/dist/nano-components/{p-62ecd3a1.system.entry.js → p-7f1374b6.system.entry.js} +2 -2
  345. package/dist/nano-components/{p-62ecd3a1.system.entry.js.map → p-7f1374b6.system.entry.js.map} +0 -0
  346. package/dist/nano-components/{p-1e974cad.entry.js → p-7fe9d769.entry.js} +2 -2
  347. package/dist/nano-components/{p-1e974cad.entry.js.map → p-7fe9d769.entry.js.map} +0 -0
  348. package/dist/nano-components/p-85c8b070.system.entry.js +5 -0
  349. package/dist/nano-components/p-85c8b070.system.entry.js.map +1 -0
  350. package/dist/nano-components/{p-f2e7d2f9.system.entry.js → p-88779174.system.entry.js} +2 -2
  351. package/dist/nano-components/{p-f2e7d2f9.system.entry.js.map → p-88779174.system.entry.js.map} +0 -0
  352. package/dist/nano-components/{p-4535e3bb.entry.js → p-8b6fcd6d.entry.js} +2 -2
  353. package/dist/nano-components/{p-4535e3bb.entry.js.map → p-8b6fcd6d.entry.js.map} +0 -0
  354. package/dist/nano-components/{p-6ade3290.entry.js → p-8eb4f24a.entry.js} +2 -2
  355. package/dist/nano-components/{p-6ade3290.entry.js.map → p-8eb4f24a.entry.js.map} +0 -0
  356. package/dist/nano-components/{p-07bdf44d.entry.js → p-8fe2f846.entry.js} +2 -2
  357. package/dist/nano-components/{p-07bdf44d.entry.js.map → p-8fe2f846.entry.js.map} +0 -0
  358. package/dist/nano-components/p-96150b2c.system.entry.js +5 -0
  359. package/dist/nano-components/p-96150b2c.system.entry.js.map +1 -0
  360. package/dist/nano-components/{p-bcd69559.entry.js → p-97b13ad2.entry.js} +2 -2
  361. package/dist/nano-components/{p-bcd69559.entry.js.map → p-97b13ad2.entry.js.map} +0 -0
  362. package/dist/nano-components/{p-c9c1a345.system.entry.js → p-a02cc654.system.entry.js} +2 -2
  363. package/dist/nano-components/{p-c9c1a345.system.entry.js.map → p-a02cc654.system.entry.js.map} +0 -0
  364. package/dist/nano-components/{p-a77e3fbb.js → p-a0b93616.js} +3 -3
  365. package/dist/nano-components/{p-a77e3fbb.js.map → p-a0b93616.js.map} +1 -1
  366. package/dist/nano-components/p-a4969844.entry.js +5 -0
  367. package/dist/nano-components/p-a4969844.entry.js.map +1 -0
  368. package/dist/nano-components/{p-70dec19f.entry.js → p-a6327a9a.entry.js} +2 -2
  369. package/dist/nano-components/{p-70dec19f.entry.js.map → p-a6327a9a.entry.js.map} +0 -0
  370. package/dist/nano-components/p-a81db037.entry.js +5 -0
  371. package/dist/nano-components/p-a81db037.entry.js.map +1 -0
  372. package/dist/nano-components/{p-a315ed2c.entry.js → p-a9a4fc3e.entry.js} +2 -2
  373. package/dist/nano-components/{p-a315ed2c.entry.js.map → p-a9a4fc3e.entry.js.map} +1 -1
  374. package/dist/nano-components/{p-98222c39.system.entry.js → p-ab07c1fa.system.entry.js} +2 -2
  375. package/dist/nano-components/{p-98222c39.system.entry.js.map → p-ab07c1fa.system.entry.js.map} +0 -0
  376. package/dist/nano-components/{p-ab5813a7.js → p-b5c33aff.js} +2 -2
  377. package/dist/nano-components/{p-ab5813a7.js.map → p-b5c33aff.js.map} +0 -0
  378. package/dist/nano-components/p-bc394857.system.entry.js +5 -0
  379. package/dist/nano-components/p-bc394857.system.entry.js.map +1 -0
  380. package/dist/nano-components/{p-b4f8e541.entry.js → p-bce998f2.entry.js} +2 -2
  381. package/dist/nano-components/{p-b4f8e541.entry.js.map → p-bce998f2.entry.js.map} +0 -0
  382. package/dist/nano-components/{p-92f85aaf.system.entry.js → p-bf9aa89d.system.entry.js} +2 -2
  383. package/dist/nano-components/{p-92f85aaf.system.entry.js.map → p-bf9aa89d.system.entry.js.map} +0 -0
  384. package/dist/nano-components/p-c070ffd3.system.entry.js +5 -0
  385. package/dist/nano-components/p-c070ffd3.system.entry.js.map +1 -0
  386. package/dist/nano-components/{p-50514e5e.entry.js → p-c4156fea.entry.js} +2 -2
  387. package/dist/nano-components/{p-50514e5e.entry.js.map → p-c4156fea.entry.js.map} +0 -0
  388. package/dist/nano-components/p-c9a2d24c.entry.js +5 -0
  389. package/dist/nano-components/p-c9a2d24c.entry.js.map +1 -0
  390. package/dist/nano-components/{p-6eb25600.system.js → p-d01bd3c3.system.js} +2 -2
  391. package/dist/nano-components/{p-6eb25600.system.js.map → p-d01bd3c3.system.js.map} +0 -0
  392. package/dist/nano-components/{p-1238f0fc.system.entry.js → p-d0385948.system.entry.js} +2 -2
  393. package/dist/nano-components/{p-1238f0fc.system.entry.js.map → p-d0385948.system.entry.js.map} +0 -0
  394. package/dist/nano-components/{p-b59d2bd5.entry.js → p-d122b1ff.entry.js} +2 -2
  395. package/dist/nano-components/{p-b59d2bd5.entry.js.map → p-d122b1ff.entry.js.map} +0 -0
  396. package/dist/nano-components/{p-394c3c19.entry.js → p-defd4552.entry.js} +2 -2
  397. package/dist/nano-components/{p-394c3c19.entry.js.map → p-defd4552.entry.js.map} +0 -0
  398. package/dist/nano-components/p-e7140887.system.js +5 -0
  399. package/dist/nano-components/p-e7140887.system.js.map +1 -0
  400. package/dist/nano-components/{p-69439aa1.system.entry.js → p-e817ab4a.system.entry.js} +2 -2
  401. package/dist/nano-components/{p-69439aa1.system.entry.js.map → p-e817ab4a.system.entry.js.map} +0 -0
  402. package/dist/nano-components/{p-22884654.system.entry.js → p-eacf5b5b.system.entry.js} +2 -2
  403. package/dist/nano-components/{p-22884654.system.entry.js.map → p-eacf5b5b.system.entry.js.map} +0 -0
  404. package/dist/nano-components/p-ed336501.entry.js +5 -0
  405. package/dist/nano-components/p-ed336501.entry.js.map +1 -0
  406. package/dist/nano-components/{p-5ae80fd7.js → p-ef7f1e9c.js} +2 -2
  407. package/dist/nano-components/{p-5ae80fd7.js.map → p-ef7f1e9c.js.map} +0 -0
  408. package/dist/nano-components/{p-59b3d24b.system.js → p-f48be9f5.system.js} +2 -2
  409. package/dist/nano-components/{p-59b3d24b.system.js.map → p-f48be9f5.system.js.map} +0 -0
  410. package/dist/nano-components/p-f710c763.system.entry.js +5 -0
  411. package/dist/nano-components/p-f710c763.system.entry.js.map +1 -0
  412. package/dist/nano-components/{p-65c10b3f.entry.js → p-fbe3c89e.entry.js} +2 -2
  413. package/dist/nano-components/{p-65c10b3f.entry.js.map → p-fbe3c89e.entry.js.map} +0 -0
  414. package/dist/nano-components/p-fc3702a0.system.entry.js +5 -0
  415. package/dist/nano-components/p-fc3702a0.system.entry.js.map +1 -0
  416. package/dist/nano-components/{p-ba13bb56.entry.js → p-ffc2063a.entry.js} +2 -2
  417. package/dist/nano-components/{p-ba13bb56.entry.js.map → p-ffc2063a.entry.js.map} +0 -0
  418. package/dist/nano-components/{p-4870e76d.system.entry.js → p-fff27907.system.entry.js} +2 -2
  419. package/dist/nano-components/{p-4870e76d.system.entry.js.map → p-fff27907.system.entry.js.map} +0 -0
  420. package/dist/types/components/checkbox/checkbox-group.d.ts +12 -1
  421. package/dist/types/components/checkbox/checkbox.d.ts +11 -3
  422. package/dist/types/components/date-input/date-input.d.ts +4 -0
  423. package/dist/types/components/dialog/dialog.d.ts +4 -1
  424. package/dist/types/components/field-validator/field-validator.d.ts +125 -0
  425. package/dist/types/components/file-upload/file-upload.d.ts +8 -0
  426. package/dist/types/components/icon/icon.d.ts +1 -1
  427. package/dist/types/components/input/input.d.ts +6 -1
  428. package/dist/types/components/select/select.d.ts +7 -1
  429. package/dist/types/components/{sticky → sticker}/sticker.d.ts +0 -0
  430. package/dist/types/components.d.ts +187 -4
  431. package/dist/types/utils/store/get-set.d.ts +1 -1
  432. package/docs-json.json +436 -14
  433. package/docs-vscode.json +77 -1
  434. package/package.json +3 -2
  435. package/dist/cjs/component-store-722032a5.js.map +0 -1
  436. package/dist/collection/components/sticky/sticker.js.map +0 -1
  437. package/dist/esm/component-store-b6fbfa35.js.map +0 -1
  438. package/dist/esm-es5/component-store-b6fbfa35.js +0 -5
  439. package/dist/esm-es5/component-store-b6fbfa35.js.map +0 -1
  440. package/dist/nano-components/p-096682d9.system.js +0 -5
  441. package/dist/nano-components/p-096682d9.system.js.map +0 -1
  442. package/dist/nano-components/p-09e38c5f.system.entry.js +0 -5
  443. package/dist/nano-components/p-09e38c5f.system.entry.js.map +0 -1
  444. package/dist/nano-components/p-10a6216d.system.entry.js +0 -5
  445. package/dist/nano-components/p-10a6216d.system.entry.js.map +0 -1
  446. package/dist/nano-components/p-3aa1d07d.entry.js.map +0 -1
  447. package/dist/nano-components/p-4265cf95.system.entry.js +0 -5
  448. package/dist/nano-components/p-4265cf95.system.entry.js.map +0 -1
  449. package/dist/nano-components/p-44c08842.system.entry.js +0 -5
  450. package/dist/nano-components/p-44c08842.system.entry.js.map +0 -1
  451. package/dist/nano-components/p-457d4893.entry.js +0 -5
  452. package/dist/nano-components/p-457d4893.entry.js.map +0 -1
  453. package/dist/nano-components/p-531d5275.system.entry.js.map +0 -1
  454. package/dist/nano-components/p-5653961d.system.entry.js.map +0 -1
  455. package/dist/nano-components/p-5a0095f9.js +0 -5
  456. package/dist/nano-components/p-5a0095f9.js.map +0 -1
  457. package/dist/nano-components/p-5a315696.entry.js +0 -5
  458. package/dist/nano-components/p-5a315696.entry.js.map +0 -1
  459. package/dist/nano-components/p-730f60ea.entry.js.map +0 -1
  460. package/dist/nano-components/p-802e1416.system.entry.js +0 -5
  461. package/dist/nano-components/p-802e1416.system.entry.js.map +0 -1
  462. package/dist/nano-components/p-84767e87.entry.js +0 -5
  463. package/dist/nano-components/p-84767e87.entry.js.map +0 -1
  464. package/dist/nano-components/p-971b40a4.system.entry.js +0 -5
  465. package/dist/nano-components/p-971b40a4.system.entry.js.map +0 -1
  466. package/dist/nano-components/p-9d35768b.entry.js +0 -5
  467. package/dist/nano-components/p-9d35768b.entry.js.map +0 -1
  468. package/dist/nano-components/p-9ea13fbe.entry.js +0 -5
  469. package/dist/nano-components/p-9ea13fbe.entry.js.map +0 -1
  470. package/dist/nano-components/p-e1f46998.system.js +0 -5
  471. package/dist/nano-components/p-e1f46998.system.js.map +0 -1
  472. package/dist/nano-components/p-e7c69d4f.entry.js +0 -5
  473. package/dist/nano-components/p-e7c69d4f.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/input/input.scss?tag=nano-input&encapsulation=scoped","src/components/input/input.tsx"],"names":["inputCss","inputIds","Input","exports","class_1","hostRef","_this","this","inputId","didBlurAfterEdit","rtl","charCount","hasRendered","hasFocus","hasLabelSlot","hasHelperSlot","hasHelperEndSlot","errorMessage","datalist","_invalid","autocapitalise","autocomplete","autocorrect","autofocus","clearInput","debounce","disabled","validateOn","showInlineError","hideLabel","floatLabel","name","readonly","required","spellcheck","type","value","resize","rows","showCharCount","validate","ev","nativeInput","validity","valid","preventDefault","validationMessage","nanoValidate","emit","isValid","originalEvent","onInput","input","target","nanoInput","onBlur","focusChanged","nanoBlur","onFocus","nanoFocus","onKeydown","shouldClearOnEdit","hasValue","clearTextInput","stopPropagation","event","window","Event","dispatchEvent","Object","defineProperty","prototype","_nativeInputWrap","ele","setDataListOpts","currDWConfig","dropDownConfig","assign","skidding","tetherTo","nativeInputWrap","shouldValidate","setTimeout","valueChanged","nanoChange","length","style","height","scrollHeight","debounceChanged","debounceEvent","reportValidity","validateFirst","setFocus","focus","click","getInputElement","Promise","resolve","showError","message","setCustomValidity","onReset","e","form","document","querySelector","el","closest","handleBlur","kev","raf","key","activeElement","closestElement","tagName","toLowerCase","_a","clearOnEdit","undefined","getValue","slotChangeObserver","mo","disconnect","MutationObserver","processSlottedContent","observe","childList","subtree","querySelectorAll","console","warn","connectedCallback","CustomEvent","detail","disconnectedCallback","componentDidLoad","_","componentWillLoad","render","labelId","moreId","helperEndId","ownerDocument","dir","compWrapOptions","label","placeholder","maxlength","wrapOptions","controlId","controlOptions","clearControl","h","Host","aria-disabled","class","createColorClasses","color","has-value","has-focus","is-invalid","FormControlWrap","FormControl","onClearText","control","ref","id","aria-labelledby","accept","autoCapitalize","autoComplete","autoCorrect","autoFocus","inputMode","inputmode","min","max","minLength","minlength","maxLength","multiple","pattern","readOnly","step","size","onChange","onKeyDown","onInvalid","input__native-ctrl","input__resizable"],"mappings":"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","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../form-control/form-control';\n@import '../form-control/form-control-vars';\n\n:host {\n @include formControlVars;\n\n position: relative;\n width: 100%;\n padding: 0 !important;\n color: currentColor;\n display: block;\n}\n\n:host(.nano-color) {\n color: current-color(base);\n\n --input-border-style--focus: #{$input-border-style} var(--nano-color-tint, #{nano-color(primary, tint)});\n}\n\n.input__native-ctrl {\n @include text-inherit();\n\n padding-left: unset;\n padding-right: unset;\n padding-top: 0;\n padding-bottom: 0;\n padding-inline-start: var(--padding-start);\n padding-inline-end: var(--padding-end);\n border-radius: var(--input-border-radius);\n text-overflow: ellipsis;\n color: var(--input-text-color);\n display: inline-block;\n flex: 1;\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n border: 0;\n outline: none;\n background: transparent;\n appearance: none;\n margin: 0;\n box-sizing: border-box;\n resize: none;\n overflow: hidden;\n line-height: 2.5em;\n min-height: 2.5em;\n\n .has-float-label & {\n line-height: 2.1em;\n min-height: 2.1em;\n padding-top: 1.4em;\n }\n\n &::placeholder {\n color: var(--placeholder-color);\n font-family: inherit;\n font-style: var(--placeholder-font-style);\n font-weight: var(--placeholder-font-weight);\n opacity: var(--placeholder-opacity);\n line-height: inherit;\n min-height: inherit;\n }\n\n &::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n }\n\n &:-webkit-autofill {\n background-color: transparent;\n }\n\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n appearance: none;\n }\n\n &:invalid {\n box-shadow: none;\n }\n\n &::-ms-clear,\n &::-ms-reveal {\n display: none;\n }\n\n &.input__resizable {\n resize: vertical;\n overflow: auto;\n }\n\n .form-ctrl__textarea & {\n line-height: 1.5em;\n padding-top: var(--padding-top);\n padding-bottom: 0.25em;\n white-space: pre-wrap;\n\n &::placeholder {\n line-height: 1.5em;\n }\n\n .has-float-label & {\n padding-top: 1.75em;\n }\n }\n\n :host([readonly]:not([readonly='false'])) & {\n user-select: none;\n }\n}\n","import {\n Build,\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n Watch,\n h,\n Listen,\n} from '@stencil/core';\n\nimport {\n Color,\n ControlValidity,\n ControlValidityEventDetail,\n InputChangeEventDetail,\n TextFieldTypes,\n} from '../../interface';\nimport {\n debounceEvent,\n closestElement,\n createColorClasses,\n raf,\n} from '../../utils';\nimport { FormControl, FormControlWrap } from '../form-control/form-control';\n\nlet inputIds = 0;\n\n/**\n * The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML [input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input), but works great on desktop devices and integrates with the keyboard on mobile devices.\n\nIt is meant for text type inputs only, such as \"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", and \"url\". It supports all standard text input events including keyup, keydown, keypress, and more.\nThe default styling reference comes from the [ONT styleguide](https://nanoporetech.zeroheight.com/styleguide/s/31282/p/230c74-text-input--textarea/b/942ee4)\n * @slot start - suitable for inline action buttons or icons that may add extra contextual information\n * @slot end - suitable for inline action buttons or icons that may add extra contextual information\n * @slot value-start - similar to 'start', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot value-end - similar to 'end', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot helper-end - helper text to accompany the form field on the side.\n * @slot - can be used with a `nano-datalist`. See the `nano-datalist` docs for more information\n */\n@Component({\n tag: 'nano-input',\n styleUrl: 'input.scss',\n scoped: true,\n})\nexport class Input implements ComponentInterface {\n private nativeInput?: HTMLInputElement | HTMLTextAreaElement;\n private inputId = `nano-input-${inputIds++}`;\n private didBlurAfterEdit = false;\n private rtl: boolean = false;\n private mo?: MutationObserver;\n private charCount = 0;\n private hasRendered = false;\n\n // we don't want these rendered eles decorated with @State\n // because that will cause re-renders. User get/set to set datalist options\n private _nativeInputWrap: HTMLElement;\n private get nativeInputWrap() {\n return this._nativeInputWrap;\n }\n private set nativeInputWrap(ele: HTMLElement) {\n if (this._nativeInputWrap === ele) return;\n this._nativeInputWrap = ele;\n this.setDataListOpts();\n }\n\n @State() hasFocus = false;\n @State() hasLabelSlot = false;\n @State() hasHelperSlot = false;\n @State() hasHelperEndSlot = false;\n @State() errorMessage: string = '';\n @State() datalist: HTMLNanoDatalistElement = null;\n\n @Watch('datalist')\n setDataListOpts() {\n if (!this.datalist) return;\n const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n skidding: -1,\n tetherTo: this.nativeInputWrap,\n };\n }\n\n @Element() el!: HTMLNanoInputElement;\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * The color to use from the application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * If the value of the type attribute is `\"file\"`, then this attribute will indicate the types of files that the server accepts, otherwise it will be ignored. The value must be a comma-separated list of unique content type specifiers.\n */\n @Prop() accept?: string;\n\n /**\n * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.\n */\n @Prop() autocapitalise: 'none' | 'sentences' | 'words' | 'characters' =\n 'none';\n\n /**\n * Indicates whether the value of the control can be automatically completed by the browser.\n */\n @Prop() autocomplete: 'on' | 'off' = 'off';\n\n /**\n * Whether auto correction should be enabled when the user is entering/editing the text value.\n */\n @Prop() autocorrect: 'on' | 'off' = 'off';\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.\n */\n @Prop() clearInput = false;\n\n /**\n * If `true`, the value will be cleared after focus upon edit. Defaults to `true` when `type` is `\"password\"`, `false` for all other types.\n */\n @Prop() clearOnEdit?: boolean;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `nanoChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n\n /**\n * If `true`, the user cannot interact with the input.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * A hint to the browser for which keyboard to display.\n * Possible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n * `\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.\n */\n @Prop() inputmode?:\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search';\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submit';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * String to place within a label element. Alternatively you may use a label slot.\n */\n @Prop() label!: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * The maximum value, which must not be less than its minimum (min attribute) value.\n */\n @Prop() max?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the maximum number of characters that the user can enter.\n */\n @Prop() maxlength?: number;\n\n /**\n * The minimum value, which must not be greater than its maximum (max attribute) value.\n */\n @Prop() min?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the minimum number of characters that the user can enter.\n */\n @Prop() minlength?: number;\n\n /**\n * If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.\n */\n @Prop() multiple?: boolean;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * A regular expression that the value is checked against. The pattern must match the entire value, not just some subset. Use the title attribute to describe the pattern to help the user. This attribute applies when the value of the type attribute is `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() pattern?: string;\n\n /**\n * Instructional text that shows before the input has a value.\n */\n @Prop() placeholder?: string | null;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * If `true`, the element will have its spelling and grammar checked.\n */\n @Prop() spellcheck = false;\n\n /**\n * Works with the min and max attributes to limit the increments at which a value can be set.\n * Possible values are: `\"any\"` or a positive floating point number.\n */\n @Prop() step?: string;\n\n /**\n * The initial size of the control. This value is in pixels unless the value of the type attribute is `\"text\"` or `\"password\"`, in which case it is an integer number of characters. This attribute applies only when the `type` attribute is set to `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() size?: number;\n\n /**\n * The type of control to display. The default type is text.\n */\n @Prop({ reflect: true }) type: TextFieldTypes = 'text';\n\n /**\n * The form element to associate the select with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * The value of the input.\n */\n @Prop({ mutable: true }) value?: string | null = '';\n\n /**\n * relevant to type=\"textarea\". Vertical resizing - enable / disable or make automatic.\n */\n @Prop() resize: 'true' | 'false' | 'auto' = 'auto';\n\n /**\n * relevant to type=\"textarea\". Default number of rows to show\n */\n @Prop() rows = 2;\n\n /**\n * relevant to type=\"textarea\".\n */\n @Prop() showCharCount = false;\n\n @Watch('minlength')\n @Watch('maxlength')\n @Watch('min')\n @Watch('max')\n @Watch('required')\n @Watch('disabled')\n @Watch('validateOn')\n @Watch('readonly')\n @Watch('pattern')\n @Watch('inputmode')\n protected shouldValidate() {\n if (!this.hasRendered) return;\n setTimeout(() => {\n if (this.validateOn === 'dirty') this.validate();\n }, 20);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n this.nanoChange.emit({ value: this.value });\n this.charCount = this.value.length;\n\n if (this.type === 'textarea' && this.resize === 'auto') {\n this.nativeInput.style.height = 'auto';\n if (this.value.length)\n this.nativeInput.style.height = this.nativeInput.scrollHeight + 'px';\n }\n\n setTimeout(() => {\n if (this.validateOn === 'dirty') this.validate();\n }, 20);\n }\n\n @Watch('debounce')\n protected debounceChanged() {\n this.nanoChange = debounceEvent(this.nanoChange, this.debounce);\n }\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() nanoInput!: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() nanoChange!: EventEmitter<InputChangeEventDetail>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been created.\n * @internal\n */\n @Event() nanoDidLoad!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been removed.\n * @internal\n */\n @Event() nanoDidUnload!: EventEmitter<void>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n if (validateFirst) this.validate();\n return {\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n };\n }\n\n /**\n * Sets focus on the specified `nano-input`. Use this method instead of the global\n * `input.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeInput) {\n this.nativeInput.focus();\n this.nativeInput.click();\n }\n }\n\n /**\n * Returns the native `<input>` element used under the hood.\n */\n @Method()\n getInputElement(): Promise<HTMLInputElement | HTMLTextAreaElement> {\n return Promise.resolve(this.nativeInput);\n }\n\n /**\n * Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (this.nativeInput) {\n this.nativeInput.setCustomValidity(message);\n this.validate();\n }\n }\n\n @Listen('reset', { target: 'body' })\n onReset(e) {\n const form = this.form\n ? document.querySelector('#' + this.form)\n : this.el.closest('form');\n if (!form || e.target !== this.el.closest('form')) return;\n\n this.value = '';\n }\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let target: Element;\n\n raf(() => {\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n target = document.activeElement;\n } else target = e.target as Element;\n\n if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {\n this.onBlur();\n }\n });\n }\n\n private shouldClearOnEdit() {\n const { type, clearOnEdit } = this;\n return clearOnEdit === undefined ? type === 'password' : clearOnEdit;\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private validate = (ev?: Event) => {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n if (!this.nativeInput.validity.valid) {\n if (this.showInlineError) {\n if (ev) ev.preventDefault();\n this.errorMessage = this.nativeInput.validationMessage;\n }\n this._invalid = true;\n } else this._invalid = false;\n\n this.nanoValidate.emit({\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n originalEvent: ev,\n });\n };\n\n private onInput = (ev: InputEvent) => {\n const input = ev.target as HTMLInputElement | null;\n this.value = input?.value || '';\n this.nanoInput.emit(ev);\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n this.focusChanged();\n if (this.validateOn === 'dirty') this.validate();\n this.nanoBlur.emit();\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.focusChanged();\n this.nanoFocus.emit();\n };\n\n private onKeydown = () => {\n if (this.shouldClearOnEdit()) {\n // Did the input value change after it was blurred and edited?\n if (this.didBlurAfterEdit && this.hasValue()) {\n // Clear the input\n this.clearTextInput();\n }\n\n // Reset the flag\n this.didBlurAfterEdit = false;\n }\n };\n\n private clearTextInput = (ev?: Event) => {\n if (this.clearInput && !this.readonly && !this.disabled && ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n this.value = '';\n this.nativeInput.value = '';\n const event = new window.Event('change');\n this.nativeInput.dispatchEvent(event);\n };\n\n private focusChanged() {\n // If clearOnEdit is enabled and the input blurred but has a value, set a flag\n if (!this.hasFocus && this.shouldClearOnEdit() && this.hasValue()) {\n this.didBlurAfterEdit = true;\n }\n }\n\n private hasValue(): boolean {\n return this.getValue().length > 0;\n }\n\n private slotChangeObserver() {\n if (!Build.isBrowser) return;\n\n if (this.mo) this.mo.disconnect();\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.el, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have label / button content\n this.hasLabelSlot = !!this.el.querySelectorAll('[slot=\"label\"]');\n this.hasHelperSlot = !!this.el.querySelector('[slot=\"helper\"]');\n this.hasHelperEndSlot = !!this.el.querySelector('[slot=\"helper-end\"]');\n this.datalist = this.el.querySelector('nano-datalist:not([slot])');\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"inline-button\"]')) {\n console.warn(\n 'The `inline-button` slot was renamed to `end` in v2 - please update your code',\n this.el\n );\n }\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"legacy\"]')) {\n console.warn(\n 'The `legacy` slot has been removed. Please update your code',\n this.el\n );\n }\n }\n\n connectedCallback() {\n this.debounceChanged();\n if (Build.isBrowser) {\n this.el.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.el,\n })\n );\n }\n }\n\n disconnectedCallback() {\n if (Build.isBrowser) {\n document.dispatchEvent(\n new CustomEvent('nanoDidUnload', {\n detail: this.el,\n })\n );\n }\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n this.hasRendered = true;\n if (this.autofocus) setTimeout((_) => this.setFocus(), 300);\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n render() {\n const value = this.getValue();\n const labelId = this.inputId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.inputId + '-more' : '';\n const helperEndId = this.hasHelperEndSlot ? this.inputId + '-helper' : '';\n this.rtl = (this.el.ownerDocument as Document).dir === 'rtl';\n\n const compWrapOptions = (({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n hasHelperEndSlot,\n }) => ({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n hasHelperEndSlot,\n }))(this);\n const wrapOptions = {\n ...compWrapOptions,\n labelId,\n moreId,\n helperEndId,\n hasValue: this.hasValue(),\n controlId: this.inputId,\n };\n\n const controlOptions = (({ clearInput, readonly, disabled }) => ({\n clearInput,\n readonly,\n disabled,\n clearControl: this.clearInput,\n }))(this);\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n dir={this.rtl ? 'rtl' : null}\n class={{\n ...createColorClasses(this.color),\n 'has-value': this.hasValue(),\n 'has-focus': this.hasFocus,\n 'is-invalid': this._invalid,\n }}\n >\n <FormControlWrap {...wrapOptions}>\n <FormControl\n {...controlOptions}\n onClearText={this.clearTextInput}\n control={this.el}\n ref={(el) => (this.nativeInputWrap = el)}\n >\n {this.type !== 'textarea' && (\n <input\n id={this.inputId}\n class=\"input__native-ctrl\"\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n accept={this.accept}\n autoCapitalize={this.autocapitalise}\n autoComplete={this.autocomplete}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n min={this.min}\n max={this.max}\n minLength={this.minlength}\n maxLength={this.maxlength}\n multiple={this.multiple}\n name={this.name}\n pattern={this.pattern}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n step={this.step}\n size={this.size}\n type={this.type}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n />\n )}\n {this.type === 'textarea' && (\n <textarea\n rows={this.floatLabel ? 1 : this.rows}\n id={this.inputId}\n class={{\n 'input__native-ctrl': true,\n input__resizable: this.resize === 'true',\n }}\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n autoCapitalize={this.autocapitalise}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n minLength={this.minlength}\n maxLength={this.maxlength}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n ></textarea>\n )}\n </FormControl>\n <slot />\n </FormControlWrap>\n </Host>\n );\n }\n}\n"]}
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import{r as o,c as n,j as t,h as r,e as i,g as e}from"./p-ab5813a7.js";import{d as a}from"./p-1da5f8df.js";import{g as s}from"./p-d99437a6.js";const c='.sc-nano-checkbox-group-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}.sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:0;--control-margin-bottom:0;--control-margin-start:0;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, "currentColor");--label-color--invalid:var(--nano-input-label-color-invalid, "currentColor");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 8px));display:block}.sc-nano-checkbox-group-h *.sc-nano-checkbox-group{-webkit-box-sizing:inherit;box-sizing:inherit}[types-tag].sc-nano-checkbox-group-h,[types-segment].sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:8px;--control-margin-bottom:8px;--control-margin-start:0}[types-checkbox].sc-nano-checkbox-group-h,[types-radio].sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:10px;--control-margin-bottom:8px;--control-margin-start:0}.nanogroupcb.sc-nano-checkbox-group{border:none;margin:0;padding:0}.nanogroupcb__error.sc-nano-checkbox-group,.nanogroupcb__help.sc-nano-checkbox-group,.nanogroupcb__more.sc-nano-checkbox-group{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.nanogroupcb__legend.sc-nano-checkbox-group{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1;white-space:normal;display:block;width:100%}[invalid].sc-nano-checkbox-group-h:not([invalid=false]) .nanogroupcb__legend.sc-nano-checkbox-group{color:var(--label-color--invalid)}.nanogroupcb__more.sc-nano-checkbox-group{height:1em;margin-left:3px;margin-right:0;margin-top:calc(var(--label-padding) - var(--control-margin-bottom));margin-bottom:var(--label-padding);position:relative}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.nanogroupcb__more.sc-nano-checkbox-group{margin-left:unset;margin-right:unset;-webkit-margin-start:3px;margin-inline-start:3px;-webkit-margin-end:0;margin-inline-end:0}}.nanogroupcb__error.sc-nano-checkbox-group,.nanogroupcb__help.sc-nano-checkbox-group{top:0;left:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.show-error.sc-nano-checkbox-group .nanogroupcb__error.sc-nano-checkbox-group,.show-error.sc-nano-checkbox-group .nanogroupcb__help.sc-nano-checkbox-group{opacity:1}.nanogroupcb__error.sc-nano-checkbox-group{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.show-error.sc-nano-checkbox-group .nanogroupcb__error.sc-nano-checkbox-group{opacity:1}.nanogroupcb__help.sc-nano-checkbox-group{font-style:italic;opacity:1;color:var(--help-msg-color)}.show-error.sc-nano-checkbox-group .nanogroupcb__help.sc-nano-checkbox-group{opacity:0}.nanogroupcb__cbs.sc-nano-checkbox-group{margin:0;padding:0;line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.nanogroupcb__cbs.sc-nano-checkbox-group-s>*:not([type=tag]):not([type=segment]):not([type=segment-pill]),.nanogroupcb__cbs .sc-nano-checkbox-group-s>*:not([type=tag]):not([type=segment]):not([type=segment-pill]){--check-base-size:1.2em;font-size:0.85em}.nanogroupcb__cbs.sc-nano-checkbox-group-s>*,.nanogroupcb__cbs .sc-nano-checkbox-group-s>*{margin-left:var(--control-margin-start);margin-top:var(--control-margin-top);margin-right:var(--control-margin-end);margin-bottom:var(--control-margin-bottom)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.nanogroupcb__cbs.sc-nano-checkbox-group-s>*,.nanogroupcb__cbs .sc-nano-checkbox-group-s>*{margin-left:unset;margin-right:unset;-webkit-margin-start:var(--control-margin-start);margin-inline-start:var(--control-margin-start);-webkit-margin-end:var(--control-margin-end);margin-inline-end:var(--control-margin-end)}}';let h=class{constructor(t){o(this,t);this.nanoValidate=n(this,"nanoValidate",7);this.grpId=`nano-checkbox-group-${l++}`;this._invalid=false;this.errorMessage="";this.showErrorMsg=false;this.hasHelperSlot=false;this.validateOn="submit";this.showInlineError=true;this.min=0;this.max=null;this.disabled=null;this.legend="";this.handleInvalid=o=>{this._invalid=true;if(this.validateOn==="submit"){this._invalid=this.showErrorMsg=this.customValidate()}if(!!this.showInlineError)o.preventDefault();setTimeout((n=>this.showInlineValidation(o)),20)};this.showInlineValidation=o=>{if(!this.nativeCbs||!this.nativeCbs.length)return;if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.showErrorMsg=false;this._invalid=false;this.nativeCbs.forEach(((o,n)=>{if(!o.validity.valid){this.errorMessage=o.validationMessage;this.showErrorMsg=true;this._invalid=true;if(!!this.showInlineError){this.checkboxes[n].setFocus()}}}));this.nanoValidate.emit({isValid:!this.invalid,errorMessage:this.errorMessage,originalEvent:o})}}get invalid(){return this._invalid}async reportValidity(o){return new Promise((n=>{if(o)this.showInlineValidation();setTimeout((()=>{n({isValid:!this.invalid,errorMessage:this.errorMessage})}),20)}))}handleCbChange(){if(this.invalid)this.showErrorMsg=this._invalid=false;this.customValidate();if(this.validateOn!=="dirty")return;this.showInlineValidation()}customValidate(){if(!this.nativeCbs||!this.nativeCbs.length||!this.checkboxes)return;let o=this.nativeCbs.filter((o=>o.type==="checkbox"));if(!o||!o.length)return;let n=o.filter((o=>o.checked)).length;let t=false;this.checkboxes.forEach((o=>{if(o.required&&!o.checked){t=true}o.setError("");if(this.min&&n<this.min){o.setError(`You must select a minimum of ${this.min} values.`);t=true}if(this.max&&n>this.max){o.setError(`Only up to ${this.max} values are allowed.`);t=true}}));return t}handleComponentChange(){this.checkboxTypes=s(this.checkboxes.map((o=>"types-"+o.type)))}handleDisabledChange(){if(this.disabled===null)return;this.checkboxes.map((o=>o.disabled=this.disabled))}attachSlotObserver(){const o=this.mo=new MutationObserver((()=>this.handleSlotChange()));o.observe(this.host,{childList:true})}async handleSlotChange(){t(this.host);this.checkboxes=Array.from(this.host.querySelectorAll("nano-checkbox"));this.hasHelperSlot=!!this.host.querySelector('[slot="helper"]');this.nativeCbs=await Promise.all(this.checkboxes.reduce(((o,n)=>{o.push(n.getInputElement());return o}),[]));this.nativeCbs.forEach((o=>o.addEventListener("invalid",this.handleInvalid)))}componentWillLoad(){this.showInlineValidation=a(this.showInlineValidation,20);this.customValidate=this.customValidate.bind(this);this.handleDisabledChange()}connectedCallback(){this.attachSlotObserver()}disconnectedCallback(){if(this.mo)this.mo.disconnect()}componentDidLoad(){this.handleComponentChange()}render(){let o=this.host.ownerDocument.dir==="rtl";const n=this.grpId+"-lbl";const t=this.showInlineError||this.hasHelperSlot?this.grpId+"-more":"";return r(i,Object.assign({},this.checkboxTypes,{dir:o?"rtl":null}),r("fieldset",{disabled:this.disabled,class:{nanogroupcb:true,"show-error":this.showErrorMsg}},r("legend",{class:"nanogroupcb__legend",id:n},this.legend),r("div",{class:"nanogroupcb__cbs",role:"group","aria-labelledby":n+" "+t},r("slot",null)),(this.showInlineError||this.hasHelperSlot)&&r("div",{class:"nanogroupcb__more",id:t},!!this.showInlineError?r("div",{class:"nanogroupcb__error"},this.errorMessage):"",r("div",{class:"nanogroupcb__help"},r("slot",{name:"helper"})))))}get host(){return e(this)}static get watchers(){return{validateOn:["handleCbChange"],min:["handleCbChange"],max:["handleCbChange"],nativeCbs:["customValidate"],checkboxes:["handleComponentChange","handleDisabledChange"],disabled:["handleDisabledChange"]}}};let l=0;h.style=c;export{h as nano_checkbox_group};
5
- //# sourceMappingURL=p-457d4893.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/checkbox/checkbox-group.scss?tag=nano-checkbox-group&encapsulation=scoped","src/components/checkbox/checkbox-group.tsx"],"names":["checkboxGroupCss","CheckboxGroup","[object Object]","hostRef","this","grpId","grpIds","_invalid","errorMessage","showErrorMsg","hasHelperSlot","validateOn","showInlineError","min","max","disabled","legend","handleInvalid","ev","customValidate","preventDefault","setTimeout","_","showInlineValidation","nativeCbs","length","forEach","cb","i","validity","valid","validationMessage","checkboxes","setFocus","nanoValidate","emit","isValid","invalid","originalEvent","validateFirst","Promise","resolve","onlyCbs","filter","type","checked","required","setError","checkboxTypes","getClassMap","map","mo","MutationObserver","handleSlotChange","observe","host","childList","forceUpdate","Array","from","querySelectorAll","querySelector","all","reduce","acc","push","getInputElement","addEventListener","debounce","bind","handleDisabledChange","attachSlotObserver","disconnect","handleComponentChange","isRtl","ownerDocument","dir","legendId","moreId","h","Host","Object","assign","class","nanogroupcb","show-error","id","role","aria-labelledby","name"],"mappings":"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","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n\n:host {\n /**\n * @prop --control-margin-top: Margin between controls. Default depends on control type;\n * @prop --control-margin-end: Margin between controls. Default depends on control type;\n * @prop --control-margin-bottom: Margin between controls. Default depends on control type;\n * @prop --control-margin-start: Margin between controls. Default depends on control type;\n\n * @prop --invalid-msg-color: Default #{nano-color(danger, base)};\n * @prop --invalid-msg-font-size: Default #{$input-help-font-size};\n\n * @prop --help-msg-color: Font color applied to slot=\"helper\". Default #{$input-help-color};\n\n * @prop --label-color: Default #{$label-color};\n * @prop --label-color--invalid: Default #{$label-color-invalid};\n * @prop --label-font-size: Default #{$label-font-size};\n * @prop --label-padding: space between legend and control. Default #{$input-padding-bottom};\n */\n\n --control-margin-top: 0;\n --control-margin-end: 0;\n --control-margin-bottom: 0;\n --control-margin-start: 0;\n --invalid-msg-color: #{nano-color(danger, base)};\n --invalid-msg-font-size: #{$input-help-font-size};\n --help-msg-color: #{$input-help-color};\n --label-color: #{$label-color};\n --label-color--invalid: #{$label-color-invalid};\n --label-font-size: #{$label-font-size};\n --label-padding: #{$input-padding-bottom};\n\n display: block;\n\n * {\n box-sizing: inherit;\n }\n}\n\n:host([types-tag]),\n:host([types-segment]) {\n --control-margin-top: 0;\n --control-margin-end: 8px;\n --control-margin-bottom: 8px;\n --control-margin-start: 0;\n}\n\n:host([types-checkbox]),\n:host([types-radio]) {\n --control-margin-top: 0;\n --control-margin-end: 10px;\n --control-margin-bottom: 8px;\n --control-margin-start: 0;\n}\n\n.nanogroupcb {\n border: none;\n margin: 0;\n padding: 0;\n\n &__error,\n &__help,\n &__more {\n display: block;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &__legend {\n font-size: var(--label-font-size);\n padding: 0 0 var(--label-padding);\n margin: 0;\n line-height: 1;\n white-space: normal;\n display: block;\n width: 100%;\n\n :host([invalid]:not([invalid='false'])) & {\n color: var(--label-color--invalid);\n }\n }\n\n &__more {\n height: 1em;\n\n @include margin(\n calc(var(--label-padding) - var(--control-margin-bottom)),\n 0,\n var(--label-padding),\n 3px\n );\n\n position: relative;\n }\n\n &__error,\n &__help {\n top: 0;\n left: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__error {\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n opacity: 0;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__help {\n font-style: italic;\n opacity: 1;\n color: var(--help-msg-color);\n\n .show-error & {\n opacity: 0;\n }\n }\n\n &__cbs {\n margin: 0;\n padding: 0;\n line-height: 1;\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(*:not([type='tag']):not([type='segment']):not([type='segment-pill'])) {\n --check-base-size: 1.2em;\n\n font-size: 0.85em;\n }\n\n ::slotted(*) {\n margin-left: var(--control-margin-start);\n margin-top: var(--control-margin-top);\n margin-right: var(--control-margin-end);\n margin-bottom: var(--control-margin-bottom);\n }\n }\n}\n\n/* autoprefixer: ignore next */\n@supports ((margin-inline-start: 0) or (-webkit-margin-start: 0)) {\n .nanogroupcb__cbs {\n &::slotted(*),\n ::slotted(*) {\n margin-left: unset;\n margin-right: unset;\n margin-inline-start: var(--control-margin-start);\n margin-inline-end: var(--control-margin-end);\n }\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n ComponentInterface,\n State,\n Listen,\n Watch,\n Host,\n Method,\n forceUpdate,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport {\n CssClassMap,\n ControlValidityEventDetail,\n ControlValidity,\n} from '../../interface';\nimport { debounce, getClassMap } from '../../utils';\n\n/**\n * `nano-checkbox-group` is an optional wrapper for all `nano-checkbox` controls.\n * It provides a convenient place to anchor a collective label and any validation issues.\n *\n * @slot - Used for grouping checkboxes inside the group wrapper\n * @slot helper - helper text to accompany the form field underneath.\n */\n@Component({\n tag: 'nano-checkbox-group',\n styleUrl: 'checkbox-group.scss',\n scoped: true,\n})\nexport class CheckboxGroup implements ComponentInterface {\n private mo?: MutationObserver;\n private checkboxTypes: CssClassMap;\n private grpId = `nano-checkbox-group-${grpIds++}`;\n private _invalid = false;\n\n @Element() host: HTMLNanoCheckboxGroupElement;\n\n // internal state\n\n @State() checkboxes: HTMLNanoCheckboxElement[];\n @State() nativeCbs: HTMLInputElement[];\n @State() errorMessage: string = '';\n @State() showErrorMsg = false;\n @State() hasHelperSlot = false;\n\n // public properties\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submit';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop() showInlineError = true;\n\n /**\n * The minimum number of checkboxes required to be valid. Only relevant for checkbox type controls.\n * A validation error will be thrown if not enough controls are checked.\n */\n @Prop() min: number = 0;\n\n /**\n * The maximum number of checkboxes allowed. Only relevant for checkbox type controls.\n * Other controls will automatically be disabled upon reaching this number.\n */\n @Prop() max: number = null;\n\n /**\n * Disable all the nested form controls\n */\n @Prop({ reflect: true }) disabled: boolean | null = null;\n\n /**\n * A common label for children controls\n */\n @Prop() legend: string = '';\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n\n // Public methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return new Promise((resolve) => {\n if (validateFirst) this.showInlineValidation();\n setTimeout(() => {\n resolve({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n });\n }, 20);\n });\n }\n\n // Events\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // listeners & watchers\n\n /**\n * Notes on validation... custom validation messages should be set\n * no matter whether we show inline messages or native html5.\n * this will mean forms cannot submit when there are pending validation issues.\n */\n @Listen('nanoChange')\n @Watch('validateOn')\n @Watch('min')\n @Watch('max')\n handleCbChange() {\n if (this.invalid) this.showErrorMsg = this._invalid = false;\n this.customValidate();\n\n if (this.validateOn !== 'dirty') return;\n this.showInlineValidation();\n }\n\n @Watch('nativeCbs')\n customValidate() {\n if (!this.nativeCbs || !this.nativeCbs.length || !this.checkboxes) return;\n\n // we only care about checkbox controls.\n let onlyCbs = this.nativeCbs.filter((cb) => cb.type === 'checkbox');\n if (!onlyCbs || !onlyCbs.length) return;\n\n let checked = onlyCbs.filter((cb) => cb.checked).length;\n let invalid = false;\n\n this.checkboxes.forEach((cb) => {\n if (cb.required && !cb.checked) {\n invalid = true;\n }\n\n cb.setError('');\n\n if (this.min && checked < this.min) {\n cb.setError(`You must select a minimum of ${this.min} values.`);\n invalid = true;\n }\n if (this.max && checked > this.max) {\n cb.setError(`Only up to ${this.max} values are allowed.`);\n invalid = true;\n }\n });\n return invalid;\n }\n\n @Watch('checkboxes')\n handleComponentChange() {\n this.checkboxTypes = getClassMap(\n this.checkboxes.map((cb) => 'types-' + cb.type)\n );\n }\n\n @Watch('disabled')\n @Watch('checkboxes')\n handleDisabledChange() {\n if (this.disabled === null) return;\n this.checkboxes.map((cb) => (cb.disabled = this.disabled));\n }\n\n // private methods\n\n private attachSlotObserver() {\n const mo = (this.mo = new MutationObserver(() => this.handleSlotChange()));\n mo.observe(this.host, { childList: true });\n }\n\n private async handleSlotChange() {\n forceUpdate(this.host);\n this.checkboxes = Array.from(this.host.querySelectorAll('nano-checkbox'));\n this.hasHelperSlot = !!this.host.querySelector('[slot=\"helper\"]');\n\n this.nativeCbs = await Promise.all(\n this.checkboxes.reduce((acc: Array<Promise<HTMLInputElement>>, cb) => {\n acc.push(cb.getInputElement());\n return acc;\n }, [])\n );\n\n this.nativeCbs.forEach((cb) =>\n cb.addEventListener('invalid', this.handleInvalid)\n );\n }\n\n private handleInvalid = (ev: Event) => {\n this._invalid = true;\n\n if (this.validateOn === 'submit') {\n this._invalid = this.showErrorMsg = this.customValidate();\n }\n if (!!this.showInlineError) ev.preventDefault();\n\n setTimeout((_) => this.showInlineValidation(ev), 20);\n };\n\n private showInlineValidation = (ev?: Event) => {\n if (!this.nativeCbs || !this.nativeCbs.length) return;\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.showErrorMsg = false;\n this._invalid = false;\n\n this.nativeCbs.forEach((cb, i) => {\n if (!cb.validity.valid) {\n this.errorMessage = cb.validationMessage;\n this.showErrorMsg = true;\n this._invalid = true;\n if (!!this.showInlineError) {\n this.checkboxes[i].setFocus();\n }\n }\n });\n\n this.nanoValidate.emit({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n originalEvent: ev,\n });\n };\n\n // stencil hooks\n\n componentWillLoad() {\n this.showInlineValidation = debounce(this.showInlineValidation, 20);\n this.customValidate = this.customValidate.bind(this);\n this.handleDisabledChange();\n }\n\n connectedCallback() {\n this.attachSlotObserver();\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.handleComponentChange();\n }\n\n render() {\n let isRtl = (this.host.ownerDocument as Document).dir === 'rtl';\n const legendId = this.grpId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.grpId + '-more' : '';\n\n return (\n <Host {...this.checkboxTypes} dir={isRtl ? 'rtl' : null}>\n <fieldset\n disabled={this.disabled}\n class={{ nanogroupcb: true, 'show-error': this.showErrorMsg }}\n >\n <legend class=\"nanogroupcb__legend\" id={legendId}>\n {this.legend}\n </legend>\n <div\n class=\"nanogroupcb__cbs\"\n role=\"group\"\n aria-labelledby={legendId + ' ' + moreId}\n >\n <slot />\n </div>\n {(this.showInlineError || this.hasHelperSlot) && (\n <div class=\"nanogroupcb__more\" id={moreId}>\n {!!this.showInlineError ? (\n <div class=\"nanogroupcb__error\">{this.errorMessage}</div>\n ) : (\n ''\n )}\n <div class=\"nanogroupcb__help\">\n <slot name=\"helper\" />\n </div>\n </div>\n )}\n </fieldset>\n </Host>\n );\n }\n}\n\nlet grpIds = 0;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/dialog/dialog.scss?tag=nano-dialog&encapsulation=shadow","src/components/dialog/dialog.tsx"],"names":["dialogCss","id","Dialog","exports","class_1","hostRef","_this","this","componentId","willShow","willHide","addedTransEnd","isVisible","noDismiss","hasFooter","showRibbon","open","noHeader","noFooter","noUserDismiss","storeMethod","handleKeyDown","event","key","requestClose","nanoOverlayDismiss","nanoRequestClose","emit","defaultPrevented","hide","setTimeout","_","handleTransitionEnd","propertyName","composedPath","find","node","panel","overlay","nanoAfterShow","nanoAfterHide","handleSlotChange","hasSlot","host","prototype","handleOpenChange","show","nanoShow","originalTrigger","document","activeElement","modal","activate","lockBodyScrolling","addEventListener","nanoInitialFocus","focus","preventScroll","once","nanoHide","deactivate","unlockBodyScrolling","stopVideos","trigger","videos","Array","from","querySelectorAll","forEach","video","tagName","toLowerCase","pause","src","connectedCallback","Modal","componentWillLoad","storeId","ComponentStore","init","componentDidLoad","disconnectedCallback","removeEventListener","render","h","Host","showing","undefined","part","class","dialog","dialog--open","dialog--visible","dialog--has-footer","dialog--has-header","dialog--nodismiss","dialog--with-ribbon","onKeyDown","ref","el","onClick","role","aria-modal","aria-hidden","aria-label","label","aria-labelledby","tabIndex","name","String","fromCharCode","exportparts","iconName","position","onSlotchange"],"mappings":";;;6fAAA,IAAMA,EAAY,s1LCqBlB,IAAIC,EAAK,MAcIC,EAAMC,EAAA,cAAA,WALnB,SAAAC,EAAAC,GAAA,IAAAC,EAAAC,qRAMUA,KAAAC,YAAc,aAAYP,EAG1BM,KAAAE,SAAW,MACXF,KAAAG,SAAW,MAGXH,KAAAI,cAAgB,MAGfJ,KAAAK,UAAY,MACZL,KAAAM,UAAY,MACZN,KAAAO,UAAY,MAGbP,KAAAQ,WAAa,KAGmBR,KAAAS,KAAO,MAQvCT,KAAAU,SAAW,MAIXV,KAAAW,SAAW,MAGXX,KAAAY,cAAgB,MAMhBZ,KAAAa,YAA8B,WAwF9Bb,KAAAc,cAAgB,SAACC,GACvB,GAAIA,EAAMC,MAAQ,SAAU,CAC1BjB,EAAKkB,iBAIDjB,KAAAiB,aAAe,WACrB,IAAMC,EAAqBnB,EAAKoB,iBAAiBC,OAEjD,IAAKF,EAAmBG,mBAAqBtB,EAAKa,cAAe,CAC/Db,EAAKuB,WACA,CACLvB,EAAKO,UAAY,KACjBiB,YAAW,SAACC,GAAC,OAAMzB,EAAKO,UAAY,QAAQ,OAIxCN,KAAAyB,oBAAsB,SAACV,GAC7B,GACEA,EAAMW,eAAiB,WACvBX,EACGY,eACAC,MAAK,SAACC,GAAS,OAAAA,IAAS9B,EAAK+B,OAASD,IAAS9B,EAAKgC,WACvD,CAEAhC,EAAKM,UAAYN,EAAKU,KACtBV,EAAKG,SAAW,MAChBH,EAAKI,SAAW,MAChBJ,EAAKU,KAAOV,EAAKiC,cAAcZ,OAASrB,EAAKkC,cAAcb,SAIvDpB,KAAAkC,iBAAmB,WACzBnC,EAAKQ,UAAY4B,EAAQpC,EAAKqC,KAAM,WAtHtCvC,EAAAwC,UAAAC,iBAAA,WACEtC,KAAKS,KAAOT,KAAKuC,OAASvC,KAAKsB,QAwB3BzB,EAAAwC,UAAAE,KAAN,iHACE,GAAIvC,KAAKE,SAAU,CACjB,MAAA,CAAA,GAGIsC,EAAWxC,KAAKwC,SAASpB,OAC/B,GAAIoB,EAASnB,iBAAkB,CAC7BrB,KAAKS,KAAO,MACZ,MAAA,CAAA,GAGFT,KAAKyC,gBAAkBC,SAASC,cAChC3C,KAAKE,SAAW,KAChBF,KAAKK,UAAY,KACjBL,KAAKS,KAAO,KACZT,KAAK4C,MAAMC,WAEXC,EAAkB9C,KAAKoC,MAEvB,GAAIpC,KAAKS,KAAM,CAEbT,KAAKoC,KAAKW,iBACR,iBACA,WACE,IAAMC,EAAmBjD,EAAKiD,iBAAiB5B,OAC/C,IAAK4B,EAAiB3B,iBAAkB,CACtCtB,EAAK+B,MAAMmB,MAAM,CAAEC,cAAe,UAGtC,CAAEC,KAAM,wBAORtD,EAAAwC,UAAAf,KAAN,wGACE,GAAItB,KAAKG,SAAU,CACjB,MAAA,CAAA,GAGIiD,EAAWpD,KAAKoD,SAAShC,OAC/B,GAAIgC,EAAS/B,iBAAkB,CAC7BrB,KAAKS,KAAO,KACZ,MAAA,CAAA,GAGFT,KAAKG,SAAW,KAChBH,KAAKS,KAAO,MACZT,KAAK4C,MAAMS,aACXC,EAAoBtD,KAAKoC,MACzBpC,KAAKuD,aAGCC,EAAUxD,KAAKyC,gBACrB,GAAIe,UAAkBA,EAAQP,QAAU,WAAY,CAClD1B,YAAW,WAAM,OAAAiC,EAAQP,4BAwCrBpD,EAAAwC,UAAAkB,WAAA,WACN,IAAIE,EAAmDC,MAAMC,KAC3D3D,KAAKoC,KAAKwB,iBAAiB,iBAE7BH,EAAOI,SAAQ,SAACC,GACd,GAAIA,EAAMC,QAAQC,gBAAkB,QACjCF,EAA2BG,YACzB,CACH,IAAMC,EAAMJ,EAAMI,IAClBJ,EAAMI,IAAMA,OAKlBrE,EAAAwC,UAAA8B,kBAAA,WACEnE,KAAK4C,MAAQ,IAAIwB,EAAMpE,KAAKoC,MAC5B,GAAIpC,KAAK8B,MAAO,CACd9B,KAAKI,cAAgB,KACrBJ,KAAK8B,MAAMiB,iBAAiB,gBAAiB/C,KAAKyB,uBAItD5B,EAAAwC,UAAAgC,kBAAA,WACErE,KAAKkC,mBAEL,GAAIlC,KAAKS,KAAMT,KAAKuC,OACpB,GAAIvC,KAAKsE,QACPC,EAAeC,KAAKxE,KAAM,CAAC,QAASA,KAAKa,YAAab,KAAKsE,UAG/DzE,EAAAwC,UAAAoC,iBAAA,WACE,IAAKzE,KAAKI,cAAe,CACvBJ,KAAK8B,MAAMiB,iBAAiB,gBAAiB/C,KAAKyB,uBAItD5B,EAAAwC,UAAAqC,qBAAA,WACEpB,EAAoBtD,KAAKoC,MACzBpC,KAAKI,cAAgB,MACrBJ,KAAK8B,MAAM6C,oBAAoB,gBAAiB3E,KAAKyB,sBAGvD5B,EAAAwC,UAAAuC,OAAA,WAAA,IAAA7E,EAAAC,KACE,OACE6E,EAACC,EAAI,CAACC,QAAS/E,KAAKK,UAAY,KAAO2E,WACrCH,EAAA,MAAA,CACEI,KAAK,OACLC,MAAO,CACLC,OAAQ,KACRC,eAAgBpF,KAAKS,KACrB4E,kBAAmBrF,KAAKK,UACxBiF,sBAAuBtF,KAAKW,SAC5B4E,sBAAuBvF,KAAKU,SAC5B8E,oBAAqBxF,KAAKM,UAC1BmF,sBAAuBzF,KAAKQ,YAE9BkF,UAAW1F,KAAKc,eAEhB+D,EAAA,MAAA,CACEI,KAAK,UACLC,MAAM,kBACNS,IAAK,SAACC,GAAE,OAAM7F,EAAKgC,QAAU6D,GAC7BC,QAAS7F,KAAKiB,eAGhB4D,EAAA,MAAA,CACEc,IAAK,SAACC,GAAE,OAAM7F,EAAK+B,MAAQ8D,GAC3BX,KAAK,QACLC,MAAM,gBACNY,KAAK,SAAQC,aACF,OAAMC,cACJhG,KAAKS,KAAO,QAAU,OAAMwF,aAC7BjG,KAAKU,SAAWV,KAAKkG,MAAQ,KAAIC,mBAE1CnG,KAAKU,SAAcV,KAAKC,YAAW,SAAW,KAEjDmG,SAAU,GAEVvB,EAAA,MAAA,CAAKK,MAAM,sBACPlF,KAAKU,UACLmE,EAAA,eAAA,KACEA,EAAA,SAAA,CAAQI,KAAK,SAASC,MAAM,kBAC1BL,EAAA,OAAA,CACEI,KAAK,QACLC,MAAM,gBACNxF,GAAOM,KAAKC,YAAW,UAEvB4E,EAAA,OAAA,CAAMwB,KAAK,SAERrG,KAAKkG,OAASI,OAAOC,aAAa,UAGrCvG,KAAKY,eACLiE,EAAA,mBAAA,CACE2B,YAAY,oBACZtB,MAAM,qBACNgB,MAAM,eACNL,QAAS7F,KAAKiB,aACdwF,SAAS,kBAMnB5B,EAAA,MAAA,CAAKI,KAAK,OAAOC,MAAM,gBACrBL,EAAA,OAAA,QAEA7E,KAAKW,WAAaX,KAAKO,YAAcP,KAAKY,gBAC1CiE,EAAA,eAAA,CAAc6B,SAAS,UACrB7B,EAAA,SAAA,CAAQI,KAAK,SAASC,MAAM,kBAC1BL,EAAA,OAAA,CAAMwB,KAAK,SAASM,aAAc3G,KAAKkC,oBACrClC,KAAKY,eACLiE,EAAA,SAAA,CACEK,MAAM,oBACNW,QAAS7F,KAAKiB,cAAY,kQAtR/B","sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\n@import '../../global/style/nano-theme/form';\n\n/**\n * @prop --width: The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.\n * @prop --border-radius: defaults to #{$layer-border-radius};\n * @prop --content-background: defaults to #{$layer-bg-color};\n * @prop --footer-background: defaults to #{map.get($colors, celsius)};\n * @prop --box-shadow: defaults to $layer-shadow-xlarge;\n * @prop --close-button-color: defaults to #{map.get($colors, mediumgrey)};\n * @prop --scrim-color: overlay colour of alert display. Defaults to #{$layer-overlay-dark};\n * @prop --tint-color: colour used to highlight items in the dialog - top ribbon, bottom close button. Default #{map.get($colors, blue)};\n * @prop --width: defaults to 31rem;\n */\n:host {\n --border-radius: #{$layer-border-radius};\n --content-background: #fafafa;\n --footer-content: #{map.get($colors, lightgrey)};\n --scrim-color: #{$layer-overlay-dark};\n --box-shadow: #{$layer-shadow-large};\n --close-button-color: #{map.get($colors, palegrey)};\n --width: 60rem;\n --tint-color: #{darken(map.get($colors, blue), 5%)};\n --body-padding-v: #{$spacing-large};\n --body-padding-h: #{$spacing-large};\n --header-padding-v: #{$spacing-medium};\n --header-padding-h: #{$spacing-large};\n --footer-padding-v: #{$spacing-medium};\n --footer-padding-h: #{$spacing-large};\n}\n\n.dialog {\n $self: &;\n\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: #{$layer-index-modal};\n\n &:not(.dialog--visible) {\n @include hidden;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n z-index: 2;\n width: var(--width);\n max-width: calc(100% - #{$spacing-xlarge});\n max-height: calc(92% - #{$spacing-xlarge});\n background-color: var(--content-background);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n opacity: 0;\n transform: scale(0.8);\n transition: #{$transition-fast} opacity, #{$transition-fast} transform;\n\n &:focus {\n outline: none;\n }\n\n .dialog--with-ribbon & {\n border-top: 5px solid var(--tint-color);\n }\n\n .dialog--open & {\n display: flex;\n opacity: 1;\n transform: none;\n }\n\n .dialog--nodismiss & {\n animation: cannotClose 0.25s ease-in-out 1;\n\n @keyframes cannotClose {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(1.08);\n }\n\n 100% {\n transform: scale(1);\n }\n }\n }\n }\n\n &__header {\n flex: 0 0 auto;\n display: flex;\n min-width: var(--width);\n width: 100%;\n background-color: var(--content-background);\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n transition: #{$transition-xfast} box-shadow;\n\n .dialog--visible & {\n min-width: auto;\n }\n\n [stuck] & {\n box-shadow: #{$layer-shadow-medium};\n }\n }\n\n &__title {\n flex: 1 1 auto;\n font-size: #{$fontsize-large};\n line-height: 1.6;\n padding: var(--header-padding-v) var(--header-padding-h);\n }\n\n & &__close-icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: #{$fontsize-xlarge};\n padding: 0 var(--header-padding-h);\n\n --color: var(--close-button-color);\n }\n\n &__body {\n padding: 0 var(--body-padding-h) var(--body-padding-v);\n\n .dialog:not(.dialog--has-header) & {\n padding-top: var(--body-padding-v);\n }\n\n & ::slotted(*) {\n max-width: 100%;\n }\n\n &-wrap {\n flex: 1 1 auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n border-radius: var(--border-radius);\n\n .dialog:not(.dialog--has-header) & {\n border-radius: 0 0 inherit inherit;\n }\n\n .dialog:not(.dialog--has-footer) & {\n border-radius: inherit inherit 0 0;\n }\n }\n }\n\n &__footer {\n width: 100%;\n padding: var(--footer-padding-v) var(--footer-padding-h);\n background: var(--footer-content);\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n position: relative;\n top: 1px;\n\n .dialog--visible & {\n min-width: auto;\n }\n\n ::slotted(button) {\n margin-right: #{$spacing-small} !important;\n }\n\n .dialog:not(.dialog--has-footer) & {\n display: none;\n }\n }\n\n &__close-txt {\n color: var(--tint-color);\n border: none;\n text-decoration: underline;\n margin: 0;\n text-underline-offset: 4px;\n background-color: transparent;\n font: inherit;\n -webkit-box-align: center;\n cursor: pointer;\n font-size: #{$fontsize-small};\n padding: 0.5rem;\n border-radius: #{$border-radius-small};\n transition: box-shadow 100ms ease-in-out;\n\n &:focus {\n outline: none;\n box-shadow: #{$control-focus-style};\n }\n }\n\n &__overlay {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: var(--scrim-color);\n opacity: 0;\n transition: #{$transition-fast} opacity;\n backdrop-filter: blur(#{$layer-overlay-blur});\n\n .dialog--open & {\n opacity: 1;\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n h,\n Host,\n ComponentInterface,\n} from '@stencil/core';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport Modal from '../../utils/modal';\nimport { hasSlot } from '../../utils';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\n\nlet id = 0;\n\n/**\n * Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.\n *\n * @slot - The dialog's content.\n * @slot label - The dialog's label. Alternatively, you can use the label prop.\n * @slot footer - The dialog's footer, usually one or more buttons representing various options.\n */\n@Component({\n tag: 'nano-dialog',\n styleUrl: 'dialog.scss',\n shadow: true,\n})\nexport class Dialog implements ComponentInterface {\n private componentId = `dialog-${++id}`;\n private modal: Modal;\n private panel: HTMLElement;\n private willShow = false;\n private willHide = false;\n private originalTrigger: HTMLElement | null;\n private overlay: HTMLElement;\n private addedTransEnd = false;\n\n @Element() host: HTMLNanoDialogElement;\n @State() isVisible = false;\n @State() noDismiss = false;\n @State() hasFooter = false;\n\n /** Show a colour ribbon at the top of the modal */\n @Prop() showRibbon = true;\n\n /** Indicates whether or not the dialog is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** The dialog's label as displayed in the header. You should always include a relevant\n * label even when using `no-header`, as it is required for proper accessibility. */\n @Prop() label!: string;\n\n /** Set to true to disable the header. This will also remove the default close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noHeader = false;\n\n /** Set to true to disable the footer. This will also remove the footer close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noFooter = false;\n\n /** An alternative to `preventDefault()` on the `nanoRequestClose` event. This will hide the close button and disable clicks on the overlay or presses the `Escape` key */\n @Prop() noUserDismiss = false;\n\n /** Store search queries (against this ID) to the component store. Use in conjunction with storeMethod */\n @Prop() storeId?: string;\n\n /** The method of storage. Either session storage, url hash (after the '#') or url query (after the '?'). */\n @Prop() storeMethod: StorageMethods = 'url-hash';\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n /** Emitted when the dialog opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the dialog opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the dialog closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the dialog closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /** Emitted when the dialog opens and the panel gains focus. Calling `event.preventDefault()` will prevent\n * focus and allow you to set it on a different element in the dialog, such as an input or button. */\n @Event() nanoInitialFocus: EventEmitter;\n\n /** Emitted when the user clicks the close button, clicks the overlay, or presses the `Escape` key. Calling `event.preventDefault()` will prevent the dialog from closing. */\n @Event() nanoRequestClose: EventEmitter;\n\n /** Shows the dialog */\n @Method()\n async show() {\n if (this.willShow) {\n return;\n }\n\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.originalTrigger = document.activeElement as HTMLElement;\n this.willShow = true;\n this.isVisible = true;\n this.open = true;\n this.modal.activate();\n\n lockBodyScrolling(this.host);\n\n if (this.open) {\n // Wait for the next frame before setting initial focus so the dialog is technically visible\n this.host.addEventListener(\n 'nanoAfterShow',\n () => {\n const nanoInitialFocus = this.nanoInitialFocus.emit();\n if (!nanoInitialFocus.defaultPrevented) {\n this.panel.focus({ preventScroll: true });\n }\n },\n { once: true }\n );\n }\n }\n\n /** Hides the dialog */\n @Method()\n async hide() {\n if (this.willHide) {\n return;\n }\n\n const nanoHide = this.nanoHide.emit();\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.willHide = true;\n this.open = false;\n this.modal.deactivate();\n unlockBodyScrolling(this.host);\n this.stopVideos();\n\n // Restore focus to the original trigger\n const trigger = this.originalTrigger;\n if (trigger && typeof trigger.focus === 'function') {\n setTimeout(() => trigger.focus());\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n const nanoOverlayDismiss = this.nanoRequestClose.emit();\n\n if (!nanoOverlayDismiss.defaultPrevented && !this.noUserDismiss) {\n this.hide();\n } else {\n this.noDismiss = true;\n setTimeout((_) => (this.noDismiss = false), 250);\n }\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n event\n .composedPath()\n .find((node) => node === this.panel || node === this.overlay)\n ) {\n // Ensure we only emit one event when the target element is no longer visible\n this.isVisible = this.open;\n this.willShow = false;\n this.willHide = false;\n this.open ? this.nanoAfterShow.emit() : this.nanoAfterHide.emit();\n }\n };\n\n private handleSlotChange = () => {\n this.hasFooter = hasSlot(this.host, 'footer');\n };\n\n private stopVideos() {\n var videos: (HTMLVideoElement | HTMLIFrameElement)[] = Array.from(\n this.host.querySelectorAll('iframe,video')\n );\n videos.forEach((video) => {\n if (video.tagName.toLowerCase() === 'video')\n (video as HTMLVideoElement).pause();\n else {\n const src = video.src;\n video.src = src;\n }\n });\n }\n\n connectedCallback() {\n this.modal = new Modal(this.host);\n if (this.panel) {\n this.addedTransEnd = true;\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n componentWillLoad() {\n this.handleSlotChange();\n // Show on init if open\n if (this.open) this.show();\n if (this.storeId)\n ComponentStore.init(this, ['open'], this.storeMethod, this.storeId);\n }\n\n componentDidLoad() {\n if (!this.addedTransEnd) {\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n disconnectedCallback() {\n unlockBodyScrolling(this.host);\n this.addedTransEnd = false;\n this.panel.removeEventListener('transitionend', this.handleTransitionEnd);\n }\n\n render() {\n return (\n <Host showing={this.isVisible ? true : undefined}>\n <div\n part=\"base\"\n class={{\n dialog: true,\n 'dialog--open': this.open,\n 'dialog--visible': this.isVisible,\n 'dialog--has-footer': !this.noFooter,\n 'dialog--has-header': !this.noHeader,\n 'dialog--nodismiss': this.noDismiss,\n 'dialog--with-ribbon': this.showRibbon,\n }}\n onKeyDown={this.handleKeyDown}\n >\n <div\n part=\"overlay\"\n class=\"dialog__overlay\"\n ref={(el) => (this.overlay = el)}\n onClick={this.requestClose}\n />\n\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class=\"dialog__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-label={this.noHeader ? this.label : null}\n aria-labelledby={\n !this.noHeader ? `${this.componentId}-title` : null\n }\n tabIndex={0}\n >\n <div class=\"dialog__body-wrap\">\n {!this.noHeader && (\n <nano-sticker>\n <header part=\"header\" class=\"dialog__header\">\n <span\n part=\"title\"\n class=\"dialog__title\"\n id={`${this.componentId}-title`}\n >\n <slot name=\"label\">\n {/* If there's no label, use an invisible character to prevent the heading from collapsing */}\n {this.label || String.fromCharCode(65279)}\n </slot>\n </span>\n {!this.noUserDismiss && (\n <nano-icon-button\n exportparts=\"base:close-button\"\n class=\"dialog__close-icon\"\n label=\"close dialog\"\n onClick={this.requestClose}\n iconName=\"light/times\"\n />\n )}\n </header>\n </nano-sticker>\n )}\n <div part=\"body\" class=\"dialog__body\">\n <slot />\n </div>\n {!this.noFooter && (this.hasFooter || !this.noUserDismiss) && (\n <nano-sticker position=\"bottom\">\n <footer part=\"footer\" class=\"dialog__footer\">\n <slot name=\"footer\" onSlotchange={this.handleSlotChange} />\n {!this.noUserDismiss && (\n <button\n class=\"dialog__close-txt\"\n onClick={this.requestClose}\n >\n Close\n </button>\n )}\n </footer>\n </nano-sticker>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/sticky/sticker.scss?tag=nano-sticker&encapsulation=shadow","src/components/sticky/sticker.tsx"],"names":["stickerCss","_getScrollTop","ele","Document","window","pageYOffset","scrollTop","_getOffset","parent","parentEle","document","documentElement","getOffset","Sticker","exports","class_1","hostRef","_this","this","isRtl","scrollPosCache","scrollPosThresholdCache","cacheOffset","pauseResizeWatcher","listenForScrollParent","positions","pauseHide","hasBootstrapped","isStuck","isRootSticker","hide","scrollHide","multiStickerHide","scrollingTo","quietModeIsOn","stuckCounter","stickerIndex","_offset","autoResize","isSticky","offset","position","quietMode","h","w","hideOnNewStickers","breakPointMax","breakPointMin","setupParentResizeListener","parentSizeObserver","disconnect","undefined","ResizeObserver","entries","_i","entries_1","length","entry","height","width","contentRect","sticker","style","host","scrollWidth","toWatch","scrollParent","observe","onStickToDisplayEvent","e","detail","stickToEle","type","moveTrigger","raf","minHeight","stickToEleInitSize","scrollHeight","v","setTriggerPos","getBoundingClientRect","onStickEvent","__awaiter","getTriggerPos","incomingTriggerPos","_a","sent","includes","triggerPos","top","onScroll","y","handleScrollTo","handleScrollAway","prototype","isHiding","isSticking","shouldStick","pauseHiding","pause","updateTriggerOffset","trigger","stickerResizeListener","contentSizeObserver","entries_2","content","quietModeChange","setOffset","setAttribute","_v","_h","_b","_c","_d","setPos","pos","u","match","setTriggetPos","browserCanUseCssVariables","setProperty","positionChange","split","stuckChange","hasShadowDom","children","slottedContent","Array","from","forEach","child","appendChild","querySelector","order","nanoStuck","emit","nanoUnstuck","attachScrollListeners","addEventListener","passive","capture","removeEventListener","handleParentEvents","_","oldParent","manageListenersOnParent","stickToEleChange","oldEle","stickToChange","stickTo","visibilityDecisionHandler","handleHideChange","nanoHide","nanoShow","setupIO","io","root","IntersectionObserver","slice","addEvents","console","error","currScroll","Math","abs","toInitial","parentNode","insertBefore","nextSibling","getScrollParent","regex","parents","_node","ps","concat","prop","getComputedStyle","getPropertyValue","overflow","scroll","test","docHeight","HTMLElement","find","data","scrollAmt","parentBounding","rootBounds","bootstrapGurantor","createElement","classList","add","querySelectorAll","filter","findIndex","debounce","connectedCallback","dir","ownerDocument","setTimeout","disconnectedCallback","render","Host","sticky","siblings","index","stuck","placed-bottom","placed-top","placed-end","placed-start","class","ref","div"],"mappings":"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","sourcesContent":["@import '../../global/style/nano-theme/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 #{$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: #{$layer-index-menubar};\n --top-hide: translateY(-110%);\n --bottom-hide: translateY(110%);\n\n display: block;\n max-width: 100%;\n}\n\n:host([sticky]) {\n position: sticky;\n transition: 0.3s ease transform;\n will-change: min-height;\n}\n\n:host([sticky][stuck]) {\n left: var(--stuck-left);\n right: 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-width: inherit;\n width: 100%;\n\n &:not(.stuck) {\n width: 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 left: var(--stuck-left);\n right: var(--stuck-right);\n z-index: var(--stuck-z-index);\n transform: translateY(0);\n\n :host([placed-top]) & {\n top: 0;\n }\n\n :host([placed-bottom]) & {\n bottom: 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 ResizeObserver from 'resize-observer-polyfill';\nimport {\n browserCanUseCssVariables,\n debounce,\n getOffset,\n hasShadowDom,\n raf,\n} from '../../utils';\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 let 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 * A JS query selector that returns a <nano-sticker> */\n @Prop() stickTo: string;\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 /** @internal */\n @Method()\n async setTriggerPos(offset: number | { v: number; h: number }) {\n return (this._offset = offset);\n }\n\n /** @internal */\n @Method()\n async getTriggerPos() {\n return this.triggerPos;\n }\n\n /** @internal */\n @Method()\n async pauseHiding(pause: boolean) {\n return (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.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') raf(() => (this.quietModeIsOn = true));\n else if (this.quietMode === 'off') raf(() => (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 this.trigger.setAttribute('style', '');\n let v: number, h: number, _v: number, _h: number;\n let 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 let u = pos.match(/(top|bottom)/) ? v : h;\n setTriggetPos(pos);\n sticker.style[pos] = u + 'px';\n if (!browserCanUseCssVariables()) return;\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 let 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.height = '1px';\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 let content = hasShadowDom(this.host)\n ? this.host.children\n : this.content.children;\n this.slottedContent = Array.from(content);\n\n this.slottedContent.forEach((child: HTMLElement) => {\n if (hasShadowDom(this.host)) this.stickToEle.appendChild(child);\n else\n this.stickToEle\n .querySelector('.sticker-content')\n .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 {\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 (this.stickTo)\n this.stickToEle = this.scrollParent.querySelector(this.stickTo);\n else this.stickToEle = undefined;\n }\n\n /** 2 potential criteria for hiding. Multi-stickers or quietmode. */\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 'smallscreen', or there is a breakpointmax / min it will add a resizeobserver to conditionally add behaviour */\n private setupParentResizeListener = () => {\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 let 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 ammend the hide/show trigger\n * Main diffs from rootstickers / 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 raf(() => {\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 raf(() => {\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 let 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 let 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 let 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 /** Gets the 'closest' scrolling parent */\n private getScrollParent() {\n const regex = /(auto|scroll)/;\n const parents = (_node: Node, ps: Node[]) => {\n if (_node.parentNode === null) {\n return ps;\n }\n return parents(_node.parentNode, ps.concat([_node]));\n };\n const style = (_node, prop) =>\n getComputedStyle(_node, null).getPropertyValue(prop);\n const overflow = (_node) =>\n style(_node, 'overflow') +\n style(_node, 'overflow-y') +\n style(_node, 'overflow-x');\n const scroll = (_node) => regex.test(overflow(_node));\n const docHeight = document.documentElement.getBoundingClientRect().height;\n\n const scrollParent = (_node: HTMLElement) => {\n if (!(_node instanceof HTMLElement)) return;\n\n const ps = parents(_node, []);\n return (\n ps.find(\n (ele) =>\n scroll(ele) && ele.getBoundingClientRect().height !== docHeight\n ) || document\n );\n };\n\n return scrollParent(this.host);\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 scrollAmt = this.trigger.getBoundingClientRect().top;\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 = scrollAmt > parentBounding.height + parentBounding.top;\n }\n }\n\n private bootstrapGurantor() {\n this.hasBootstrapped = true;\n\n this.scrollParent = this.scrollParent || this.getScrollParent();\n this.isRootSticker = this.scrollParent instanceof Document;\n\n this.trigger = this.trigger || document.createElement('div');\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 metthods\n\n connectedCallback() {\n this.isRtl =\n this.host.dir === 'rtl' ||\n (this.host.ownerDocument as Document).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.quietMode = 'off';\n this.scrollParent = null;\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"]}
@@ -1,5 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import{g as r}from"./p-ab5813a7.js";import{c as e,g as t}from"./p-69a3e911.js";import{d as n}from"./p-1da5f8df.js";var o=function r(){if(typeof Symbol!=="function"||typeof Object.getOwnPropertySymbols!=="function"){return false}if(typeof Symbol.iterator==="symbol"){return true}var e={};var t=Symbol("test");var n=Object(t);if(typeof t==="string"){return false}if(Object.prototype.toString.call(t)!=="[object Symbol]"){return false}if(Object.prototype.toString.call(n)!=="[object Symbol]"){return false}var o=42;e[t]=o;for(t in e){return false}if(typeof Object.keys==="function"&&Object.keys(e).length!==0){return false}if(typeof Object.getOwnPropertyNames==="function"&&Object.getOwnPropertyNames(e).length!==0){return false}var i=Object.getOwnPropertySymbols(e);if(i.length!==1||i[0]!==t){return false}if(!Object.prototype.propertyIsEnumerable.call(e,t)){return false}if(typeof Object.getOwnPropertyDescriptor==="function"){var a=Object.getOwnPropertyDescriptor(e,t);if(a.value!==o||a.enumerable!==true){return false}}return true};var i=typeof Symbol!=="undefined"&&Symbol;var a=function r(){if(typeof i!=="function"){return false}if(typeof Symbol!=="function"){return false}if(typeof i("foo")!=="symbol"){return false}if(typeof Symbol("bar")!=="symbol"){return false}return o()};var f="Function.prototype.bind called on incompatible ";var u=Array.prototype.slice;var y=Object.prototype.toString;var c="[object Function]";var p=function r(e){var t=this;if(typeof t!=="function"||y.call(t)!==c){throw new TypeError(f+t)}var n=u.call(arguments,1);var o;var i=function(){if(this instanceof o){var r=t.apply(this,n.concat(u.call(arguments)));if(Object(r)===r){return r}return this}else{return t.apply(e,n.concat(u.call(arguments)))}};var a=Math.max(0,t.length-n.length);var p=[];for(var s=0;s<a;s++){p.push("$"+s)}o=Function("binder","return function ("+p.join(",")+"){ return binder.apply(this,arguments); }")(i);if(t.prototype){var l=function r(){};l.prototype=t.prototype;o.prototype=new l;l.prototype=null}return o};var s=Function.prototype.bind||p;var l=s.call(Function.call,Object.prototype.hasOwnProperty);var v;var d=SyntaxError;var b=Function;var h=TypeError;var m=function(r){try{return b('"use strict"; return ('+r+").constructor;")()}catch(e){}};var g=Object.getOwnPropertyDescriptor;var S=function(){throw new h};var j=g?function(){try{return S}catch(r){try{return g(arguments,"callee").get}catch(e){return S}}}():S;var A=a();var w=Object.getPrototypeOf||function(r){return r.__proto__};var O={};var P=typeof Uint8Array==="undefined"?v:w(Uint8Array);var E={"%AggregateError%":typeof AggregateError==="undefined"?v:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer==="undefined"?v:ArrayBuffer,"%ArrayIteratorPrototype%":A?w([][Symbol.iterator]()):v,"%AsyncFromSyncIteratorPrototype%":v,"%AsyncFunction%":O,"%AsyncGenerator%":O,"%AsyncGeneratorFunction%":O,"%AsyncIteratorPrototype%":O,"%Atomics%":typeof Atomics==="undefined"?v:Atomics,"%BigInt%":typeof BigInt==="undefined"?v:BigInt,"%Boolean%":Boolean,"%DataView%":typeof DataView==="undefined"?v:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array==="undefined"?v:Float32Array,"%Float64Array%":typeof Float64Array==="undefined"?v:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry==="undefined"?v:FinalizationRegistry,"%Function%":b,"%GeneratorFunction%":O,"%Int8Array%":typeof Int8Array==="undefined"?v:Int8Array,"%Int16Array%":typeof Int16Array==="undefined"?v:Int16Array,"%Int32Array%":typeof Int32Array==="undefined"?v:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":A?w(w([][Symbol.iterator]())):v,"%JSON%":typeof JSON==="object"?JSON:v,"%Map%":typeof Map==="undefined"?v:Map,"%MapIteratorPrototype%":typeof Map==="undefined"||!A?v:w((new Map)[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise==="undefined"?v:Promise,"%Proxy%":typeof Proxy==="undefined"?v:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect==="undefined"?v:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set==="undefined"?v:Set,"%SetIteratorPrototype%":typeof Set==="undefined"||!A?v:w((new Set)[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer==="undefined"?v:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":A?w(""[Symbol.iterator]()):v,"%Symbol%":A?Symbol:v,"%SyntaxError%":d,"%ThrowTypeError%":j,"%TypedArray%":P,"%TypeError%":h,"%Uint8Array%":typeof Uint8Array==="undefined"?v:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray==="undefined"?v:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array==="undefined"?v:Uint16Array,"%Uint32Array%":typeof Uint32Array==="undefined"?v:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap==="undefined"?v:WeakMap,"%WeakRef%":typeof WeakRef==="undefined"?v:WeakRef,"%WeakSet%":typeof WeakSet==="undefined"?v:WeakSet};var F=function r(e){var t;if(e==="%AsyncFunction%"){t=m("async function () {}")}else if(e==="%GeneratorFunction%"){t=m("function* () {}")}else if(e==="%AsyncGeneratorFunction%"){t=m("async function* () {}")}else if(e==="%AsyncGenerator%"){var n=r("%AsyncGeneratorFunction%");if(n){t=n.prototype}}else if(e==="%AsyncIteratorPrototype%"){var o=r("%AsyncGenerator%");if(o){t=w(o.prototype)}}E[e]=t;return t};var I={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]};var R=s.call(Function.call,Array.prototype.concat);var k=s.call(Function.apply,Array.prototype.splice);var M=s.call(Function.call,String.prototype.replace);var x=s.call(Function.call,String.prototype.slice);var N=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;var U=/\\(\\)?/g;var W=function r(e){var t=x(e,0,1);var n=x(e,-1);if(t==="%"&&n!=="%"){throw new d("invalid intrinsic syntax, expected closing `%`")}else if(n==="%"&&t!=="%"){throw new d("invalid intrinsic syntax, expected opening `%`")}var o=[];M(e,N,(function(r,e,t,n){o[o.length]=t?M(n,U,"$1"):e||r}));return o};var T=function r(e,t){var n=e;var o;if(l(I,n)){o=I[n];n="%"+o[0]+"%"}if(l(E,n)){var i=E[n];if(i===O){i=F(n)}if(typeof i==="undefined"&&!t){throw new h("intrinsic "+e+" exists, but is not available. Please file an issue!")}return{alias:o,name:n,value:i}}throw new d("intrinsic "+e+" does not exist!")};var B=function r(e,t){if(typeof e!=="string"||e.length===0){throw new h("intrinsic name must be a non-empty string")}if(arguments.length>1&&typeof t!=="boolean"){throw new h('"allowMissing" argument must be a boolean')}var n=W(e);var o=n.length>0?n[0]:"";var i=T("%"+o+"%",t);var a=i.name;var f=i.value;var u=false;var y=i.alias;if(y){o=y[0];k(n,R([0,1],y))}for(var c=1,p=true;c<n.length;c+=1){var s=n[c];var b=x(s,0,1);var m=x(s,-1);if((b==='"'||b==="'"||b==="`"||(m==='"'||m==="'"||m==="`"))&&b!==m){throw new d("property names with quotes must have matching quotes")}if(s==="constructor"||!p){u=true}o+="."+s;a="%"+o+"%";if(l(E,a)){f=E[a]}else if(f!=null){if(!(s in f)){if(!t){throw new h("base intrinsic for "+e+" exists, but the property is not available.")}return void v}if(g&&c+1>=n.length){var S=g(f,s);p=!!S;if(p&&"get"in S&&!("originalValue"in S.get)){f=S.get}else{f=f[s]}}else{p=l(f,s);f=f[s]}if(p&&!u){E[a]=f}}}return f};var D=e((function(r){var e=B("%Function.prototype.apply%");var t=B("%Function.prototype.call%");var n=B("%Reflect.apply%",true)||s.call(t,e);var o=B("%Object.getOwnPropertyDescriptor%",true);var i=B("%Object.defineProperty%",true);var a=B("%Math.max%");if(i){try{i({},"a",{value:1})}catch(u){i=null}}r.exports=function r(e){var f=n(s,t,arguments);if(o&&i){var u=o(f,"length");if(u.configurable){i(f,"length",{value:1+a(0,e.length-(arguments.length-1))})}}return f};var f=function r(){return n(s,e,arguments)};if(i){i(r.exports,"apply",{value:f})}else{r.exports.apply=f}}));var C=D(B("String.prototype.indexOf"));var _=function r(e,t){var n=B(e,!!t);if(typeof n==="function"&&C(e,".prototype.")>-1){return D(n)}return n};const q={};const G=Object.freeze({__proto__:null,default:q});const $=t(G);var J=typeof Map==="function"&&Map.prototype;var V=Object.getOwnPropertyDescriptor&&J?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null;var H=J&&V&&typeof V.get==="function"?V.get:null;var L=J&&Map.prototype.forEach;var z=typeof Set==="function"&&Set.prototype;var Q=Object.getOwnPropertyDescriptor&&z?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null;var Y=z&&Q&&typeof Q.get==="function"?Q.get:null;var K=z&&Set.prototype.forEach;var X=typeof WeakMap==="function"&&WeakMap.prototype;var Z=X?WeakMap.prototype.has:null;var rr=typeof WeakSet==="function"&&WeakSet.prototype;var er=rr?WeakSet.prototype.has:null;var tr=typeof WeakRef==="function"&&WeakRef.prototype;var nr=tr?WeakRef.prototype.deref:null;var or=Boolean.prototype.valueOf;var ir=Object.prototype.toString;var ar=Function.prototype.toString;var fr=String.prototype.match;var ur=String.prototype.slice;var yr=String.prototype.replace;var cr=String.prototype.toUpperCase;var pr=String.prototype.toLowerCase;var sr=RegExp.prototype.test;var lr=Array.prototype.concat;var vr=Array.prototype.join;var dr=Array.prototype.slice;var br=Math.floor;var hr=typeof BigInt==="function"?BigInt.prototype.valueOf:null;var mr=Object.getOwnPropertySymbols;var gr=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?Symbol.prototype.toString:null;var Sr=typeof Symbol==="function"&&typeof Symbol.iterator==="object";var jr=typeof Symbol==="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Sr?"object":"symbol")?Symbol.toStringTag:null;var Ar=Object.prototype.propertyIsEnumerable;var wr=(typeof Reflect==="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(r){return r.__proto__}:null);function Or(r,e){if(r===Infinity||r===-Infinity||r!==r||r&&r>-1e3&&r<1e3||sr.call(/e/,e)){return e}var t=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof r==="number"){var n=r<0?-br(-r):br(r);if(n!==r){var o=String(n);var i=ur.call(e,o.length+1);return yr.call(o,t,"$&_")+"."+yr.call(yr.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return yr.call(e,t,"$&_")}var Pr=$.custom;var Er=Pr&&Br(Pr)?Pr:null;var Fr=function r(e,t,n,o){var i=t||{};if(_r(i,"quoteStyle")&&(i.quoteStyle!=="single"&&i.quoteStyle!=="double")){throw new TypeError('option "quoteStyle" must be "single" or "double"')}if(_r(i,"maxStringLength")&&(typeof i.maxStringLength==="number"?i.maxStringLength<0&&i.maxStringLength!==Infinity:i.maxStringLength!==null)){throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`')}var a=_r(i,"customInspect")?i.customInspect:true;if(typeof a!=="boolean"&&a!=="symbol"){throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`")}if(_r(i,"indent")&&i.indent!==null&&i.indent!=="\t"&&!(parseInt(i.indent,10)===i.indent&&i.indent>0)){throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`')}if(_r(i,"numericSeparator")&&typeof i.numericSeparator!=="boolean"){throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`')}var f=i.numericSeparator;if(typeof e==="undefined"){return"undefined"}if(e===null){return"null"}if(typeof e==="boolean"){return e?"true":"false"}if(typeof e==="string"){return Yr(e,i)}if(typeof e==="number"){if(e===0){return Infinity/e>0?"0":"-0"}var u=String(e);return f?Or(e,u):u}if(typeof e==="bigint"){var y=String(e)+"n";return f?Or(e,y):y}var c=typeof i.depth==="undefined"?5:i.depth;if(typeof n==="undefined"){n=0}if(n>=c&&c>0&&typeof e==="object"){return kr(e)?"[Array]":"[Object]"}var p=te(i,n);if(typeof o==="undefined"){o=[]}else if($r(o,e)>=0){return"[Circular]"}function s(e,t,a){if(t){o=dr.call(o);o.push(t)}if(a){var f={depth:i.depth};if(_r(i,"quoteStyle")){f.quoteStyle=i.quoteStyle}return r(e,f,n+1,o)}return r(e,i,n+1,o)}if(typeof e==="function"){var l=Gr(e);var v=oe(e,s);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(v.length>0?" { "+vr.call(v,", ")+" }":"")}if(Br(e)){var d=Sr?yr.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):gr.call(e);return typeof e==="object"&&!Sr?Xr(d):d}if(Qr(e)){var b="<"+pr.call(String(e.nodeName));var h=e.attributes||[];for(var m=0;m<h.length;m++){b+=" "+h[m].name+"="+Ir(Rr(h[m].value),"double",i)}b+=">";if(e.childNodes&&e.childNodes.length){b+="..."}b+="</"+pr.call(String(e.nodeName))+">";return b}if(kr(e)){if(e.length===0){return"[]"}var g=oe(e,s);if(p&&!ee(g)){return"["+ne(g,p)+"]"}return"[ "+vr.call(g,", ")+" ]"}if(Nr(e)){var S=oe(e,s);if("cause"in e&&!Ar.call(e,"cause")){return"{ ["+String(e)+"] "+vr.call(lr.call("[cause]: "+s(e.cause),S),", ")+" }"}if(S.length===0){return"["+String(e)+"]"}return"{ ["+String(e)+"] "+vr.call(S,", ")+" }"}if(typeof e==="object"&&a){if(Er&&typeof e[Er]==="function"){return e[Er]()}else if(a!=="symbol"&&typeof e.inspect==="function"){return e.inspect()}}if(Jr(e)){var j=[];L.call(e,(function(r,t){j.push(s(t,e,true)+" => "+s(r,e))}));return re("Map",H.call(e),j,p)}if(Lr(e)){var A=[];K.call(e,(function(r){A.push(s(r,e))}));return re("Set",Y.call(e),A,p)}if(Vr(e)){return Zr("WeakMap")}if(zr(e)){return Zr("WeakSet")}if(Hr(e)){return Zr("WeakRef")}if(Wr(e)){return Xr(s(Number(e)))}if(Dr(e)){return Xr(s(hr.call(e)))}if(Tr(e)){return Xr(or.call(e))}if(Ur(e)){return Xr(s(String(e)))}if(!Mr(e)&&!xr(e)){var w=oe(e,s);var O=wr?wr(e)===Object.prototype:e instanceof Object||e.constructor===Object;var P=e instanceof Object?"":"null prototype";var E=!O&&jr&&Object(e)===e&&jr in e?ur.call(qr(e),8,-1):P?"Object":"";var F=O||typeof e.constructor!=="function"?"":e.constructor.name?e.constructor.name+" ":"";var I=F+(E||P?"["+vr.call(lr.call([],E||[],P||[]),": ")+"] ":"");if(w.length===0){return I+"{}"}if(p){return I+"{"+ne(w,p)+"}"}return I+"{ "+vr.call(w,", ")+" }"}return String(e)};function Ir(r,e,t){var n=(t.quoteStyle||e)==="double"?'"':"'";return n+r+n}function Rr(r){return yr.call(String(r),/"/g,"&quot;")}function kr(r){return qr(r)==="[object Array]"&&(!jr||!(typeof r==="object"&&jr in r))}function Mr(r){return qr(r)==="[object Date]"&&(!jr||!(typeof r==="object"&&jr in r))}function xr(r){return qr(r)==="[object RegExp]"&&(!jr||!(typeof r==="object"&&jr in r))}function Nr(r){return qr(r)==="[object Error]"&&(!jr||!(typeof r==="object"&&jr in r))}function Ur(r){return qr(r)==="[object String]"&&(!jr||!(typeof r==="object"&&jr in r))}function Wr(r){return qr(r)==="[object Number]"&&(!jr||!(typeof r==="object"&&jr in r))}function Tr(r){return qr(r)==="[object Boolean]"&&(!jr||!(typeof r==="object"&&jr in r))}function Br(r){if(Sr){return r&&typeof r==="object"&&r instanceof Symbol}if(typeof r==="symbol"){return true}if(!r||typeof r!=="object"||!gr){return false}try{gr.call(r);return true}catch(e){}return false}function Dr(r){if(!r||typeof r!=="object"||!hr){return false}try{hr.call(r);return true}catch(e){}return false}var Cr=Object.prototype.hasOwnProperty||function(r){return r in this};function _r(r,e){return Cr.call(r,e)}function qr(r){return ir.call(r)}function Gr(r){if(r.name){return r.name}var e=fr.call(ar.call(r),/^function\s*([\w$]+)/);if(e){return e[1]}return null}function $r(r,e){if(r.indexOf){return r.indexOf(e)}for(var t=0,n=r.length;t<n;t++){if(r[t]===e){return t}}return-1}function Jr(r){if(!H||!r||typeof r!=="object"){return false}try{H.call(r);try{Y.call(r)}catch(e){return true}return r instanceof Map}catch(t){}return false}function Vr(r){if(!Z||!r||typeof r!=="object"){return false}try{Z.call(r,Z);try{er.call(r,er)}catch(e){return true}return r instanceof WeakMap}catch(t){}return false}function Hr(r){if(!nr||!r||typeof r!=="object"){return false}try{nr.call(r);return true}catch(e){}return false}function Lr(r){if(!Y||!r||typeof r!=="object"){return false}try{Y.call(r);try{H.call(r)}catch(e){return true}return r instanceof Set}catch(t){}return false}function zr(r){if(!er||!r||typeof r!=="object"){return false}try{er.call(r,er);try{Z.call(r,Z)}catch(e){return true}return r instanceof WeakSet}catch(t){}return false}function Qr(r){if(!r||typeof r!=="object"){return false}if(typeof HTMLElement!=="undefined"&&r instanceof HTMLElement){return true}return typeof r.nodeName==="string"&&typeof r.getAttribute==="function"}function Yr(r,e){if(r.length>e.maxStringLength){var t=r.length-e.maxStringLength;var n="... "+t+" more character"+(t>1?"s":"");return Yr(ur.call(r,0,e.maxStringLength),e)+n}var o=yr.call(yr.call(r,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Kr);return Ir(o,"single",e)}function Kr(r){var e=r.charCodeAt(0);var t={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];if(t){return"\\"+t}return"\\x"+(e<16?"0":"")+cr.call(e.toString(16))}function Xr(r){return"Object("+r+")"}function Zr(r){return r+" { ? }"}function re(r,e,t,n){var o=n?ne(t,n):vr.call(t,", ");return r+" ("+e+") {"+o+"}"}function ee(r){for(var e=0;e<r.length;e++){if($r(r[e],"\n")>=0){return false}}return true}function te(r,e){var t;if(r.indent==="\t"){t="\t"}else if(typeof r.indent==="number"&&r.indent>0){t=vr.call(Array(r.indent+1)," ")}else{return null}return{base:t,prev:vr.call(Array(e+1),t)}}function ne(r,e){if(r.length===0){return""}var t="\n"+e.prev+e.base;return t+vr.call(r,","+t)+"\n"+e.prev}function oe(r,e){var t=kr(r);var n=[];if(t){n.length=r.length;for(var o=0;o<r.length;o++){n[o]=_r(r,o)?e(r[o],r):""}}var i=typeof mr==="function"?mr(r):[];var a;if(Sr){a={};for(var f=0;f<i.length;f++){a["$"+i[f]]=i[f]}}for(var u in r){if(!_r(r,u)){continue}if(t&&String(Number(u))===u&&u<r.length){continue}if(Sr&&a["$"+u]instanceof Symbol){continue}else if(sr.call(/[^\w$]/,u)){n.push(e(u,r)+": "+e(r[u],r))}else{n.push(u+": "+e(r[u],r))}}if(typeof mr==="function"){for(var y=0;y<i.length;y++){if(Ar.call(r,i[y])){n.push("["+e(i[y])+"]: "+e(r[i[y]],r))}}}return n}var ie=B("%TypeError%");var ae=B("%WeakMap%",true);var fe=B("%Map%",true);var ue=_("WeakMap.prototype.get",true);var ye=_("WeakMap.prototype.set",true);var ce=_("WeakMap.prototype.has",true);var pe=_("Map.prototype.get",true);var se=_("Map.prototype.set",true);var le=_("Map.prototype.has",true);var ve=function(r,e){for(var t=r,n;(n=t.next)!==null;t=n){if(n.key===e){t.next=n.next;n.next=r.next;r.next=n;return n}}};var de=function(r,e){var t=ve(r,e);return t&&t.value};var be=function(r,e,t){var n=ve(r,e);if(n){n.value=t}else{r.next={key:e,next:r.next,value:t}}};var he=function(r,e){return!!ve(r,e)};var me=function r(){var e;var t;var n;var o={assert:function(r){if(!o.has(r)){throw new ie("Side channel does not contain "+Fr(r))}},get:function(r){if(ae&&r&&(typeof r==="object"||typeof r==="function")){if(e){return ue(e,r)}}else if(fe){if(t){return pe(t,r)}}else{if(n){return de(n,r)}}},has:function(r){if(ae&&r&&(typeof r==="object"||typeof r==="function")){if(e){return ce(e,r)}}else if(fe){if(t){return le(t,r)}}else{if(n){return he(n,r)}}return false},set:function(r,o){if(ae&&r&&(typeof r==="object"||typeof r==="function")){if(!e){e=new ae}ye(e,r,o)}else if(fe){if(!t){t=new fe}se(t,r,o)}else{if(!n){n={key:{},next:null}}be(n,r,o)}}};return o};var ge=String.prototype.replace;var Se=/%20/g;var je={RFC1738:"RFC1738",RFC3986:"RFC3986"};var Ae={default:je.RFC3986,formatters:{RFC1738:function(r){return ge.call(r,Se,"+")},RFC3986:function(r){return String(r)}},RFC1738:je.RFC1738,RFC3986:je.RFC3986};var we=Object.prototype.hasOwnProperty;var Oe=Array.isArray;var Pe=function(){var r=[];for(var e=0;e<256;++e){r.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase())}return r}();var Ee=function r(e){while(e.length>1){var t=e.pop();var n=t.obj[t.prop];if(Oe(n)){var o=[];for(var i=0;i<n.length;++i){if(typeof n[i]!=="undefined"){o.push(n[i])}}t.obj[t.prop]=o}}};var Fe=function r(e,t){var n=t&&t.plainObjects?Object.create(null):{};for(var o=0;o<e.length;++o){if(typeof e[o]!=="undefined"){n[o]=e[o]}}return n};var Ie=function r(e,t,n){if(!t){return e}if(typeof t!=="object"){if(Oe(e)){e.push(t)}else if(e&&typeof e==="object"){if(n&&(n.plainObjects||n.allowPrototypes)||!we.call(Object.prototype,t)){e[t]=true}}else{return[e,t]}return e}if(!e||typeof e!=="object"){return[e].concat(t)}var o=e;if(Oe(e)&&!Oe(t)){o=Fe(e,n)}if(Oe(e)&&Oe(t)){t.forEach((function(t,o){if(we.call(e,o)){var i=e[o];if(i&&typeof i==="object"&&t&&typeof t==="object"){e[o]=r(i,t,n)}else{e.push(t)}}else{e[o]=t}}));return e}return Object.keys(t).reduce((function(e,o){var i=t[o];if(we.call(e,o)){e[o]=r(e[o],i,n)}else{e[o]=i}return e}),o)};var Re=function r(e,t){return Object.keys(t).reduce((function(r,e){r[e]=t[e];return r}),e)};var ke=function(r,e,t){var n=r.replace(/\+/g," ");if(t==="iso-8859-1"){return n.replace(/%[0-9a-f]{2}/gi,unescape)}try{return decodeURIComponent(n)}catch(o){return n}};var Me=function r(e,t,n,o,i){if(e.length===0){return e}var a=e;if(typeof e==="symbol"){a=Symbol.prototype.toString.call(e)}else if(typeof e!=="string"){a=String(e)}if(n==="iso-8859-1"){return escape(a).replace(/%u[0-9a-f]{4}/gi,(function(r){return"%26%23"+parseInt(r.slice(2),16)+"%3B"}))}var f="";for(var u=0;u<a.length;++u){var y=a.charCodeAt(u);if(y===45||y===46||y===95||y===126||y>=48&&y<=57||y>=65&&y<=90||y>=97&&y<=122||i===Ae.RFC1738&&(y===40||y===41)){f+=a.charAt(u);continue}if(y<128){f=f+Pe[y];continue}if(y<2048){f=f+(Pe[192|y>>6]+Pe[128|y&63]);continue}if(y<55296||y>=57344){f=f+(Pe[224|y>>12]+Pe[128|y>>6&63]+Pe[128|y&63]);continue}u+=1;y=65536+((y&1023)<<10|a.charCodeAt(u)&1023);f+=Pe[240|y>>18]+Pe[128|y>>12&63]+Pe[128|y>>6&63]+Pe[128|y&63]}return f};var xe=function r(e){var t=[{obj:{o:e},prop:"o"}];var n=[];for(var o=0;o<t.length;++o){var i=t[o];var a=i.obj[i.prop];var f=Object.keys(a);for(var u=0;u<f.length;++u){var y=f[u];var c=a[y];if(typeof c==="object"&&c!==null&&n.indexOf(c)===-1){t.push({obj:a,prop:y});n.push(c)}}}Ee(t);return e};var Ne=function r(e){return Object.prototype.toString.call(e)==="[object RegExp]"};var Ue=function r(e){if(!e||typeof e!=="object"){return false}return!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))};var We=function r(e,t){return[].concat(e,t)};var Te=function r(e,t){if(Oe(e)){var n=[];for(var o=0;o<e.length;o+=1){n.push(t(e[o]))}return n}return t(e)};var Be={arrayToObject:Fe,assign:Re,combine:We,compact:xe,decode:ke,encode:Me,isBuffer:Ue,isRegExp:Ne,maybeMap:Te,merge:Ie};var De=Object.prototype.hasOwnProperty;var Ce={brackets:function r(e){return e+"[]"},comma:"comma",indices:function r(e,t){return e+"["+t+"]"},repeat:function r(e){return e}};var _e=Array.isArray;var qe=String.prototype.split;var Ge=Array.prototype.push;var $e=function(r,e){Ge.apply(r,_e(e)?e:[e])};var Je=Date.prototype.toISOString;var Ve=Ae["default"];var He={addQueryPrefix:false,allowDots:false,charset:"utf-8",charsetSentinel:false,delimiter:"&",encode:true,encoder:Be.encode,encodeValuesOnly:false,format:Ve,formatter:Ae.formatters[Ve],indices:false,serializeDate:function r(e){return Je.call(e)},skipNulls:false,strictNullHandling:false};var Le=function r(e){return typeof e==="string"||typeof e==="number"||typeof e==="boolean"||typeof e==="symbol"||typeof e==="bigint"};var ze={};var Qe=function r(e,t,n,o,i,a,f,u,y,c,p,s,l,v,d){var b=e;var h=d;var m=0;var g=false;while((h=h.get(ze))!==void undefined&&!g){var S=h.get(e);m+=1;if(typeof S!=="undefined"){if(S===m){throw new RangeError("Cyclic object value")}else{g=true}}if(typeof h.get(ze)==="undefined"){m=0}}if(typeof f==="function"){b=f(t,b)}else if(b instanceof Date){b=c(b)}else if(n==="comma"&&_e(b)){b=Be.maybeMap(b,(function(r){if(r instanceof Date){return c(r)}return r}))}if(b===null){if(o){return a&&!l?a(t,He.encoder,v,"key",p):t}b=""}if(Le(b)||Be.isBuffer(b)){if(a){var j=l?t:a(t,He.encoder,v,"key",p);if(n==="comma"&&l){var A=qe.call(String(b),",");var w="";for(var O=0;O<A.length;++O){w+=(O===0?"":",")+s(a(A[O],He.encoder,v,"value",p))}return[s(j)+"="+w]}return[s(j)+"="+s(a(b,He.encoder,v,"value",p))]}return[s(t)+"="+s(String(b))]}var P=[];if(typeof b==="undefined"){return P}var E;if(n==="comma"&&_e(b)){E=[{value:b.length>0?b.join(",")||null:void undefined}]}else if(_e(f)){E=f}else{var F=Object.keys(b);E=u?F.sort(u):F}for(var I=0;I<E.length;++I){var R=E[I];var k=typeof R==="object"&&typeof R.value!=="undefined"?R.value:b[R];if(i&&k===null){continue}var M=_e(b)?typeof n==="function"?n(t,R):t:t+(y?"."+R:"["+R+"]");d.set(e,m);var x=me();x.set(ze,d);$e(P,r(k,M,n,o,i,a,f,u,y,c,p,s,l,v,x))}return P};var Ye=function r(e){if(!e){return He}if(e.encoder!==null&&typeof e.encoder!=="undefined"&&typeof e.encoder!=="function"){throw new TypeError("Encoder has to be a function.")}var t=e.charset||He.charset;if(typeof e.charset!=="undefined"&&e.charset!=="utf-8"&&e.charset!=="iso-8859-1"){throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined")}var n=Ae["default"];if(typeof e.format!=="undefined"){if(!De.call(Ae.formatters,e.format)){throw new TypeError("Unknown format option provided.")}n=e.format}var o=Ae.formatters[n];var i=He.filter;if(typeof e.filter==="function"||_e(e.filter)){i=e.filter}return{addQueryPrefix:typeof e.addQueryPrefix==="boolean"?e.addQueryPrefix:He.addQueryPrefix,allowDots:typeof e.allowDots==="undefined"?He.allowDots:!!e.allowDots,charset:t,charsetSentinel:typeof e.charsetSentinel==="boolean"?e.charsetSentinel:He.charsetSentinel,delimiter:typeof e.delimiter==="undefined"?He.delimiter:e.delimiter,encode:typeof e.encode==="boolean"?e.encode:He.encode,encoder:typeof e.encoder==="function"?e.encoder:He.encoder,encodeValuesOnly:typeof e.encodeValuesOnly==="boolean"?e.encodeValuesOnly:He.encodeValuesOnly,filter:i,format:n,formatter:o,serializeDate:typeof e.serializeDate==="function"?e.serializeDate:He.serializeDate,skipNulls:typeof e.skipNulls==="boolean"?e.skipNulls:He.skipNulls,sort:typeof e.sort==="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling==="boolean"?e.strictNullHandling:He.strictNullHandling}};var Ke=function(r,e){var t=r;var n=Ye(e);var o;var i;if(typeof n.filter==="function"){i=n.filter;t=i("",t)}else if(_e(n.filter)){i=n.filter;o=i}var a=[];if(typeof t!=="object"||t===null){return""}var f;if(e&&e.arrayFormat in Ce){f=e.arrayFormat}else if(e&&"indices"in e){f=e.indices?"indices":"repeat"}else{f="indices"}var u=Ce[f];if(!o){o=Object.keys(t)}if(n.sort){o.sort(n.sort)}var y=me();for(var c=0;c<o.length;++c){var p=o[c];if(n.skipNulls&&t[p]===null){continue}$e(a,Qe(t[p],p,u,n.strictNullHandling,n.skipNulls,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,y))}var s=a.join(n.delimiter);var l=n.addQueryPrefix===true?"?":"";if(n.charsetSentinel){if(n.charset==="iso-8859-1"){l+="utf8=%26%2310003%3B&"}else{l+="utf8=%E2%9C%93&"}}return s.length>0?l+s:""};var Xe=Object.prototype.hasOwnProperty;var Ze=Array.isArray;var rt={allowDots:false,allowPrototypes:false,allowSparse:false,arrayLimit:20,charset:"utf-8",charsetSentinel:false,comma:false,decoder:Be.decode,delimiter:"&",depth:5,ignoreQueryPrefix:false,interpretNumericEntities:false,parameterLimit:1e3,parseArrays:true,plainObjects:false,strictNullHandling:false};var et=function(r){return r.replace(/&#(\d+);/g,(function(r,e){return String.fromCharCode(parseInt(e,10))}))};var tt=function(r,e){if(r&&typeof r==="string"&&e.comma&&r.indexOf(",")>-1){return r.split(",")}return r};var nt="utf8=%26%2310003%3B";var ot="utf8=%E2%9C%93";var it=function r(e,t){var n={};var o=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;var i=t.parameterLimit===Infinity?undefined:t.parameterLimit;var a=o.split(t.delimiter,i);var f=-1;var u;var y=t.charset;if(t.charsetSentinel){for(u=0;u<a.length;++u){if(a[u].indexOf("utf8=")===0){if(a[u]===ot){y="utf-8"}else if(a[u]===nt){y="iso-8859-1"}f=u;u=a.length}}}for(u=0;u<a.length;++u){if(u===f){continue}var c=a[u];var p=c.indexOf("]=");var s=p===-1?c.indexOf("="):p+1;var l,v;if(s===-1){l=t.decoder(c,rt.decoder,y,"key");v=t.strictNullHandling?null:""}else{l=t.decoder(c.slice(0,s),rt.decoder,y,"key");v=Be.maybeMap(tt(c.slice(s+1),t),(function(r){return t.decoder(r,rt.decoder,y,"value")}))}if(v&&t.interpretNumericEntities&&y==="iso-8859-1"){v=et(v)}if(c.indexOf("[]=")>-1){v=Ze(v)?[v]:v}if(Xe.call(n,l)){n[l]=Be.combine(n[l],v)}else{n[l]=v}}return n};var at=function(r,e,t,n){var o=n?e:tt(e,t);for(var i=r.length-1;i>=0;--i){var a;var f=r[i];if(f==="[]"&&t.parseArrays){a=[].concat(o)}else{a=t.plainObjects?Object.create(null):{};var u=f.charAt(0)==="["&&f.charAt(f.length-1)==="]"?f.slice(1,-1):f;var y=parseInt(u,10);if(!t.parseArrays&&u===""){a={0:o}}else if(!isNaN(y)&&f!==u&&String(y)===u&&y>=0&&(t.parseArrays&&y<=t.arrayLimit)){a=[];a[y]=o}else if(u!=="__proto__"){a[u]=o}}o=a}return o};var ft=function r(e,t,n,o){if(!e){return}var i=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e;var a=/(\[[^[\]]*])/;var f=/(\[[^[\]]*])/g;var u=n.depth>0&&a.exec(i);var y=u?i.slice(0,u.index):i;var c=[];if(y){if(!n.plainObjects&&Xe.call(Object.prototype,y)){if(!n.allowPrototypes){return}}c.push(y)}var p=0;while(n.depth>0&&(u=f.exec(i))!==null&&p<n.depth){p+=1;if(!n.plainObjects&&Xe.call(Object.prototype,u[1].slice(1,-1))){if(!n.allowPrototypes){return}}c.push(u[1])}if(u){c.push("["+i.slice(u.index)+"]")}return at(c,t,n,o)};var ut=function r(e){if(!e){return rt}if(e.decoder!==null&&e.decoder!==undefined&&typeof e.decoder!=="function"){throw new TypeError("Decoder has to be a function.")}if(typeof e.charset!=="undefined"&&e.charset!=="utf-8"&&e.charset!=="iso-8859-1"){throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined")}var t=typeof e.charset==="undefined"?rt.charset:e.charset;return{allowDots:typeof e.allowDots==="undefined"?rt.allowDots:!!e.allowDots,allowPrototypes:typeof e.allowPrototypes==="boolean"?e.allowPrototypes:rt.allowPrototypes,allowSparse:typeof e.allowSparse==="boolean"?e.allowSparse:rt.allowSparse,arrayLimit:typeof e.arrayLimit==="number"?e.arrayLimit:rt.arrayLimit,charset:t,charsetSentinel:typeof e.charsetSentinel==="boolean"?e.charsetSentinel:rt.charsetSentinel,comma:typeof e.comma==="boolean"?e.comma:rt.comma,decoder:typeof e.decoder==="function"?e.decoder:rt.decoder,delimiter:typeof e.delimiter==="string"||Be.isRegExp(e.delimiter)?e.delimiter:rt.delimiter,depth:typeof e.depth==="number"||e.depth===false?+e.depth:rt.depth,ignoreQueryPrefix:e.ignoreQueryPrefix===true,interpretNumericEntities:typeof e.interpretNumericEntities==="boolean"?e.interpretNumericEntities:rt.interpretNumericEntities,parameterLimit:typeof e.parameterLimit==="number"?e.parameterLimit:rt.parameterLimit,parseArrays:e.parseArrays!==false,plainObjects:typeof e.plainObjects==="boolean"?e.plainObjects:rt.plainObjects,strictNullHandling:typeof e.strictNullHandling==="boolean"?e.strictNullHandling:rt.strictNullHandling}};var yt=function(r,e){var t=ut(e);if(r===""||r===null||typeof r==="undefined"){return t.plainObjects?Object.create(null):{}}var n=typeof r==="string"?it(r,t):r;var o=t.plainObjects?Object.create(null):{};var i=Object.keys(n);for(var a=0;a<i.length;++a){var f=i[a];var u=ft(f,n[f],t,typeof r==="string");o=Be.merge(o,u,t)}if(t.allowSparse===true){return o}return Be.compact(o)};var ct={formats:Ae,parse:yt,stringify:Ke};const pt="nano-component-store:";const st=(r="hash",e=window)=>{if(!e||!e.location)return{};if(r==="hash"&&e.location.hash)return ct.parse(e.location.hash.replace(/^\#/,""),{strictNullHandling:true});else if(r==="query"&&e.location.search)return ct.parse(e.location.search,{ignoreQueryPrefix:true});return{}};const lt=(r,e="hash",t=window,n="replace")=>{if(!t||!t.history)return;const o=e==="query"?t.location.search:t.location.hash;let i=e==="query"?t.location.pathname:t.location.pathname+t.location.search;let a=ct.stringify(r,{strictNullHandling:true,addQueryPrefix:false,encodeValuesOnly:true});if(!a||!a.length){if(!o||!o.length)return;if(n==="replace")t.history.replaceState(null,null,i);else t.history.pushState(null,null,i);return}if(e==="hash"&&t.location.hash==="#"+a){try{document.querySelector("#"+a).focus()}catch(f){}return}a=(e==="hash"?"#":"?")+a;if(a===o)return;if(n==="replace")t.history.replaceState(null,null,i+a);else t.history.pushState(null,null,i+a)};const vt=(r,e="hash",t=window,n="replace")=>{let o=st(e,t);o=Object.assign(Object.assign({},o),r);lt(o,e,t,n)};const dt=(r,e="hash",t=window)=>{let n=st(e,t);return n[r]||null};const bt=(r,e,t=window)=>{try{t.sessionStorage.setItem(pt+r,JSON.stringify(e))}catch(n){throw n}};const ht=(r,e=window)=>{try{const t=e.sessionStorage.getItem(pt+r);return t!==null?JSON.parse(t):null}catch(t){throw t}};const mt=(r,e,t=window)=>{try{t.localStorage.setItem(pt+r,JSON.stringify(e))}catch(n){throw n}};const gt=(r,e=window)=>{try{const t=e.localStorage.getItem(pt+r);return t!==null?JSON.parse(t):null}catch(t){throw t}};const St=new Map;const jt={init(e,t,n,o){const i=o||e.storeId||r(e).id;if(!i){console.error("No id set. You can only instantiate a new component store with an id. ");return}if(St.get(i)){console.error("Duplicate store id usage. A store ID must be unique!",i);return}const a=t.reduce(((r,t)=>{if(typeof e[t]!==undefined)r[t]=e[t];return r}),{});St.set(i,new At(i,e,t,a,n));let f=St.get(i);f.dispatchToProps();const u=e.connectedCallback;e.connectedCallback=function(){St.set(i,new At(i,e,t,a,n));let r=St.get(i);if(u){u.call(e)}if(r)r.dispatchToProps()};const y=e.componentDidRender;e.componentDidRender=function(){let r=St.get(i);if(y){y.call(e)}if(r)r.savePropsToStore()};const c=e.disconnectedCallback;e.disconnectedCallback=function(){let r=St.get(i);if(r)r.delete();St.delete(i);if(c){c.call(e)}}}};class At{constructor(r,e,t,o,i){this.method="session";this.initialState={};this.updateStore=true;this.onUrlChange=()=>{this.dispatchToProps(false)};this.savePropsToStore=()=>{if(this.updateStore){this.save(this.getData)}else if(!this.updateStore)this.updateStore=true};this.dispatchToProps=(r=true)=>{let e=this.retrieve();if(!e&&r)return;this.updateStore=r;this.keys.forEach((r=>{this.component[r]=e?e[r]:undefined}))};this.delete=()=>{if(this.method==="url-hash-push"||this.method==="url-query-push"){window.removeEventListener("popstate",this.onUrlChange)}};if(!r)throw new Error("No id set. You can only instantiate a new component store with an id");this.id=r;this.keys=t;this.component=e;if(o)this.initialState=o;if(i)this.method=i;this.savePropsToStore=n(this.savePropsToStore,500);if(this.method==="url-hash-push"||this.method==="url-query-push"){window.addEventListener("popstate",this.onUrlChange)}}equality(r,e){if(typeof r!==typeof e)return false;if(typeof r!=="object")return r===e;return JSON.stringify(r)===JSON.stringify(e)}get getData(){const r=this.keys.reduce(((r,e)=>{let t=this.equality(this.component[e],this.initialState[e]);if(typeof this.component[e]!=="undefined"&&!t){r[e]=this.component[e]}else if(t)delete r[e];return r}),{});return Object.keys(r).length?r:undefined}retrieve(){switch(this.method){case"url-hash":case"url-hash-push":return dt(this.id,"hash");case"url-query":case"url-query-push":return dt(this.id,"query");case"local":return gt(this.id);default:return ht(this.id)}}save(r){let e={};switch(this.method){case"url-hash":e[this.id]=r;return vt(e,"hash");case"url-query":e[this.id]=r;return vt(e,"query");case"url-hash-push":e[this.id]=r;return vt(e,"hash",window,"push");case"url-query-push":e[this.id]=r;return vt(e,"query",window,"push");case"local":if(!r)return;return mt(this.id,r);default:if(!r)return;return bt(this.id,r)}}}export{jt as C};
5
- //# sourceMappingURL=p-5a0095f9.js.map