@nanoporetech-digital/components 2.10.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/{date-utils-0ae9a12d.js → date-utils-b3af910d.js} +2 -2
  3. package/dist/cjs/date-utils-b3af910d.js.map +1 -0
  4. package/dist/cjs/{global-0d4f3b77.js → global-989678ec.js} +1 -8
  5. package/dist/cjs/global-989678ec.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/nano-components.cjs.js +2 -2
  8. package/dist/cjs/nano-datalist_3.cjs.entry.js +3 -1
  9. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nano-date-input.cjs.entry.js +13 -5
  11. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
  13. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nano-details.cjs.entry.js +1 -2
  15. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  16. package/dist/cjs/nano-global-search-results.cjs.entry.js +1 -2
  17. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nano-grid_3.cjs.entry.js +1 -2
  19. package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-icon-button.cjs.entry.js +4 -0
  21. package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -2
  23. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nano-slides.cjs.entry.js +1 -2
  25. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nano-sticker.cjs.entry.js +2 -3
  27. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-tab-group.cjs.entry.js +4 -2
  29. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-tab.cjs.entry.js +5 -1
  31. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
  33. package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -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.js +2 -2
  41. package/dist/collection/components/checkbox/checkbox.js +3 -3
  42. package/dist/collection/components/datalist/datalist.js +4 -2
  43. package/dist/collection/components/datalist/datalist.js.map +1 -1
  44. package/dist/collection/components/date-input/date-input.js +62 -11
  45. package/dist/collection/components/date-input/date-input.js.map +1 -1
  46. package/dist/collection/components/date-picker/date-picker.css +1 -1
  47. package/dist/collection/components/date-picker/date-picker.js +5 -5
  48. package/dist/collection/components/details/details.js +1 -2
  49. package/dist/collection/components/details/details.js.map +1 -1
  50. package/dist/collection/components/dialog/dialog.js +1 -1
  51. package/dist/collection/components/dropdown/dropdown.js +1 -1
  52. package/dist/collection/components/file-upload/file-upload.js +4 -4
  53. package/dist/collection/components/global-nav/global-nav.js +4 -4
  54. package/dist/collection/components/global-search-results/global-search-results.js +0 -1
  55. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  56. package/dist/collection/components/grid/grid-item.js +1 -1
  57. package/dist/collection/components/grid/grid.js +0 -1
  58. package/dist/collection/components/grid/grid.js.map +1 -1
  59. package/dist/collection/components/icon/icon.js +1 -1
  60. package/dist/collection/components/icon-button/icon-button.js +23 -1
  61. package/dist/collection/components/icon-button/icon-button.js.map +1 -1
  62. package/dist/collection/components/input/input.js +5 -5
  63. package/dist/collection/components/nav-item/nav-item.js +4 -4
  64. package/dist/collection/components/range/range.js +4 -4
  65. package/dist/collection/components/resize-observe/resize-observe.js +1 -2
  66. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  67. package/dist/collection/components/select/select.js +7 -7
  68. package/dist/collection/components/slides/slides.js +7 -8
  69. package/dist/collection/components/slides/slides.js.map +1 -1
  70. package/dist/collection/components/sticker/sticker.js +0 -1
  71. package/dist/collection/components/sticker/sticker.js.map +1 -1
  72. package/dist/collection/components/tabs/tab-group.js +5 -3
  73. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  74. package/dist/collection/components/tabs/tab.js +5 -1
  75. package/dist/collection/components/tabs/tab.js.map +1 -1
  76. package/dist/collection/components/tooltip/tooltip.css +0 -1
  77. package/dist/collection/global/script/global.js +0 -7
  78. package/dist/collection/global/script/global.js.map +1 -1
  79. package/dist/collection/utils/date-utils.js +1 -1
  80. package/dist/collection/utils/date-utils.js.map +1 -1
  81. package/dist/components/datalist.js +3 -1
  82. package/dist/components/datalist.js.map +1 -1
  83. package/dist/components/date-picker.js +2 -2
  84. package/dist/components/date-picker.js.map +1 -1
  85. package/dist/components/grid.js +1 -2
  86. package/dist/components/grid.js.map +1 -1
  87. package/dist/components/icon-button.js +6 -1
  88. package/dist/components/icon-button.js.map +1 -1
  89. package/dist/components/index.js +0 -7
  90. package/dist/components/index.js.map +1 -1
  91. package/dist/components/nano-date-input.js +14 -4
  92. package/dist/components/nano-date-input.js.map +1 -1
  93. package/dist/components/nano-details.js +1 -2
  94. package/dist/components/nano-details.js.map +1 -1
  95. package/dist/components/nano-global-search-results.js +1 -2
  96. package/dist/components/nano-global-search-results.js.map +1 -1
  97. package/dist/components/nano-slides.js +1 -2
  98. package/dist/components/nano-slides.js.map +1 -1
  99. package/dist/components/nano-tab-group.js +4 -2
  100. package/dist/components/nano-tab-group.js.map +1 -1
  101. package/dist/components/nano-tab.js +5 -1
  102. package/dist/components/nano-tab.js.map +1 -1
  103. package/dist/components/resize-observe.js +1 -2
  104. package/dist/components/resize-observe.js.map +1 -1
  105. package/dist/components/sticker.js +2 -3
  106. package/dist/components/sticker.js.map +1 -1
  107. package/dist/components/tooltip.js +1 -1
  108. package/dist/components/tooltip.js.map +1 -1
  109. package/dist/custom-elements/index.js +41 -1938
  110. package/dist/custom-elements/index.js.map +1 -1
  111. package/dist/esm/{date-utils-e4b757ff.js → date-utils-839cb010.js} +2 -2
  112. package/dist/esm/date-utils-839cb010.js.map +1 -0
  113. package/dist/esm/{global-d5ec4d53.js → global-8047b4ff.js} +1 -8
  114. package/dist/esm/global-8047b4ff.js.map +1 -0
  115. package/dist/esm/loader.js +2 -2
  116. package/dist/esm/nano-components.js +2 -2
  117. package/dist/esm/nano-datalist_3.entry.js +3 -1
  118. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  119. package/dist/esm/nano-date-input.entry.js +13 -5
  120. package/dist/esm/nano-date-input.entry.js.map +1 -1
  121. package/dist/esm/nano-date-picker.entry.js +2 -2
  122. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  123. package/dist/esm/nano-details.entry.js +1 -2
  124. package/dist/esm/nano-details.entry.js.map +1 -1
  125. package/dist/esm/nano-global-search-results.entry.js +1 -2
  126. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  127. package/dist/esm/nano-grid_3.entry.js +1 -2
  128. package/dist/esm/nano-grid_3.entry.js.map +1 -1
  129. package/dist/esm/nano-icon-button.entry.js +4 -0
  130. package/dist/esm/nano-icon-button.entry.js.map +1 -1
  131. package/dist/esm/nano-resize-observe_2.entry.js +1 -2
  132. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  133. package/dist/esm/nano-slides.entry.js +1 -2
  134. package/dist/esm/nano-slides.entry.js.map +1 -1
  135. package/dist/esm/nano-sticker.entry.js +2 -3
  136. package/dist/esm/nano-sticker.entry.js.map +1 -1
  137. package/dist/esm/nano-tab-group.entry.js +4 -2
  138. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  139. package/dist/esm/nano-tab.entry.js +5 -1
  140. package/dist/esm/nano-tab.entry.js.map +1 -1
  141. package/dist/esm/nano-tooltip.entry.js +1 -1
  142. package/dist/esm/nano-tooltip.entry.js.map +1 -1
  143. package/dist/esm-es5/date-utils-839cb010.js +5 -0
  144. package/dist/esm-es5/date-utils-839cb010.js.map +1 -0
  145. package/dist/esm-es5/{global-d5ec4d53.js → global-8047b4ff.js} +2 -2
  146. package/dist/esm-es5/global-8047b4ff.js.map +1 -0
  147. package/dist/esm-es5/loader.js +1 -1
  148. package/dist/esm-es5/loader.js.map +1 -1
  149. package/dist/esm-es5/nano-components.js +1 -1
  150. package/dist/esm-es5/nano-components.js.map +1 -1
  151. package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
  152. package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
  153. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  154. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  155. package/dist/esm-es5/nano-date-picker.entry.js +1 -1
  156. package/dist/esm-es5/nano-date-picker.entry.js.map +1 -1
  157. package/dist/esm-es5/nano-details.entry.js +1 -1
  158. package/dist/esm-es5/nano-details.entry.js.map +1 -1
  159. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  160. package/dist/esm-es5/nano-global-search-results.entry.js.map +1 -1
  161. package/dist/esm-es5/nano-grid_3.entry.js +1 -1
  162. package/dist/esm-es5/nano-grid_3.entry.js.map +1 -1
  163. package/dist/esm-es5/nano-icon-button.entry.js +2 -2
  164. package/dist/esm-es5/nano-icon-button.entry.js.map +1 -1
  165. package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
  166. package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
  167. package/dist/esm-es5/nano-slides.entry.js +2 -2
  168. package/dist/esm-es5/nano-slides.entry.js.map +1 -1
  169. package/dist/esm-es5/nano-sticker.entry.js +1 -1
  170. package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
  171. package/dist/esm-es5/nano-tab-group.entry.js +2 -2
  172. package/dist/esm-es5/nano-tab-group.entry.js.map +1 -1
  173. package/dist/esm-es5/nano-tab.entry.js +2 -2
  174. package/dist/esm-es5/nano-tab.entry.js.map +1 -1
  175. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  176. package/dist/esm-es5/nano-tooltip.entry.js.map +1 -1
  177. package/dist/nano-components/nano-components.esm.js +1 -1
  178. package/dist/nano-components/nano-components.esm.js.map +1 -1
  179. package/dist/nano-components/nano-components.js +1 -1
  180. package/dist/nano-components/p-0193a282.entry.js +5 -0
  181. package/dist/nano-components/p-0193a282.entry.js.map +1 -0
  182. package/dist/nano-components/p-0320410c.entry.js +5 -0
  183. package/dist/nano-components/p-0320410c.entry.js.map +1 -0
  184. package/dist/nano-components/p-2720ee8f.entry.js +5 -0
  185. package/dist/nano-components/p-2720ee8f.entry.js.map +1 -0
  186. package/dist/nano-components/p-32900c91.entry.js +5 -0
  187. package/dist/nano-components/p-32900c91.entry.js.map +1 -0
  188. package/dist/nano-components/p-33fce1a6.js +5 -0
  189. package/dist/nano-components/p-33fce1a6.js.map +1 -0
  190. package/dist/nano-components/p-371aebe7.system.entry.js +23 -0
  191. package/dist/nano-components/p-371aebe7.system.entry.js.map +1 -0
  192. package/dist/nano-components/p-41899a31.system.entry.js +5 -0
  193. package/dist/nano-components/p-41899a31.system.entry.js.map +1 -0
  194. package/dist/nano-components/p-53957ec6.system.js +5 -0
  195. package/dist/nano-components/{p-e7140887.system.js.map → p-53957ec6.system.js.map} +1 -1
  196. package/dist/nano-components/p-561500f0.system.entry.js +5 -0
  197. package/dist/nano-components/p-561500f0.system.entry.js.map +1 -0
  198. package/dist/nano-components/p-70272eae.js +5 -0
  199. package/dist/nano-components/p-70272eae.js.map +1 -0
  200. package/dist/nano-components/p-755d9227.entry.js +5 -0
  201. package/dist/nano-components/p-755d9227.entry.js.map +1 -0
  202. package/dist/nano-components/p-7bd25494.entry.js +5 -0
  203. package/dist/nano-components/p-7bd25494.entry.js.map +1 -0
  204. package/dist/nano-components/p-7c837460.entry.js +5 -0
  205. package/dist/nano-components/p-7c837460.entry.js.map +1 -0
  206. package/dist/nano-components/{p-93880c28.system.js → p-82e28afd.system.js} +2 -2
  207. package/dist/nano-components/p-82e28afd.system.js.map +1 -0
  208. package/dist/nano-components/p-8378428e.system.js +5 -0
  209. package/dist/nano-components/p-8378428e.system.js.map +1 -0
  210. package/dist/nano-components/p-8df4f125.system.entry.js +5 -0
  211. package/dist/nano-components/p-8df4f125.system.entry.js.map +1 -0
  212. package/dist/nano-components/{p-d0385948.system.entry.js → p-93596c3d.system.entry.js} +2 -2
  213. package/dist/nano-components/p-93596c3d.system.entry.js.map +1 -0
  214. package/dist/nano-components/{p-3e930ac7.entry.js → p-9d9b0b66.entry.js} +2 -2
  215. package/dist/nano-components/p-9d9b0b66.entry.js.map +1 -0
  216. package/dist/nano-components/p-9ffdf6cc.entry.js +5 -0
  217. package/dist/nano-components/{p-222d8095.entry.js.map → p-9ffdf6cc.entry.js.map} +1 -1
  218. package/dist/nano-components/p-a1444980.entry.js +5 -0
  219. package/dist/nano-components/p-a1444980.entry.js.map +1 -0
  220. package/dist/nano-components/p-aa84c727.system.entry.js +5 -0
  221. package/dist/nano-components/p-aa84c727.system.entry.js.map +1 -0
  222. package/dist/nano-components/p-ac5e3775.system.entry.js +5 -0
  223. package/dist/nano-components/p-ac5e3775.system.entry.js.map +1 -0
  224. package/dist/nano-components/p-b85cf493.system.entry.js +5 -0
  225. package/dist/nano-components/{p-e817ab4a.system.entry.js.map → p-b85cf493.system.entry.js.map} +1 -1
  226. package/dist/nano-components/{p-1030797a.entry.js → p-d37e1489.entry.js} +2 -2
  227. package/dist/nano-components/p-d37e1489.entry.js.map +1 -0
  228. package/dist/nano-components/p-d61ae833.system.entry.js +5 -0
  229. package/dist/nano-components/p-d61ae833.system.entry.js.map +1 -0
  230. package/dist/nano-components/p-d93274de.entry.js +5 -0
  231. package/dist/nano-components/p-d93274de.entry.js.map +1 -0
  232. package/dist/nano-components/p-da88981f.entry.js +23 -0
  233. package/dist/nano-components/p-da88981f.entry.js.map +1 -0
  234. package/dist/nano-components/p-e8a913ac.system.entry.js +5 -0
  235. package/dist/nano-components/p-e8a913ac.system.entry.js.map +1 -0
  236. package/dist/nano-components/p-e9a279ee.system.entry.js +5 -0
  237. package/dist/nano-components/p-e9a279ee.system.entry.js.map +1 -0
  238. package/dist/nano-components/p-faba2fc1.system.entry.js +5 -0
  239. package/dist/nano-components/p-faba2fc1.system.entry.js.map +1 -0
  240. package/dist/nano-components/p-ff026352.system.entry.js +5 -0
  241. package/dist/nano-components/p-ff026352.system.entry.js.map +1 -0
  242. package/dist/types/components/date-input/date-input.d.ts +6 -1
  243. package/dist/types/components/icon-button/icon-button.d.ts +2 -0
  244. package/dist/types/components/tabs/tab.d.ts +1 -0
  245. package/dist/types/components.d.ts +20 -0
  246. package/docs-json.json +54 -2
  247. package/package.json +2 -4
  248. package/dist/cjs/ResizeObserver.es-09b81a1b.js +0 -935
  249. package/dist/cjs/ResizeObserver.es-09b81a1b.js.map +0 -1
  250. package/dist/cjs/date-utils-0ae9a12d.js.map +0 -1
  251. package/dist/cjs/global-0d4f3b77.js.map +0 -1
  252. package/dist/cjs/intersection-observer-1822c787.js +0 -987
  253. package/dist/cjs/intersection-observer-1822c787.js.map +0 -1
  254. package/dist/components/ResizeObserver.es.js +0 -933
  255. package/dist/components/ResizeObserver.es.js.map +0 -1
  256. package/dist/components/intersection-observer.js +0 -985
  257. package/dist/components/intersection-observer.js.map +0 -1
  258. package/dist/esm/ResizeObserver.es-724af9fd.js +0 -933
  259. package/dist/esm/ResizeObserver.es-724af9fd.js.map +0 -1
  260. package/dist/esm/date-utils-e4b757ff.js.map +0 -1
  261. package/dist/esm/global-d5ec4d53.js.map +0 -1
  262. package/dist/esm/intersection-observer-dff9fb5b.js +0 -985
  263. package/dist/esm/intersection-observer-dff9fb5b.js.map +0 -1
  264. package/dist/esm-es5/ResizeObserver.es-724af9fd.js +0 -5
  265. package/dist/esm-es5/ResizeObserver.es-724af9fd.js.map +0 -1
  266. package/dist/esm-es5/date-utils-e4b757ff.js +0 -5
  267. package/dist/esm-es5/date-utils-e4b757ff.js.map +0 -1
  268. package/dist/esm-es5/global-d5ec4d53.js.map +0 -1
  269. package/dist/esm-es5/intersection-observer-dff9fb5b.js +0 -5
  270. package/dist/esm-es5/intersection-observer-dff9fb5b.js.map +0 -1
  271. package/dist/nano-components/p-00eaa36a.entry.js +0 -5
  272. package/dist/nano-components/p-00eaa36a.entry.js.map +0 -1
  273. package/dist/nano-components/p-1030797a.entry.js.map +0 -1
  274. package/dist/nano-components/p-11a2dcce.js +0 -5
  275. package/dist/nano-components/p-11a2dcce.js.map +0 -1
  276. package/dist/nano-components/p-1a30dfdd.system.entry.js +0 -5
  277. package/dist/nano-components/p-1a30dfdd.system.entry.js.map +0 -1
  278. package/dist/nano-components/p-222d8095.entry.js +0 -5
  279. package/dist/nano-components/p-241d90eb.system.entry.js +0 -5
  280. package/dist/nano-components/p-241d90eb.system.entry.js.map +0 -1
  281. package/dist/nano-components/p-2c8d7273.entry.js +0 -5
  282. package/dist/nano-components/p-2c8d7273.entry.js.map +0 -1
  283. package/dist/nano-components/p-3093915f.entry.js +0 -5
  284. package/dist/nano-components/p-3093915f.entry.js.map +0 -1
  285. package/dist/nano-components/p-325c1cad.entry.js +0 -5
  286. package/dist/nano-components/p-325c1cad.entry.js.map +0 -1
  287. package/dist/nano-components/p-32f396c0.system.entry.js +0 -5
  288. package/dist/nano-components/p-32f396c0.system.entry.js.map +0 -1
  289. package/dist/nano-components/p-35108e08.entry.js +0 -5
  290. package/dist/nano-components/p-35108e08.entry.js.map +0 -1
  291. package/dist/nano-components/p-3ccb176c.system.entry.js +0 -5
  292. package/dist/nano-components/p-3ccb176c.system.entry.js.map +0 -1
  293. package/dist/nano-components/p-3e930ac7.entry.js.map +0 -1
  294. package/dist/nano-components/p-42cebbfe.system.entry.js +0 -5
  295. package/dist/nano-components/p-42cebbfe.system.entry.js.map +0 -1
  296. package/dist/nano-components/p-5d17cfbb.system.entry.js +0 -23
  297. package/dist/nano-components/p-5d17cfbb.system.entry.js.map +0 -1
  298. package/dist/nano-components/p-5d5ea4ab.system.entry.js +0 -5
  299. package/dist/nano-components/p-5d5ea4ab.system.entry.js.map +0 -1
  300. package/dist/nano-components/p-6722447c.entry.js +0 -5
  301. package/dist/nano-components/p-6722447c.entry.js.map +0 -1
  302. package/dist/nano-components/p-6d138abf.entry.js +0 -5
  303. package/dist/nano-components/p-6d138abf.entry.js.map +0 -1
  304. package/dist/nano-components/p-76d9d1d4.entry.js +0 -5
  305. package/dist/nano-components/p-76d9d1d4.entry.js.map +0 -1
  306. package/dist/nano-components/p-866f083f.system.entry.js +0 -5
  307. package/dist/nano-components/p-866f083f.system.entry.js.map +0 -1
  308. package/dist/nano-components/p-88779174.system.entry.js +0 -5
  309. package/dist/nano-components/p-88779174.system.entry.js.map +0 -1
  310. package/dist/nano-components/p-93880c28.system.js.map +0 -1
  311. package/dist/nano-components/p-97b13ad2.entry.js +0 -5
  312. package/dist/nano-components/p-97b13ad2.entry.js.map +0 -1
  313. package/dist/nano-components/p-b430a9b6.system.js +0 -5
  314. package/dist/nano-components/p-b430a9b6.system.js.map +0 -1
  315. package/dist/nano-components/p-d0385948.system.entry.js.map +0 -1
  316. package/dist/nano-components/p-debd9efc.js +0 -5
  317. package/dist/nano-components/p-debd9efc.js.map +0 -1
  318. package/dist/nano-components/p-e195ab77.system.js +0 -5
  319. package/dist/nano-components/p-e195ab77.system.js.map +0 -1
  320. package/dist/nano-components/p-e7140887.system.js +0 -5
  321. package/dist/nano-components/p-e817ab4a.system.entry.js +0 -5
  322. package/dist/nano-components/p-f5d4d13b.system.js +0 -5
  323. package/dist/nano-components/p-f5d4d13b.system.js.map +0 -1
  324. package/dist/nano-components/p-f66958c1.js +0 -5
  325. package/dist/nano-components/p-f66958c1.js.map +0 -1
  326. package/dist/nano-components/p-f710c763.system.entry.js +0 -5
  327. package/dist/nano-components/p-f710c763.system.entry.js.map +0 -1
  328. package/dist/nano-components/p-f9c7d961.js +0 -5
  329. package/dist/nano-components/p-f9c7d961.js.map +0 -1
  330. package/dist/nano-components/p-ffc2063a.entry.js +0 -23
  331. package/dist/nano-components/p-ffc2063a.entry.js.map +0 -1
  332. package/dist/nano-components/p-fff27907.system.entry.js +0 -5
  333. package/dist/nano-components/p-fff27907.system.entry.js.map +0 -1
@@ -2272,7 +2272,7 @@ const debounce$2 = (callback, wait = 0) => {
2272
2272
  * @param delay how long to delay before calling the function
2273
2273
  * @returns a throttled function to call as often as required
2274
2274
  */
2275
- function throttle$1(callback, delay) {
2275
+ function throttle(callback, delay) {
2276
2276
  let isThrottled = false;
2277
2277
  let args;
2278
2278
  let context;
@@ -4160,12 +4160,6 @@ const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
4160
4160
  }
4161
4161
  })();
4162
4162
 
4163
- // Intersection observer
4164
- if (!('IntersectionObserver' in window) ||
4165
- !('IntersectionObserverEntry' in window) ||
4166
- !('intersectionRatio' in window.IntersectionObserverEntry.prototype)) {
4167
- Promise.resolve().then(function () { return intersectionObserver; });
4168
- }
4169
4163
  // scroll-behaviour
4170
4164
  if (!('scrollBehavior' in document.documentElement.style)) {
4171
4165
  setTimeout((_) => {
@@ -9025,8 +9019,10 @@ let DataList = class extends H {
9025
9019
  this.shouldOpen = true;
9026
9020
  // open dropdown if possible
9027
9021
  this.manageDropdownDisplay();
9028
- if (['ArrowDown', 'ArrowUp'].includes(e.key))
9022
+ if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
9023
+ e.preventDefault();
9029
9024
  this.shouldFocus = true;
9025
+ }
9030
9026
  };
9031
9027
  // handles key down on options. Either 'picks'
9032
9028
  // an option or passes event back to input for search / filter
@@ -9413,7 +9409,7 @@ let DataList = class extends H {
9413
9409
  static get style() { return datalistCss; }
9414
9410
  };
9415
9411
 
9416
- const ISO_DATE_FORMAT = /^(\d{4})-(\d{2})-(\d{2})$/;
9412
+ const ISO_DATE_FORMAT = /^(\d{4})-(\d{2})-(\d{2})/;
9417
9413
  var DaysOfWeek$1;
9418
9414
  (function (DaysOfWeek) {
9419
9415
  DaysOfWeek[DaysOfWeek["Sunday"] = 0] = "Sunday";
@@ -9638,6 +9634,9 @@ let DateInput = class extends H {
9638
9634
  */
9639
9635
  this.closeAfterPicked = true;
9640
9636
  this._dropDownConfig = {};
9637
+ /** Controls which days are disabled and therefore disallowed.
9638
+ * For example, this can be used to disallow selection of weekends. */
9639
+ this.isDateDisabled = () => false;
9641
9640
  // Event handlers
9642
9641
  this.onInputChange = (e) => {
9643
9642
  e.stopPropagation();
@@ -9740,13 +9739,14 @@ let DateInput = class extends H {
9740
9739
  'Date below the minimum: ' +
9741
9740
  min.toLocaleDateString(this.locale, this.helperTextFormat);
9742
9741
  }
9743
- else if (this.max &&
9744
- (max = parseISODate(this.max)) &&
9745
- valueDate > max) {
9742
+ if (this.max && (max = parseISODate(this.max)) && valueDate > max) {
9746
9743
  error =
9747
9744
  'Date above the maximum: ' +
9748
9745
  max.toLocaleDateString(this.locale, this.helperTextFormat);
9749
9746
  }
9747
+ if (this.isDateDisabled(valueDate)) {
9748
+ error = 'Date selected is disabled.';
9749
+ }
9750
9750
  }
9751
9751
  requestAnimationFrame(async (_) => {
9752
9752
  if (!this.input)
@@ -9770,6 +9770,10 @@ let DateInput = class extends H {
9770
9770
  set dropDownConfig(ddc) {
9771
9771
  this._dropDownConfig = Object.assign(Object.assign({}, this._dropDownConfig), ddc);
9772
9772
  }
9773
+ /** @readonly get the value as a `Date` */
9774
+ get dateValue() {
9775
+ return parseISODate(this.value);
9776
+ }
9773
9777
  // Methods
9774
9778
  /**
9775
9779
  * Get the current state of the control.
@@ -9874,7 +9878,7 @@ let DateInput = class extends H {
9874
9878
  const hasHelperSlot = !!this.host.querySelector('[slot="helper"]');
9875
9879
  return (h$1(Host$1, { class: Object.assign({}, createColorClasses(this.color)) }, h$1("div", { class: "date-field" }, h$1("nano-input", { class: "date-field__input", slot: "trigger", required: this.required || undefined, showInlineError: this.showInlineError, validateOn: this.validateOn, placeholder: this.placeholder !== 'false' ? this.placeholder : undefined, pattern: this.pattern, label: this.label, disabled: this.disabled || undefined, color: this.color || undefined, autofocus: this.autofocus || undefined, clearInput: this.clearInput || undefined, onNanoChange: this.onInputChange, onNanoInput: this.onInputKey, onNanoValidate: this.onInputValidate, name: "", form: this.form || undefined, size: this.size || undefined, readonly: this.readonly, value: this.inputValue, ref: (input) => (this.input = input), floatLabel: this.floatLabel, hideLabel: this.hideLabel, inputmode: 'numeric', part: "input" }, h$1("slot", { name: "start", slot: "start" }), h$1("slot", { name: "label" }), h$1("slot", { name: "end", slot: "end" }), this.picker && [
9876
9880
  h$1("button", { slot: "end", class: "date-field__open", type: "button", onKeyDown: this.onTriggerKey, onClick: this.onTriggerClick, ref: (trigger) => (this.trigger = trigger), disabled: this.disabled || this.readonly }, h$1("nano-icon", { name: "light/calendar-alt" })),
9877
- h$1("nano-dropdown", Object.assign({ slot: "end", onNanoHide: this.onDropdownHide, onNanoShow: this.onDropdownShow, dialogTitle: "Choose a date", class: "date-field__dropdown", ref: (dropdown) => (this.dropdown = dropdown) }, this.dropDownConfig, { part: "dropdown" }), h$1("div", null, h$1("div", { class: "date-field__close-bar" }, h$1("button", { class: "date-field__close", type: "button", onMouseDown: this.onCloseClick, onKeyDown: this.onCloseKeyDown, ref: (pickerClose) => (this.pickerCloseBtn = pickerClose) }, h$1("nano-icon", { name: "light/times" }), h$1("span", { class: "vhidden" }, "Close window"))), h$1("nano-date-picker", { onNanoDatePicked: this.onDatePicked, min: this.min || undefined, max: this.max || undefined, "is-modal": true, ref: (picker) => (this.pickerEle = picker), localization: this.localization, selectedDate: this.value || this.initialPickerDate, firstDayOfWeek: this.firstDayOfWeek, color: this.color || undefined, part: "date-picker" }))),
9881
+ h$1("nano-dropdown", Object.assign({ slot: "end", onNanoHide: this.onDropdownHide, onNanoShow: this.onDropdownShow, dialogTitle: "Choose a date", class: "date-field__dropdown", ref: (dropdown) => (this.dropdown = dropdown) }, this.dropDownConfig, { part: "dropdown" }), h$1("div", null, h$1("div", { class: "date-field__close-bar" }, h$1("button", { class: "date-field__close", type: "button", onMouseDown: this.onCloseClick, onKeyDown: this.onCloseKeyDown, ref: (pickerClose) => (this.pickerCloseBtn = pickerClose) }, h$1("nano-icon", { name: "light/times" }), h$1("span", { class: "vhidden" }, "Close window"))), h$1("nano-date-picker", { isDateDisabled: this.isDateDisabled, onNanoDatePicked: this.onDatePicked, min: this.min || undefined, max: this.max || undefined, "is-modal": true, ref: (picker) => (this.pickerEle = picker), localization: this.localization, selectedDate: this.value || this.initialPickerDate, firstDayOfWeek: this.firstDayOfWeek, color: this.color || undefined, part: "date-picker" }))),
9878
9882
  ], (hasHelperSlot || this.helperText || this.showInlineError) && (h$1("span", { slot: "helper" }, h$1("span", { class: { vhidden: !!this.value.length } }, h$1("slot", { name: "helper" })), this.helperText && !!valueDate && (h$1("span", null, valueDate.toLocaleDateString(this.locale, this.helperTextFormat)))))), h$1("input", { type: "hidden", value: this.value, name: this.name }))));
9879
9883
  }
9880
9884
  get host() { return this; }
@@ -10078,7 +10082,7 @@ const localization = {
10078
10082
  ],
10079
10083
  };
10080
10084
 
10081
- const datePickerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:\"\";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color);color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}";
10085
+ const datePickerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:\"\";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color) !important;color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}";
10082
10086
 
10083
10087
  function range(from, to) {
10084
10088
  var result = [];
@@ -10341,933 +10345,6 @@ let DatePicker = class extends H {
10341
10345
  static get style() { return datePickerCss; }
10342
10346
  };
10343
10347
 
10344
- /**
10345
- * A collection of shims that provide minimal functionality of the ES6 collections.
10346
- *
10347
- * These implementations are not meant to be used outside of the ResizeObserver
10348
- * modules as they cover only a limited range of use cases.
10349
- */
10350
- /* eslint-disable require-jsdoc, valid-jsdoc */
10351
- var MapShim = (function () {
10352
- if (typeof Map !== 'undefined') {
10353
- return Map;
10354
- }
10355
- /**
10356
- * Returns index in provided array that matches the specified key.
10357
- *
10358
- * @param {Array<Array>} arr
10359
- * @param {*} key
10360
- * @returns {number}
10361
- */
10362
- function getIndex(arr, key) {
10363
- var result = -1;
10364
- arr.some(function (entry, index) {
10365
- if (entry[0] === key) {
10366
- result = index;
10367
- return true;
10368
- }
10369
- return false;
10370
- });
10371
- return result;
10372
- }
10373
- return /** @class */ (function () {
10374
- function class_1() {
10375
- this.__entries__ = [];
10376
- }
10377
- Object.defineProperty(class_1.prototype, "size", {
10378
- /**
10379
- * @returns {boolean}
10380
- */
10381
- get: function () {
10382
- return this.__entries__.length;
10383
- },
10384
- enumerable: true,
10385
- configurable: true
10386
- });
10387
- /**
10388
- * @param {*} key
10389
- * @returns {*}
10390
- */
10391
- class_1.prototype.get = function (key) {
10392
- var index = getIndex(this.__entries__, key);
10393
- var entry = this.__entries__[index];
10394
- return entry && entry[1];
10395
- };
10396
- /**
10397
- * @param {*} key
10398
- * @param {*} value
10399
- * @returns {void}
10400
- */
10401
- class_1.prototype.set = function (key, value) {
10402
- var index = getIndex(this.__entries__, key);
10403
- if (~index) {
10404
- this.__entries__[index][1] = value;
10405
- }
10406
- else {
10407
- this.__entries__.push([key, value]);
10408
- }
10409
- };
10410
- /**
10411
- * @param {*} key
10412
- * @returns {void}
10413
- */
10414
- class_1.prototype.delete = function (key) {
10415
- var entries = this.__entries__;
10416
- var index = getIndex(entries, key);
10417
- if (~index) {
10418
- entries.splice(index, 1);
10419
- }
10420
- };
10421
- /**
10422
- * @param {*} key
10423
- * @returns {void}
10424
- */
10425
- class_1.prototype.has = function (key) {
10426
- return !!~getIndex(this.__entries__, key);
10427
- };
10428
- /**
10429
- * @returns {void}
10430
- */
10431
- class_1.prototype.clear = function () {
10432
- this.__entries__.splice(0);
10433
- };
10434
- /**
10435
- * @param {Function} callback
10436
- * @param {*} [ctx=null]
10437
- * @returns {void}
10438
- */
10439
- class_1.prototype.forEach = function (callback, ctx) {
10440
- if (ctx === void 0) { ctx = null; }
10441
- for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {
10442
- var entry = _a[_i];
10443
- callback.call(ctx, entry[1], entry[0]);
10444
- }
10445
- };
10446
- return class_1;
10447
- }());
10448
- })();
10449
-
10450
- /**
10451
- * Detects whether window and document objects are available in current environment.
10452
- */
10453
- var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;
10454
-
10455
- // Returns global object of a current environment.
10456
- var global$1 = (function () {
10457
- if (typeof global !== 'undefined' && global.Math === Math) {
10458
- return global;
10459
- }
10460
- if (typeof self !== 'undefined' && self.Math === Math) {
10461
- return self;
10462
- }
10463
- if (typeof window !== 'undefined' && window.Math === Math) {
10464
- return window;
10465
- }
10466
- // eslint-disable-next-line no-new-func
10467
- return Function('return this')();
10468
- })();
10469
-
10470
- /**
10471
- * A shim for the requestAnimationFrame which falls back to the setTimeout if
10472
- * first one is not supported.
10473
- *
10474
- * @returns {number} Requests' identifier.
10475
- */
10476
- var requestAnimationFrame$1 = (function () {
10477
- if (typeof requestAnimationFrame === 'function') {
10478
- // It's required to use a bounded function because IE sometimes throws
10479
- // an "Invalid calling object" error if rAF is invoked without the global
10480
- // object on the left hand side.
10481
- return requestAnimationFrame.bind(global$1);
10482
- }
10483
- return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };
10484
- })();
10485
-
10486
- // Defines minimum timeout before adding a trailing call.
10487
- var trailingTimeout = 2;
10488
- /**
10489
- * Creates a wrapper function which ensures that provided callback will be
10490
- * invoked only once during the specified delay period.
10491
- *
10492
- * @param {Function} callback - Function to be invoked after the delay period.
10493
- * @param {number} delay - Delay after which to invoke callback.
10494
- * @returns {Function}
10495
- */
10496
- function throttle (callback, delay) {
10497
- var leadingCall = false, trailingCall = false, lastCallTime = 0;
10498
- /**
10499
- * Invokes the original callback function and schedules new invocation if
10500
- * the "proxy" was called during current request.
10501
- *
10502
- * @returns {void}
10503
- */
10504
- function resolvePending() {
10505
- if (leadingCall) {
10506
- leadingCall = false;
10507
- callback();
10508
- }
10509
- if (trailingCall) {
10510
- proxy();
10511
- }
10512
- }
10513
- /**
10514
- * Callback invoked after the specified delay. It will further postpone
10515
- * invocation of the original function delegating it to the
10516
- * requestAnimationFrame.
10517
- *
10518
- * @returns {void}
10519
- */
10520
- function timeoutCallback() {
10521
- requestAnimationFrame$1(resolvePending);
10522
- }
10523
- /**
10524
- * Schedules invocation of the original function.
10525
- *
10526
- * @returns {void}
10527
- */
10528
- function proxy() {
10529
- var timeStamp = Date.now();
10530
- if (leadingCall) {
10531
- // Reject immediately following calls.
10532
- if (timeStamp - lastCallTime < trailingTimeout) {
10533
- return;
10534
- }
10535
- // Schedule new call to be in invoked when the pending one is resolved.
10536
- // This is important for "transitions" which never actually start
10537
- // immediately so there is a chance that we might miss one if change
10538
- // happens amids the pending invocation.
10539
- trailingCall = true;
10540
- }
10541
- else {
10542
- leadingCall = true;
10543
- trailingCall = false;
10544
- setTimeout(timeoutCallback, delay);
10545
- }
10546
- lastCallTime = timeStamp;
10547
- }
10548
- return proxy;
10549
- }
10550
-
10551
- // Minimum delay before invoking the update of observers.
10552
- var REFRESH_DELAY = 20;
10553
- // A list of substrings of CSS properties used to find transition events that
10554
- // might affect dimensions of observed elements.
10555
- var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];
10556
- // Check if MutationObserver is available.
10557
- var mutationObserverSupported = typeof MutationObserver !== 'undefined';
10558
- /**
10559
- * Singleton controller class which handles updates of ResizeObserver instances.
10560
- */
10561
- var ResizeObserverController = /** @class */ (function () {
10562
- /**
10563
- * Creates a new instance of ResizeObserverController.
10564
- *
10565
- * @private
10566
- */
10567
- function ResizeObserverController() {
10568
- /**
10569
- * Indicates whether DOM listeners have been added.
10570
- *
10571
- * @private {boolean}
10572
- */
10573
- this.connected_ = false;
10574
- /**
10575
- * Tells that controller has subscribed for Mutation Events.
10576
- *
10577
- * @private {boolean}
10578
- */
10579
- this.mutationEventsAdded_ = false;
10580
- /**
10581
- * Keeps reference to the instance of MutationObserver.
10582
- *
10583
- * @private {MutationObserver}
10584
- */
10585
- this.mutationsObserver_ = null;
10586
- /**
10587
- * A list of connected observers.
10588
- *
10589
- * @private {Array<ResizeObserverSPI>}
10590
- */
10591
- this.observers_ = [];
10592
- this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);
10593
- this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);
10594
- }
10595
- /**
10596
- * Adds observer to observers list.
10597
- *
10598
- * @param {ResizeObserverSPI} observer - Observer to be added.
10599
- * @returns {void}
10600
- */
10601
- ResizeObserverController.prototype.addObserver = function (observer) {
10602
- if (!~this.observers_.indexOf(observer)) {
10603
- this.observers_.push(observer);
10604
- }
10605
- // Add listeners if they haven't been added yet.
10606
- if (!this.connected_) {
10607
- this.connect_();
10608
- }
10609
- };
10610
- /**
10611
- * Removes observer from observers list.
10612
- *
10613
- * @param {ResizeObserverSPI} observer - Observer to be removed.
10614
- * @returns {void}
10615
- */
10616
- ResizeObserverController.prototype.removeObserver = function (observer) {
10617
- var observers = this.observers_;
10618
- var index = observers.indexOf(observer);
10619
- // Remove observer if it's present in registry.
10620
- if (~index) {
10621
- observers.splice(index, 1);
10622
- }
10623
- // Remove listeners if controller has no connected observers.
10624
- if (!observers.length && this.connected_) {
10625
- this.disconnect_();
10626
- }
10627
- };
10628
- /**
10629
- * Invokes the update of observers. It will continue running updates insofar
10630
- * it detects changes.
10631
- *
10632
- * @returns {void}
10633
- */
10634
- ResizeObserverController.prototype.refresh = function () {
10635
- var changesDetected = this.updateObservers_();
10636
- // Continue running updates if changes have been detected as there might
10637
- // be future ones caused by CSS transitions.
10638
- if (changesDetected) {
10639
- this.refresh();
10640
- }
10641
- };
10642
- /**
10643
- * Updates every observer from observers list and notifies them of queued
10644
- * entries.
10645
- *
10646
- * @private
10647
- * @returns {boolean} Returns "true" if any observer has detected changes in
10648
- * dimensions of it's elements.
10649
- */
10650
- ResizeObserverController.prototype.updateObservers_ = function () {
10651
- // Collect observers that have active observations.
10652
- var activeObservers = this.observers_.filter(function (observer) {
10653
- return observer.gatherActive(), observer.hasActive();
10654
- });
10655
- // Deliver notifications in a separate cycle in order to avoid any
10656
- // collisions between observers, e.g. when multiple instances of
10657
- // ResizeObserver are tracking the same element and the callback of one
10658
- // of them changes content dimensions of the observed target. Sometimes
10659
- // this may result in notifications being blocked for the rest of observers.
10660
- activeObservers.forEach(function (observer) { return observer.broadcastActive(); });
10661
- return activeObservers.length > 0;
10662
- };
10663
- /**
10664
- * Initializes DOM listeners.
10665
- *
10666
- * @private
10667
- * @returns {void}
10668
- */
10669
- ResizeObserverController.prototype.connect_ = function () {
10670
- // Do nothing if running in a non-browser environment or if listeners
10671
- // have been already added.
10672
- if (!isBrowser || this.connected_) {
10673
- return;
10674
- }
10675
- // Subscription to the "Transitionend" event is used as a workaround for
10676
- // delayed transitions. This way it's possible to capture at least the
10677
- // final state of an element.
10678
- document.addEventListener('transitionend', this.onTransitionEnd_);
10679
- window.addEventListener('resize', this.refresh);
10680
- if (mutationObserverSupported) {
10681
- this.mutationsObserver_ = new MutationObserver(this.refresh);
10682
- this.mutationsObserver_.observe(document, {
10683
- attributes: true,
10684
- childList: true,
10685
- characterData: true,
10686
- subtree: true
10687
- });
10688
- }
10689
- else {
10690
- document.addEventListener('DOMSubtreeModified', this.refresh);
10691
- this.mutationEventsAdded_ = true;
10692
- }
10693
- this.connected_ = true;
10694
- };
10695
- /**
10696
- * Removes DOM listeners.
10697
- *
10698
- * @private
10699
- * @returns {void}
10700
- */
10701
- ResizeObserverController.prototype.disconnect_ = function () {
10702
- // Do nothing if running in a non-browser environment or if listeners
10703
- // have been already removed.
10704
- if (!isBrowser || !this.connected_) {
10705
- return;
10706
- }
10707
- document.removeEventListener('transitionend', this.onTransitionEnd_);
10708
- window.removeEventListener('resize', this.refresh);
10709
- if (this.mutationsObserver_) {
10710
- this.mutationsObserver_.disconnect();
10711
- }
10712
- if (this.mutationEventsAdded_) {
10713
- document.removeEventListener('DOMSubtreeModified', this.refresh);
10714
- }
10715
- this.mutationsObserver_ = null;
10716
- this.mutationEventsAdded_ = false;
10717
- this.connected_ = false;
10718
- };
10719
- /**
10720
- * "Transitionend" event handler.
10721
- *
10722
- * @private
10723
- * @param {TransitionEvent} event
10724
- * @returns {void}
10725
- */
10726
- ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {
10727
- var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;
10728
- // Detect whether transition may affect dimensions of an element.
10729
- var isReflowProperty = transitionKeys.some(function (key) {
10730
- return !!~propertyName.indexOf(key);
10731
- });
10732
- if (isReflowProperty) {
10733
- this.refresh();
10734
- }
10735
- };
10736
- /**
10737
- * Returns instance of the ResizeObserverController.
10738
- *
10739
- * @returns {ResizeObserverController}
10740
- */
10741
- ResizeObserverController.getInstance = function () {
10742
- if (!this.instance_) {
10743
- this.instance_ = new ResizeObserverController();
10744
- }
10745
- return this.instance_;
10746
- };
10747
- /**
10748
- * Holds reference to the controller's instance.
10749
- *
10750
- * @private {ResizeObserverController}
10751
- */
10752
- ResizeObserverController.instance_ = null;
10753
- return ResizeObserverController;
10754
- }());
10755
-
10756
- /**
10757
- * Defines non-writable/enumerable properties of the provided target object.
10758
- *
10759
- * @param {Object} target - Object for which to define properties.
10760
- * @param {Object} props - Properties to be defined.
10761
- * @returns {Object} Target object.
10762
- */
10763
- var defineConfigurable = (function (target, props) {
10764
- for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {
10765
- var key = _a[_i];
10766
- Object.defineProperty(target, key, {
10767
- value: props[key],
10768
- enumerable: false,
10769
- writable: false,
10770
- configurable: true
10771
- });
10772
- }
10773
- return target;
10774
- });
10775
-
10776
- /**
10777
- * Returns the global object associated with provided element.
10778
- *
10779
- * @param {Object} target
10780
- * @returns {Object}
10781
- */
10782
- var getWindowOf = (function (target) {
10783
- // Assume that the element is an instance of Node, which means that it
10784
- // has the "ownerDocument" property from which we can retrieve a
10785
- // corresponding global object.
10786
- var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;
10787
- // Return the local global object if it's not possible extract one from
10788
- // provided element.
10789
- return ownerGlobal || global$1;
10790
- });
10791
-
10792
- // Placeholder of an empty content rectangle.
10793
- var emptyRect = createRectInit(0, 0, 0, 0);
10794
- /**
10795
- * Converts provided string to a number.
10796
- *
10797
- * @param {number|string} value
10798
- * @returns {number}
10799
- */
10800
- function toFloat(value) {
10801
- return parseFloat(value) || 0;
10802
- }
10803
- /**
10804
- * Extracts borders size from provided styles.
10805
- *
10806
- * @param {CSSStyleDeclaration} styles
10807
- * @param {...string} positions - Borders positions (top, right, ...)
10808
- * @returns {number}
10809
- */
10810
- function getBordersSize(styles) {
10811
- var positions = [];
10812
- for (var _i = 1; _i < arguments.length; _i++) {
10813
- positions[_i - 1] = arguments[_i];
10814
- }
10815
- return positions.reduce(function (size, position) {
10816
- var value = styles['border-' + position + '-width'];
10817
- return size + toFloat(value);
10818
- }, 0);
10819
- }
10820
- /**
10821
- * Extracts paddings sizes from provided styles.
10822
- *
10823
- * @param {CSSStyleDeclaration} styles
10824
- * @returns {Object} Paddings box.
10825
- */
10826
- function getPaddings(styles) {
10827
- var positions = ['top', 'right', 'bottom', 'left'];
10828
- var paddings = {};
10829
- for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {
10830
- var position = positions_1[_i];
10831
- var value = styles['padding-' + position];
10832
- paddings[position] = toFloat(value);
10833
- }
10834
- return paddings;
10835
- }
10836
- /**
10837
- * Calculates content rectangle of provided SVG element.
10838
- *
10839
- * @param {SVGGraphicsElement} target - Element content rectangle of which needs
10840
- * to be calculated.
10841
- * @returns {DOMRectInit}
10842
- */
10843
- function getSVGContentRect(target) {
10844
- var bbox = target.getBBox();
10845
- return createRectInit(0, 0, bbox.width, bbox.height);
10846
- }
10847
- /**
10848
- * Calculates content rectangle of provided HTMLElement.
10849
- *
10850
- * @param {HTMLElement} target - Element for which to calculate the content rectangle.
10851
- * @returns {DOMRectInit}
10852
- */
10853
- function getHTMLElementContentRect(target) {
10854
- // Client width & height properties can't be
10855
- // used exclusively as they provide rounded values.
10856
- var clientWidth = target.clientWidth, clientHeight = target.clientHeight;
10857
- // By this condition we can catch all non-replaced inline, hidden and
10858
- // detached elements. Though elements with width & height properties less
10859
- // than 0.5 will be discarded as well.
10860
- //
10861
- // Without it we would need to implement separate methods for each of
10862
- // those cases and it's not possible to perform a precise and performance
10863
- // effective test for hidden elements. E.g. even jQuery's ':visible' filter
10864
- // gives wrong results for elements with width & height less than 0.5.
10865
- if (!clientWidth && !clientHeight) {
10866
- return emptyRect;
10867
- }
10868
- var styles = getWindowOf(target).getComputedStyle(target);
10869
- var paddings = getPaddings(styles);
10870
- var horizPad = paddings.left + paddings.right;
10871
- var vertPad = paddings.top + paddings.bottom;
10872
- // Computed styles of width & height are being used because they are the
10873
- // only dimensions available to JS that contain non-rounded values. It could
10874
- // be possible to utilize the getBoundingClientRect if only it's data wasn't
10875
- // affected by CSS transformations let alone paddings, borders and scroll bars.
10876
- var width = toFloat(styles.width), height = toFloat(styles.height);
10877
- // Width & height include paddings and borders when the 'border-box' box
10878
- // model is applied (except for IE).
10879
- if (styles.boxSizing === 'border-box') {
10880
- // Following conditions are required to handle Internet Explorer which
10881
- // doesn't include paddings and borders to computed CSS dimensions.
10882
- //
10883
- // We can say that if CSS dimensions + paddings are equal to the "client"
10884
- // properties then it's either IE, and thus we don't need to subtract
10885
- // anything, or an element merely doesn't have paddings/borders styles.
10886
- if (Math.round(width + horizPad) !== clientWidth) {
10887
- width -= getBordersSize(styles, 'left', 'right') + horizPad;
10888
- }
10889
- if (Math.round(height + vertPad) !== clientHeight) {
10890
- height -= getBordersSize(styles, 'top', 'bottom') + vertPad;
10891
- }
10892
- }
10893
- // Following steps can't be applied to the document's root element as its
10894
- // client[Width/Height] properties represent viewport area of the window.
10895
- // Besides, it's as well not necessary as the <html> itself neither has
10896
- // rendered scroll bars nor it can be clipped.
10897
- if (!isDocumentElement(target)) {
10898
- // In some browsers (only in Firefox, actually) CSS width & height
10899
- // include scroll bars size which can be removed at this step as scroll
10900
- // bars are the only difference between rounded dimensions + paddings
10901
- // and "client" properties, though that is not always true in Chrome.
10902
- var vertScrollbar = Math.round(width + horizPad) - clientWidth;
10903
- var horizScrollbar = Math.round(height + vertPad) - clientHeight;
10904
- // Chrome has a rather weird rounding of "client" properties.
10905
- // E.g. for an element with content width of 314.2px it sometimes gives
10906
- // the client width of 315px and for the width of 314.7px it may give
10907
- // 314px. And it doesn't happen all the time. So just ignore this delta
10908
- // as a non-relevant.
10909
- if (Math.abs(vertScrollbar) !== 1) {
10910
- width -= vertScrollbar;
10911
- }
10912
- if (Math.abs(horizScrollbar) !== 1) {
10913
- height -= horizScrollbar;
10914
- }
10915
- }
10916
- return createRectInit(paddings.left, paddings.top, width, height);
10917
- }
10918
- /**
10919
- * Checks whether provided element is an instance of the SVGGraphicsElement.
10920
- *
10921
- * @param {Element} target - Element to be checked.
10922
- * @returns {boolean}
10923
- */
10924
- var isSVGGraphicsElement = (function () {
10925
- // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement
10926
- // interface.
10927
- if (typeof SVGGraphicsElement !== 'undefined') {
10928
- return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };
10929
- }
10930
- // If it's so, then check that element is at least an instance of the
10931
- // SVGElement and that it has the "getBBox" method.
10932
- // eslint-disable-next-line no-extra-parens
10933
- return function (target) { return (target instanceof getWindowOf(target).SVGElement &&
10934
- typeof target.getBBox === 'function'); };
10935
- })();
10936
- /**
10937
- * Checks whether provided element is a document element (<html>).
10938
- *
10939
- * @param {Element} target - Element to be checked.
10940
- * @returns {boolean}
10941
- */
10942
- function isDocumentElement(target) {
10943
- return target === getWindowOf(target).document.documentElement;
10944
- }
10945
- /**
10946
- * Calculates an appropriate content rectangle for provided html or svg element.
10947
- *
10948
- * @param {Element} target - Element content rectangle of which needs to be calculated.
10949
- * @returns {DOMRectInit}
10950
- */
10951
- function getContentRect(target) {
10952
- if (!isBrowser) {
10953
- return emptyRect;
10954
- }
10955
- if (isSVGGraphicsElement(target)) {
10956
- return getSVGContentRect(target);
10957
- }
10958
- return getHTMLElementContentRect(target);
10959
- }
10960
- /**
10961
- * Creates rectangle with an interface of the DOMRectReadOnly.
10962
- * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly
10963
- *
10964
- * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.
10965
- * @returns {DOMRectReadOnly}
10966
- */
10967
- function createReadOnlyRect(_a) {
10968
- var x = _a.x, y = _a.y, width = _a.width, height = _a.height;
10969
- // If DOMRectReadOnly is available use it as a prototype for the rectangle.
10970
- var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;
10971
- var rect = Object.create(Constr.prototype);
10972
- // Rectangle's properties are not writable and non-enumerable.
10973
- defineConfigurable(rect, {
10974
- x: x, y: y, width: width, height: height,
10975
- top: y,
10976
- right: x + width,
10977
- bottom: height + y,
10978
- left: x
10979
- });
10980
- return rect;
10981
- }
10982
- /**
10983
- * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.
10984
- * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit
10985
- *
10986
- * @param {number} x - X coordinate.
10987
- * @param {number} y - Y coordinate.
10988
- * @param {number} width - Rectangle's width.
10989
- * @param {number} height - Rectangle's height.
10990
- * @returns {DOMRectInit}
10991
- */
10992
- function createRectInit(x, y, width, height) {
10993
- return { x: x, y: y, width: width, height: height };
10994
- }
10995
-
10996
- /**
10997
- * Class that is responsible for computations of the content rectangle of
10998
- * provided DOM element and for keeping track of it's changes.
10999
- */
11000
- var ResizeObservation = /** @class */ (function () {
11001
- /**
11002
- * Creates an instance of ResizeObservation.
11003
- *
11004
- * @param {Element} target - Element to be observed.
11005
- */
11006
- function ResizeObservation(target) {
11007
- /**
11008
- * Broadcasted width of content rectangle.
11009
- *
11010
- * @type {number}
11011
- */
11012
- this.broadcastWidth = 0;
11013
- /**
11014
- * Broadcasted height of content rectangle.
11015
- *
11016
- * @type {number}
11017
- */
11018
- this.broadcastHeight = 0;
11019
- /**
11020
- * Reference to the last observed content rectangle.
11021
- *
11022
- * @private {DOMRectInit}
11023
- */
11024
- this.contentRect_ = createRectInit(0, 0, 0, 0);
11025
- this.target = target;
11026
- }
11027
- /**
11028
- * Updates content rectangle and tells whether it's width or height properties
11029
- * have changed since the last broadcast.
11030
- *
11031
- * @returns {boolean}
11032
- */
11033
- ResizeObservation.prototype.isActive = function () {
11034
- var rect = getContentRect(this.target);
11035
- this.contentRect_ = rect;
11036
- return (rect.width !== this.broadcastWidth ||
11037
- rect.height !== this.broadcastHeight);
11038
- };
11039
- /**
11040
- * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data
11041
- * from the corresponding properties of the last observed content rectangle.
11042
- *
11043
- * @returns {DOMRectInit} Last observed content rectangle.
11044
- */
11045
- ResizeObservation.prototype.broadcastRect = function () {
11046
- var rect = this.contentRect_;
11047
- this.broadcastWidth = rect.width;
11048
- this.broadcastHeight = rect.height;
11049
- return rect;
11050
- };
11051
- return ResizeObservation;
11052
- }());
11053
-
11054
- var ResizeObserverEntry = /** @class */ (function () {
11055
- /**
11056
- * Creates an instance of ResizeObserverEntry.
11057
- *
11058
- * @param {Element} target - Element that is being observed.
11059
- * @param {DOMRectInit} rectInit - Data of the element's content rectangle.
11060
- */
11061
- function ResizeObserverEntry(target, rectInit) {
11062
- var contentRect = createReadOnlyRect(rectInit);
11063
- // According to the specification following properties are not writable
11064
- // and are also not enumerable in the native implementation.
11065
- //
11066
- // Property accessors are not being used as they'd require to define a
11067
- // private WeakMap storage which may cause memory leaks in browsers that
11068
- // don't support this type of collections.
11069
- defineConfigurable(this, { target: target, contentRect: contentRect });
11070
- }
11071
- return ResizeObserverEntry;
11072
- }());
11073
-
11074
- var ResizeObserverSPI = /** @class */ (function () {
11075
- /**
11076
- * Creates a new instance of ResizeObserver.
11077
- *
11078
- * @param {ResizeObserverCallback} callback - Callback function that is invoked
11079
- * when one of the observed elements changes it's content dimensions.
11080
- * @param {ResizeObserverController} controller - Controller instance which
11081
- * is responsible for the updates of observer.
11082
- * @param {ResizeObserver} callbackCtx - Reference to the public
11083
- * ResizeObserver instance which will be passed to callback function.
11084
- */
11085
- function ResizeObserverSPI(callback, controller, callbackCtx) {
11086
- /**
11087
- * Collection of resize observations that have detected changes in dimensions
11088
- * of elements.
11089
- *
11090
- * @private {Array<ResizeObservation>}
11091
- */
11092
- this.activeObservations_ = [];
11093
- /**
11094
- * Registry of the ResizeObservation instances.
11095
- *
11096
- * @private {Map<Element, ResizeObservation>}
11097
- */
11098
- this.observations_ = new MapShim();
11099
- if (typeof callback !== 'function') {
11100
- throw new TypeError('The callback provided as parameter 1 is not a function.');
11101
- }
11102
- this.callback_ = callback;
11103
- this.controller_ = controller;
11104
- this.callbackCtx_ = callbackCtx;
11105
- }
11106
- /**
11107
- * Starts observing provided element.
11108
- *
11109
- * @param {Element} target - Element to be observed.
11110
- * @returns {void}
11111
- */
11112
- ResizeObserverSPI.prototype.observe = function (target) {
11113
- if (!arguments.length) {
11114
- throw new TypeError('1 argument required, but only 0 present.');
11115
- }
11116
- // Do nothing if current environment doesn't have the Element interface.
11117
- if (typeof Element === 'undefined' || !(Element instanceof Object)) {
11118
- return;
11119
- }
11120
- if (!(target instanceof getWindowOf(target).Element)) {
11121
- throw new TypeError('parameter 1 is not of type "Element".');
11122
- }
11123
- var observations = this.observations_;
11124
- // Do nothing if element is already being observed.
11125
- if (observations.has(target)) {
11126
- return;
11127
- }
11128
- observations.set(target, new ResizeObservation(target));
11129
- this.controller_.addObserver(this);
11130
- // Force the update of observations.
11131
- this.controller_.refresh();
11132
- };
11133
- /**
11134
- * Stops observing provided element.
11135
- *
11136
- * @param {Element} target - Element to stop observing.
11137
- * @returns {void}
11138
- */
11139
- ResizeObserverSPI.prototype.unobserve = function (target) {
11140
- if (!arguments.length) {
11141
- throw new TypeError('1 argument required, but only 0 present.');
11142
- }
11143
- // Do nothing if current environment doesn't have the Element interface.
11144
- if (typeof Element === 'undefined' || !(Element instanceof Object)) {
11145
- return;
11146
- }
11147
- if (!(target instanceof getWindowOf(target).Element)) {
11148
- throw new TypeError('parameter 1 is not of type "Element".');
11149
- }
11150
- var observations = this.observations_;
11151
- // Do nothing if element is not being observed.
11152
- if (!observations.has(target)) {
11153
- return;
11154
- }
11155
- observations.delete(target);
11156
- if (!observations.size) {
11157
- this.controller_.removeObserver(this);
11158
- }
11159
- };
11160
- /**
11161
- * Stops observing all elements.
11162
- *
11163
- * @returns {void}
11164
- */
11165
- ResizeObserverSPI.prototype.disconnect = function () {
11166
- this.clearActive();
11167
- this.observations_.clear();
11168
- this.controller_.removeObserver(this);
11169
- };
11170
- /**
11171
- * Collects observation instances the associated element of which has changed
11172
- * it's content rectangle.
11173
- *
11174
- * @returns {void}
11175
- */
11176
- ResizeObserverSPI.prototype.gatherActive = function () {
11177
- var _this = this;
11178
- this.clearActive();
11179
- this.observations_.forEach(function (observation) {
11180
- if (observation.isActive()) {
11181
- _this.activeObservations_.push(observation);
11182
- }
11183
- });
11184
- };
11185
- /**
11186
- * Invokes initial callback function with a list of ResizeObserverEntry
11187
- * instances collected from active resize observations.
11188
- *
11189
- * @returns {void}
11190
- */
11191
- ResizeObserverSPI.prototype.broadcastActive = function () {
11192
- // Do nothing if observer doesn't have active observations.
11193
- if (!this.hasActive()) {
11194
- return;
11195
- }
11196
- var ctx = this.callbackCtx_;
11197
- // Create ResizeObserverEntry instance for every active observation.
11198
- var entries = this.activeObservations_.map(function (observation) {
11199
- return new ResizeObserverEntry(observation.target, observation.broadcastRect());
11200
- });
11201
- this.callback_.call(ctx, entries, ctx);
11202
- this.clearActive();
11203
- };
11204
- /**
11205
- * Clears the collection of active observations.
11206
- *
11207
- * @returns {void}
11208
- */
11209
- ResizeObserverSPI.prototype.clearActive = function () {
11210
- this.activeObservations_.splice(0);
11211
- };
11212
- /**
11213
- * Tells whether observer has active observations.
11214
- *
11215
- * @returns {boolean}
11216
- */
11217
- ResizeObserverSPI.prototype.hasActive = function () {
11218
- return this.activeObservations_.length > 0;
11219
- };
11220
- return ResizeObserverSPI;
11221
- }());
11222
-
11223
- // Registry of internal observers. If WeakMap is not available use current shim
11224
- // for the Map collection as it has all required methods and because WeakMap
11225
- // can't be fully polyfilled anyway.
11226
- var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();
11227
- /**
11228
- * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation
11229
- * exposing only those methods and properties that are defined in the spec.
11230
- */
11231
- var ResizeObserver$1 = /** @class */ (function () {
11232
- /**
11233
- * Creates a new instance of ResizeObserver.
11234
- *
11235
- * @param {ResizeObserverCallback} callback - Callback that is invoked when
11236
- * dimensions of the observed elements change.
11237
- */
11238
- function ResizeObserver(callback) {
11239
- if (!(this instanceof ResizeObserver)) {
11240
- throw new TypeError('Cannot call a class as a function.');
11241
- }
11242
- if (!arguments.length) {
11243
- throw new TypeError('1 argument required, but only 0 present.');
11244
- }
11245
- var controller = ResizeObserverController.getInstance();
11246
- var observer = new ResizeObserverSPI(callback, controller, this);
11247
- observers.set(this, observer);
11248
- }
11249
- return ResizeObserver;
11250
- }());
11251
- // Expose public methods of ResizeObserver.
11252
- [
11253
- 'observe',
11254
- 'unobserve',
11255
- 'disconnect'
11256
- ].forEach(function (method) {
11257
- ResizeObserver$1.prototype[method] = function () {
11258
- var _a;
11259
- return (_a = observers.get(this))[method].apply(_a, arguments);
11260
- };
11261
- });
11262
-
11263
- var index$2 = (function () {
11264
- // Export existing implementation if available.
11265
- if (typeof global$1.ResizeObserver !== 'undefined') {
11266
- return global$1.ResizeObserver;
11267
- }
11268
- return ResizeObserver$1;
11269
- })();
11270
-
11271
10348
  const detailsCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;--padding:1em;--btn-padding:var(--padding);--btn-bg-color:var(--nano-color-contrast, #dad6d3);--btn-bg-color--open:var(--nano-color-base, #dad6d3);--btn-bg-color--hover:var(--nano-color-tint, #f9f9fb);--btn-text-color:var(--nano-color-base, #455556);--btn-text-color--open:var(--nano-color-contrast, var(--btn-text-color));--btn-text-color--hover:var(--nano-color-contrast, var(--btn-text-color));--content-bg-color:transparent;--content-text-color:#455556;--content-transition:height 0.2s ease-out;--border-width:none;--border-color:none;--border-style:none;--border-radius:none;--box-shadow:none;--focus-style:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:block;border-style:var(--border-style);border-width:var(--border-width-dims);border-color:var(--border-color);border-radius:var(--border-radius-dims);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}:host(:last-of-type){--border-width-dims:0 var(--border-width) var(--border-width);--border-radius-dims:0 0 var(--border-radius) var(--border-radius)}:host(:last-of-type) .open .content{border-radius:0 0 var(--border-radius) var(--border-radius)}:host(:first-of-type){--border-radius-dims:var(--border-radius) var(--border-radius) 0 0;--border-width-dims:var(--border-width)}:host(:first-of-type:last-of-type){--border-radius-dims:var(--border-radius);--border-width-dims:var(--border-width)}:host(:not(:last-of-type):not(:first-of-type)){--border-width-dims:0 var(--border-width) var(--border-width)}:host(.nano-color){--btn-bg-color:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--btn-bg-color--open:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-bg-color--hover:var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5));--btn-text-color:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-text-color--open:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--btn-text-color--hover:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n )}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;padding:var(--btn-padding);text-align:inherit;position:relative;font-size:1em;margin:0;-webkit-transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--btn-bg-color);color:var(--btn-text-color);border-radius:var(--border-radius-dims)}button[dir=rtl]{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}button:focus{-webkit-box-shadow:var(--focus-style);box-shadow:var(--focus-style);outline:none;position:relative;z-index:1}:hover button{background:var(--btn-bg-color--hover);color:var(--btn-text-color--hover)}.open button{background:var(--btn-bg-color--open);color:var(--btn-text-color--open);border-bottom-right-radius:0;border-bottom-left-radius:0}button .label{width:100%;max-width:100%;max-height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block}button .icon{line-height:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:inline-block;color:currentColor;-webkit-transition:0.3s ease transform;transition:0.3s ease transform;-webkit-transform-origin:center;transform-origin:center}button .icon--start{margin-left:0;margin-right:var(--padding);margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--start{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:var(--padding);margin-inline-end:var(--padding)}}button .icon--end{margin-left:var(--padding);margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--end{margin-left:unset;margin-right:unset;-webkit-margin-start:var(--padding);margin-inline-start:var(--padding);-webkit-margin-end:0;margin-inline-end:0}}button .icon ::slotted(nano-icon){--color:\"currentColor\"}.content{color:var(--content-text-color);background:var(--content-bg-color);height:0;overflow:hidden;-webkit-transition:0.2s ease border-radius;transition:0.2s ease border-radius;outline:none}.loaded .content{-webkit-transition:var(--content-transition), 0.2s ease border-radius;transition:var(--content-transition), 0.2s ease border-radius}.content>*{opacity:0;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.open .content>*{opacity:1}.content__area{padding:var(--padding)}";
11272
10349
 
11273
10350
  let Details = class extends H {
@@ -11347,7 +10424,7 @@ let Details = class extends H {
11347
10424
  attachRO() {
11348
10425
  if (this.ro || !this.contentArea)
11349
10426
  return;
11350
- const ro = (this.ro = new index$2(() => this.resize()));
10427
+ const ro = (this.ro = new ResizeObserver(() => this.resize()));
11351
10428
  ro.observe(this.contentArea);
11352
10429
  }
11353
10430
  componentWillLoad() {
@@ -16106,7 +15183,7 @@ let GlobalSearchResults = class extends H {
16106
15183
  setTimeout(() => this.openFilterBtn.focus(), 20);
16107
15184
  }
16108
15185
  componentDidLoad() {
16109
- this.ro = new index$2((entries) => {
15186
+ this.ro = new ResizeObserver((entries) => {
16110
15187
  for (const entry of entries) {
16111
15188
  if (!entry.contentRect.width)
16112
15189
  return;
@@ -16726,7 +15803,7 @@ let Grid = class extends H {
16726
15803
  });
16727
15804
  }
16728
15805
  componentDidLoad() {
16729
- this.ro = new index$2((entries) => {
15806
+ this.ro = new ResizeObserver((entries) => {
16730
15807
  for (const entry of entries) {
16731
15808
  if (!entry.contentRect.width)
16732
15809
  return;
@@ -17216,6 +16293,10 @@ let IconButton = class extends H {
17216
16293
  /** Set to true to disable the button. */
17217
16294
  this.disabled = false;
17218
16295
  }
16296
+ /** Sets focus on the internal button */
16297
+ async setFocus() {
16298
+ this.button.focus();
16299
+ }
17219
16300
  componentDidLoad() {
17220
16301
  focusVisible.observe(this.button);
17221
16302
  }
@@ -19294,7 +18375,7 @@ let ResizeObserve = class extends H {
19294
18375
  return retObj;
19295
18376
  }
19296
18377
  attachRO() {
19297
- this.ro = new index$2((entries) => {
18378
+ this.ro = new ResizeObserver((entries) => {
19298
18379
  for (const entry of entries) {
19299
18380
  this.currentWidth = entry.contentRect.width;
19300
18381
  this.currentHeight = entry.contentRect.height;
@@ -24154,7 +23235,7 @@ let Slides = class extends H {
24154
23235
  // the slideshow has been initialised without any dimensions - let's add a one show
24155
23236
  // resize observer to kick it off when it gets some dimensions
24156
23237
  if (!this.host.getBoundingClientRect().height) {
24157
- const ro = (this.resizeO = new index$2(() => {
23238
+ const ro = (this.resizeO = new ResizeObserver(() => {
24158
23239
  flick.resize();
24159
23240
  this.resizeO.disconnect();
24160
23241
  }));
@@ -24647,7 +23728,7 @@ let Sticker = class extends H {
24647
23728
  this.parentSizeObserver.disconnect();
24648
23729
  this.parentSizeObserver = undefined;
24649
23730
  }
24650
- this.parentSizeObserver = new index$2((entries) => {
23731
+ this.parentSizeObserver = new ResizeObserver((entries) => {
24651
23732
  for (const entry of entries) {
24652
23733
  let height, width;
24653
23734
  if (entry.contentRect.height)
@@ -24827,7 +23908,7 @@ let Sticker = class extends H {
24827
23908
  this.contentSizeObserver.disconnect();
24828
23909
  this.contentSizeObserver = undefined;
24829
23910
  }
24830
- this.contentSizeObserver = new index$2((entries) => {
23911
+ this.contentSizeObserver = new ResizeObserver((entries) => {
24831
23912
  for (const entry of entries) {
24832
23913
  if (this.pauseResizeWatcher)
24833
23914
  return;
@@ -25209,6 +24290,10 @@ let Tab = class extends H {
25209
24290
  this.handleCloseClick = () => {
25210
24291
  this.nanoTabClose.emit();
25211
24292
  };
24293
+ this.handleCloseKeydown = (e) => {
24294
+ if (e.key === ' ')
24295
+ this.handleCloseClick();
24296
+ };
25212
24297
  }
25213
24298
  /** Sets focus to the tab. */
25214
24299
  async setFocus() {
@@ -25224,7 +24309,7 @@ let Tab = class extends H {
25224
24309
  'nanotab--active': this.active,
25225
24310
  'nanotab--disabled': this.disabled,
25226
24311
  'nanotab--closable': this.closable,
25227
- }, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, tabIndex: -1 })))));
24312
+ }, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, onKeyDown: this.handleCloseKeydown, tabIndex: -1 })))));
25228
24313
  }
25229
24314
  get host() { return this; }
25230
24315
  static get style() { return tabCss; }
@@ -25340,6 +24425,9 @@ let TabGroup = class extends H {
25340
24425
  if (['top'].includes(this.placement)) {
25341
24426
  scrollIntoView(tabs[index], this.nav, 'horizontal', 'center');
25342
24427
  }
24428
+ // need to stop bubbling otherwise it will focus on parent tabs if nested
24429
+ event.stopPropagation();
24430
+ // stop the browser moving about
25343
24431
  event.preventDefault();
25344
24432
  }
25345
24433
  }
@@ -25626,7 +24714,7 @@ let TabGroup = class extends H {
25626
24714
  focusVisible.observe(this.leftBtn);
25627
24715
  focusVisible.observe(this.rightBtn);
25628
24716
  }
25629
- this.resizeObserver = new index$2(() => {
24717
+ this.resizeObserver = new ResizeObserver(() => {
25630
24718
  setTimeout(() => {
25631
24719
  this.updateScrollControls();
25632
24720
  this.syncActiveTabIndicator();
@@ -25679,7 +24767,7 @@ let TabGroup = class extends H {
25679
24767
  static get style() { return tabGroupCss; }
25680
24768
  };
25681
24769
 
25682
- const tooltipCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;display:contents}.tooltip{max-width:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:black;font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:white;opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));-webkit-transform:translateY(10px) translateZ(0);transform:translateY(10px) translateZ(0);-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;-webkit-transition-delay:var(--hide-delay);transition-delay:var(--hide-delay);-webkit-transition-duration:var(--hide-duration);transition-duration:var(--hide-duration);-webkit-transition-timing-function:var(--hide-timing-function);transition-timing-function:var(--hide-timing-function);white-space:normal}.tooltip-arrow{content:\"\";position:absolute;width:0;height:0;color:black;-webkit-transition:0.2s ease transform;transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000);pointer-events:none}.tooltip-positioner[data-popper-placement^=top] .tooltip{-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transform:translateY(-10px) translateZ(0);transform:translateY(-10px) translateZ(0)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip{-webkit-transform-origin:top;transform-origin:top}.tooltip-positioner[data-popper-placement^=left] .tooltip{-webkit-transform-origin:right;transform-origin:right}.tooltip-positioner[data-popper-placement^=right] .tooltip{-webkit-transform-origin:left;transform-origin:left}.tooltip-positioner.popover-visible .tooltip{opacity:1;-webkit-transform:none;transform:none;-webkit-transition-delay:var(--show-delay);transition-delay:var(--show-delay);-webkit-transition-duration:var(--show-duration);transition-duration:var(--show-duration);-webkit-transition-timing-function:var(--show-timing-function);transition-timing-function:var(--show-timing-function)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip-arrow{bottom:100%;left:calc(50% - 5px);border-bottom:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=bottom-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=bottom-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=top] .tooltip-arrow{top:100%;left:calc(50% - 5px);border-top:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=top-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=top-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=left] .tooltip-arrow{top:calc(50% - 5px);left:100%;border-left:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=left-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=left-end] .tooltip-arrow{top:auto;bottom:5px}.tooltip-positioner[data-popper-placement^=right] .tooltip-arrow{top:calc(50% - 5px);right:100%;border-right:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=right-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=right-end] .tooltip-arrow{top:auto;bottom:5px}";
24770
+ const tooltipCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;display:contents}.tooltip{max-width:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:black;font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:white;opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));-webkit-transform:translateY(10px) translateZ(0);transform:translateY(10px) translateZ(0);-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;-webkit-transition-delay:var(--hide-delay);transition-delay:var(--hide-delay);-webkit-transition-duration:var(--hide-duration);transition-duration:var(--hide-duration);-webkit-transition-timing-function:var(--hide-timing-function);transition-timing-function:var(--hide-timing-function);white-space:normal}.tooltip-arrow{content:\"\";position:absolute;width:0;height:0;color:black;-webkit-transition:0.2s ease transform;transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000)}.tooltip-positioner[data-popper-placement^=top] .tooltip{-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transform:translateY(-10px) translateZ(0);transform:translateY(-10px) translateZ(0)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip{-webkit-transform-origin:top;transform-origin:top}.tooltip-positioner[data-popper-placement^=left] .tooltip{-webkit-transform-origin:right;transform-origin:right}.tooltip-positioner[data-popper-placement^=right] .tooltip{-webkit-transform-origin:left;transform-origin:left}.tooltip-positioner.popover-visible .tooltip{opacity:1;-webkit-transform:none;transform:none;-webkit-transition-delay:var(--show-delay);transition-delay:var(--show-delay);-webkit-transition-duration:var(--show-duration);transition-duration:var(--show-duration);-webkit-transition-timing-function:var(--show-timing-function);transition-timing-function:var(--show-timing-function)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip-arrow{bottom:100%;left:calc(50% - 5px);border-bottom:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=bottom-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=bottom-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=top] .tooltip-arrow{top:100%;left:calc(50% - 5px);border-top:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=top-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=top-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=left] .tooltip-arrow{top:calc(50% - 5px);left:100%;border-left:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=left-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=left-end] .tooltip-arrow{top:auto;bottom:5px}.tooltip-positioner[data-popper-placement^=right] .tooltip-arrow{top:calc(50% - 5px);right:100%;border-right:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=right-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=right-end] .tooltip-arrow{top:auto;bottom:5px}";
25683
24771
 
25684
24772
  let id = 0;
25685
24773
  let Tooltip = class extends H {
@@ -25873,7 +24961,7 @@ const NanoAspectRatio = /*@__PURE__*/proxyCustomElement(AspectRatio, [1,"nano-as
25873
24961
  const NanoCheckbox = /*@__PURE__*/proxyCustomElement(Checkbox, [6,"nano-checkbox",{"hasFocus":[1540,"has-focus"],"checked":[1540],"disabled":[516],"value":[513],"name":[513],"required":[516],"type":[513],"label":[1],"indeterminate":[1540],"invalid":[2564],"validityMessage":[2049,"validity-message"],"color":[1],"form":[1],"inputType":[32],"_invalid":[32]},[[16,"reset","onReset"]]]);
25874
24962
  const NanoCheckboxGroup = /*@__PURE__*/proxyCustomElement(CheckboxGroup, [6,"nano-checkbox-group",{"validateOn":[1025,"validate-on"],"showInlineError":[4,"show-inline-error"],"min":[2],"max":[2],"disabled":[516],"legend":[1],"invalid":[2564],"validityMessage":[2049,"validity-message"],"checkboxes":[32],"nativeCbs":[32],"errorMessage":[32],"showErrorMsg":[32],"hasHelperSlot":[32],"_invalid":[32]},[[0,"nanoChange","handleCbChange"]]]);
25875
24963
  const NanoDatalist = /*@__PURE__*/proxyCustomElement(DataList, [1,"nano-datalist",{"selected":[1040],"dropDownConfig":[6160],"options":[16],"input":[1],"type":[1],"activeOptions":[2064],"open":[1028],"disableFilter":[4,"disable-filter"],"disabled":[4],"actvOptEles":[32],"connectedInput":[32],"inputLabel":[32],"hasNoResult":[32],"shouldOpen":[32],"canOpen":[32],"optionIds":[32]}]);
25876
- const NanoDateInput = /*@__PURE__*/proxyCustomElement(DateInput, [6,"nano-date-input",{"invalid":[2564],"validityMessage":[2049,"validity-message"],"helperText":[4,"helper-text"],"helperTextFormat":[16],"floatLabel":[4,"float-label"],"name":[1],"readonly":[4],"size":[2],"form":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"disabled":[4],"color":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"label":[1],"placeholder":[1025],"value":[1537],"validateOn":[1,"validate-on"],"showInlineError":[516,"show-inline-error"],"dateOrder":[1,"date-order"],"required":[4],"min":[1],"max":[1],"hideLabel":[4,"hide-label"],"picker":[4],"initialPickerDate":[1,"initial-picker-date"],"pickerOpen":[1540,"picker-open"],"closeAfterPicked":[4,"close-after-picked"],"dropDownConfig":[6160],"pattern":[32],"inputValue":[32],"_invalid":[32]}]);
24964
+ const NanoDateInput = /*@__PURE__*/proxyCustomElement(DateInput, [6,"nano-date-input",{"invalid":[2564],"validityMessage":[2049,"validity-message"],"helperText":[4,"helper-text"],"helperTextFormat":[16],"floatLabel":[4,"float-label"],"name":[1],"readonly":[4],"size":[2],"form":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"disabled":[4],"color":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"label":[1],"placeholder":[1025],"value":[1537],"validateOn":[1,"validate-on"],"showInlineError":[516,"show-inline-error"],"dateOrder":[1,"date-order"],"required":[4],"min":[1],"max":[1],"hideLabel":[4,"hide-label"],"picker":[4],"initialPickerDate":[1,"initial-picker-date"],"pickerOpen":[1540,"picker-open"],"closeAfterPicked":[4,"close-after-picked"],"dropDownConfig":[6160],"dateValue":[2064],"isDateDisabled":[16],"pattern":[32],"inputValue":[32],"_invalid":[32]}]);
25877
24965
  const NanoDatePicker = /*@__PURE__*/proxyCustomElement(DatePicker, [1,"nano-date-picker",{"selectedDate":[1025,"selected-date"],"min":[1],"max":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"color":[1],"isDateDisabled":[16],"isModal":[4,"is-modal"],"firstFocusEle":[16],"activeFocus":[32],"focusedDay":[32]}]);
25878
24966
  const NanoDetails = /*@__PURE__*/proxyCustomElement(Details, [1,"nano-details",{"label":[1],"open":[1540],"noHandle":[4,"no-handle"],"iconRotation":[2,"icon-rotation"],"color":[1],"isLoading":[32]}]);
25879
24967
  const NanoDialog = /*@__PURE__*/proxyCustomElement(Dialog, [1,"nano-dialog",{"showRibbon":[4,"show-ribbon"],"open":[1540],"label":[1],"noHeader":[4,"no-header"],"noFooter":[4,"no-footer"],"noUserDismiss":[4,"no-user-dismiss"],"storeId":[1,"store-id"],"storeMethod":[1,"store-method"],"hoist":[4],"isVisible":[32],"noDismiss":[32],"hasFooter":[32]}]);
@@ -26357,991 +25445,6 @@ const shadowCss = /*#__PURE__*/Object.freeze({
26357
25445
  scopeCss: scopeCss
26358
25446
  });
26359
25447
 
26360
- /**
26361
- * Copyright 2016 Google Inc. All Rights Reserved.
26362
- *
26363
- * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.
26364
- *
26365
- * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
26366
- *
26367
- */
26368
- (function() {
26369
-
26370
- // Exit early if we're not running in a browser.
26371
- if (typeof window !== 'object') {
26372
- return;
26373
- }
26374
-
26375
- // Exit early if all IntersectionObserver and IntersectionObserverEntry
26376
- // features are natively supported.
26377
- if ('IntersectionObserver' in window &&
26378
- 'IntersectionObserverEntry' in window &&
26379
- 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {
26380
-
26381
- // Minimal polyfill for Edge 15's lack of `isIntersecting`
26382
- // See: https://github.com/w3c/IntersectionObserver/issues/211
26383
- if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {
26384
- Object.defineProperty(window.IntersectionObserverEntry.prototype,
26385
- 'isIntersecting', {
26386
- get: function () {
26387
- return this.intersectionRatio > 0;
26388
- }
26389
- });
26390
- }
26391
- return;
26392
- }
26393
-
26394
-
26395
- /**
26396
- * A local reference to the document.
26397
- */
26398
- var document = window.document;
26399
-
26400
-
26401
- /**
26402
- * An IntersectionObserver registry. This registry exists to hold a strong
26403
- * reference to IntersectionObserver instances currently observing a target
26404
- * element. Without this registry, instances without another reference may be
26405
- * garbage collected.
26406
- */
26407
- var registry = [];
26408
-
26409
- /**
26410
- * The signal updater for cross-origin intersection. When not null, it means
26411
- * that the polyfill is configured to work in a cross-origin mode.
26412
- * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}
26413
- */
26414
- var crossOriginUpdater = null;
26415
-
26416
- /**
26417
- * The current cross-origin intersection. Only used in the cross-origin mode.
26418
- * @type {DOMRect|ClientRect}
26419
- */
26420
- var crossOriginRect = null;
26421
-
26422
-
26423
- /**
26424
- * Creates the global IntersectionObserverEntry constructor.
26425
- * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry
26426
- * @param {Object} entry A dictionary of instance properties.
26427
- * @constructor
26428
- */
26429
- function IntersectionObserverEntry(entry) {
26430
- this.time = entry.time;
26431
- this.target = entry.target;
26432
- this.rootBounds = ensureDOMRect(entry.rootBounds);
26433
- this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);
26434
- this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());
26435
- this.isIntersecting = !!entry.intersectionRect;
26436
-
26437
- // Calculates the intersection ratio.
26438
- var targetRect = this.boundingClientRect;
26439
- var targetArea = targetRect.width * targetRect.height;
26440
- var intersectionRect = this.intersectionRect;
26441
- var intersectionArea = intersectionRect.width * intersectionRect.height;
26442
-
26443
- // Sets intersection ratio.
26444
- if (targetArea) {
26445
- // Round the intersection ratio to avoid floating point math issues:
26446
- // https://github.com/w3c/IntersectionObserver/issues/324
26447
- this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));
26448
- } else {
26449
- // If area is zero and is intersecting, sets to 1, otherwise to 0
26450
- this.intersectionRatio = this.isIntersecting ? 1 : 0;
26451
- }
26452
- }
26453
-
26454
-
26455
- /**
26456
- * Creates the global IntersectionObserver constructor.
26457
- * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface
26458
- * @param {Function} callback The function to be invoked after intersection
26459
- * changes have queued. The function is not invoked if the queue has
26460
- * been emptied by calling the `takeRecords` method.
26461
- * @param {Object=} opt_options Optional configuration options.
26462
- * @constructor
26463
- */
26464
- function IntersectionObserver(callback, opt_options) {
26465
-
26466
- var options = opt_options || {};
26467
-
26468
- if (typeof callback != 'function') {
26469
- throw new Error('callback must be a function');
26470
- }
26471
-
26472
- if (options.root && options.root.nodeType != 1) {
26473
- throw new Error('root must be an Element');
26474
- }
26475
-
26476
- // Binds and throttles `this._checkForIntersections`.
26477
- this._checkForIntersections = throttle(
26478
- this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);
26479
-
26480
- // Private properties.
26481
- this._callback = callback;
26482
- this._observationTargets = [];
26483
- this._queuedEntries = [];
26484
- this._rootMarginValues = this._parseRootMargin(options.rootMargin);
26485
-
26486
- // Public properties.
26487
- this.thresholds = this._initThresholds(options.threshold);
26488
- this.root = options.root || null;
26489
- this.rootMargin = this._rootMarginValues.map(function(margin) {
26490
- return margin.value + margin.unit;
26491
- }).join(' ');
26492
-
26493
- /** @private @const {!Array<!Document>} */
26494
- this._monitoringDocuments = [];
26495
- /** @private @const {!Array<function()>} */
26496
- this._monitoringUnsubscribes = [];
26497
- }
26498
-
26499
-
26500
- /**
26501
- * The minimum interval within which the document will be checked for
26502
- * intersection changes.
26503
- */
26504
- IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;
26505
-
26506
-
26507
- /**
26508
- * The frequency in which the polyfill polls for intersection changes.
26509
- * this can be updated on a per instance basis and must be set prior to
26510
- * calling `observe` on the first target.
26511
- */
26512
- IntersectionObserver.prototype.POLL_INTERVAL = null;
26513
-
26514
- /**
26515
- * Use a mutation observer on the root element
26516
- * to detect intersection changes.
26517
- */
26518
- IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;
26519
-
26520
-
26521
- /**
26522
- * Sets up the polyfill in the cross-origin mode. The result is the
26523
- * updater function that accepts two arguments: `boundingClientRect` and
26524
- * `intersectionRect` - just as these fields would be available to the
26525
- * parent via `IntersectionObserverEntry`. This function should be called
26526
- * each time the iframe receives intersection information from the parent
26527
- * window, e.g. via messaging.
26528
- * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}
26529
- */
26530
- IntersectionObserver._setupCrossOriginUpdater = function() {
26531
- if (!crossOriginUpdater) {
26532
- /**
26533
- * @param {DOMRect|ClientRect} boundingClientRect
26534
- * @param {DOMRect|ClientRect} intersectionRect
26535
- */
26536
- crossOriginUpdater = function(boundingClientRect, intersectionRect) {
26537
- if (!boundingClientRect || !intersectionRect) {
26538
- crossOriginRect = getEmptyRect();
26539
- } else {
26540
- crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);
26541
- }
26542
- registry.forEach(function(observer) {
26543
- observer._checkForIntersections();
26544
- });
26545
- };
26546
- }
26547
- return crossOriginUpdater;
26548
- };
26549
-
26550
-
26551
- /**
26552
- * Resets the cross-origin mode.
26553
- */
26554
- IntersectionObserver._resetCrossOriginUpdater = function() {
26555
- crossOriginUpdater = null;
26556
- crossOriginRect = null;
26557
- };
26558
-
26559
-
26560
- /**
26561
- * Starts observing a target element for intersection changes based on
26562
- * the thresholds values.
26563
- * @param {Element} target The DOM element to observe.
26564
- */
26565
- IntersectionObserver.prototype.observe = function(target) {
26566
- var isTargetAlreadyObserved = this._observationTargets.some(function(item) {
26567
- return item.element == target;
26568
- });
26569
-
26570
- if (isTargetAlreadyObserved) {
26571
- return;
26572
- }
26573
-
26574
- if (!(target && target.nodeType == 1)) {
26575
- throw new Error('target must be an Element');
26576
- }
26577
-
26578
- this._registerInstance();
26579
- this._observationTargets.push({element: target, entry: null});
26580
- this._monitorIntersections(target.ownerDocument);
26581
- this._checkForIntersections();
26582
- };
26583
-
26584
-
26585
- /**
26586
- * Stops observing a target element for intersection changes.
26587
- * @param {Element} target The DOM element to observe.
26588
- */
26589
- IntersectionObserver.prototype.unobserve = function(target) {
26590
- this._observationTargets =
26591
- this._observationTargets.filter(function(item) {
26592
- return item.element != target;
26593
- });
26594
- this._unmonitorIntersections(target.ownerDocument);
26595
- if (this._observationTargets.length == 0) {
26596
- this._unregisterInstance();
26597
- }
26598
- };
26599
-
26600
-
26601
- /**
26602
- * Stops observing all target elements for intersection changes.
26603
- */
26604
- IntersectionObserver.prototype.disconnect = function() {
26605
- this._observationTargets = [];
26606
- this._unmonitorAllIntersections();
26607
- this._unregisterInstance();
26608
- };
26609
-
26610
-
26611
- /**
26612
- * Returns any queue entries that have not yet been reported to the
26613
- * callback and clears the queue. This can be used in conjunction with the
26614
- * callback to obtain the absolute most up-to-date intersection information.
26615
- * @return {Array} The currently queued entries.
26616
- */
26617
- IntersectionObserver.prototype.takeRecords = function() {
26618
- var records = this._queuedEntries.slice();
26619
- this._queuedEntries = [];
26620
- return records;
26621
- };
26622
-
26623
-
26624
- /**
26625
- * Accepts the threshold value from the user configuration object and
26626
- * returns a sorted array of unique threshold values. If a value is not
26627
- * between 0 and 1 and error is thrown.
26628
- * @private
26629
- * @param {Array|number=} opt_threshold An optional threshold value or
26630
- * a list of threshold values, defaulting to [0].
26631
- * @return {Array} A sorted list of unique and valid threshold values.
26632
- */
26633
- IntersectionObserver.prototype._initThresholds = function(opt_threshold) {
26634
- var threshold = opt_threshold || [0];
26635
- if (!Array.isArray(threshold)) threshold = [threshold];
26636
-
26637
- return threshold.sort().filter(function(t, i, a) {
26638
- if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {
26639
- throw new Error('threshold must be a number between 0 and 1 inclusively');
26640
- }
26641
- return t !== a[i - 1];
26642
- });
26643
- };
26644
-
26645
-
26646
- /**
26647
- * Accepts the rootMargin value from the user configuration object
26648
- * and returns an array of the four margin values as an object containing
26649
- * the value and unit properties. If any of the values are not properly
26650
- * formatted or use a unit other than px or %, and error is thrown.
26651
- * @private
26652
- * @param {string=} opt_rootMargin An optional rootMargin value,
26653
- * defaulting to '0px'.
26654
- * @return {Array<Object>} An array of margin objects with the keys
26655
- * value and unit.
26656
- */
26657
- IntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {
26658
- var marginString = opt_rootMargin || '0px';
26659
- var margins = marginString.split(/\s+/).map(function(margin) {
26660
- var parts = /^(-?\d*\.?\d+)(px|%)$/.exec(margin);
26661
- if (!parts) {
26662
- throw new Error('rootMargin must be specified in pixels or percent');
26663
- }
26664
- return {value: parseFloat(parts[1]), unit: parts[2]};
26665
- });
26666
-
26667
- // Handles shorthand.
26668
- margins[1] = margins[1] || margins[0];
26669
- margins[2] = margins[2] || margins[0];
26670
- margins[3] = margins[3] || margins[1];
26671
-
26672
- return margins;
26673
- };
26674
-
26675
-
26676
- /**
26677
- * Starts polling for intersection changes if the polling is not already
26678
- * happening, and if the page's visibility state is visible.
26679
- * @param {!Document} doc
26680
- * @private
26681
- */
26682
- IntersectionObserver.prototype._monitorIntersections = function(doc) {
26683
- var win = doc.defaultView;
26684
- if (!win) {
26685
- // Already destroyed.
26686
- return;
26687
- }
26688
- if (this._monitoringDocuments.indexOf(doc) != -1) {
26689
- // Already monitoring.
26690
- return;
26691
- }
26692
-
26693
- // Private state for monitoring.
26694
- var callback = this._checkForIntersections;
26695
- var monitoringInterval = null;
26696
- var domObserver = null;
26697
-
26698
- // If a poll interval is set, use polling instead of listening to
26699
- // resize and scroll events or DOM mutations.
26700
- if (this.POLL_INTERVAL) {
26701
- monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);
26702
- } else {
26703
- addEvent(win, 'resize', callback, true);
26704
- addEvent(doc, 'scroll', callback, true);
26705
- if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {
26706
- domObserver = new win.MutationObserver(callback);
26707
- domObserver.observe(doc, {
26708
- attributes: true,
26709
- childList: true,
26710
- characterData: true,
26711
- subtree: true
26712
- });
26713
- }
26714
- }
26715
-
26716
- this._monitoringDocuments.push(doc);
26717
- this._monitoringUnsubscribes.push(function() {
26718
- // Get the window object again. When a friendly iframe is destroyed, it
26719
- // will be null.
26720
- var win = doc.defaultView;
26721
-
26722
- if (win) {
26723
- if (monitoringInterval) {
26724
- win.clearInterval(monitoringInterval);
26725
- }
26726
- removeEvent(win, 'resize', callback, true);
26727
- }
26728
-
26729
- removeEvent(doc, 'scroll', callback, true);
26730
- if (domObserver) {
26731
- domObserver.disconnect();
26732
- }
26733
- });
26734
-
26735
- // Also monitor the parent.
26736
- if (doc != (this.root && this.root.ownerDocument || document)) {
26737
- var frame = getFrameElement(doc);
26738
- if (frame) {
26739
- this._monitorIntersections(frame.ownerDocument);
26740
- }
26741
- }
26742
- };
26743
-
26744
-
26745
- /**
26746
- * Stops polling for intersection changes.
26747
- * @param {!Document} doc
26748
- * @private
26749
- */
26750
- IntersectionObserver.prototype._unmonitorIntersections = function(doc) {
26751
- var index = this._monitoringDocuments.indexOf(doc);
26752
- if (index == -1) {
26753
- return;
26754
- }
26755
-
26756
- var rootDoc = (this.root && this.root.ownerDocument || document);
26757
-
26758
- // Check if any dependent targets are still remaining.
26759
- var hasDependentTargets =
26760
- this._observationTargets.some(function(item) {
26761
- var itemDoc = item.element.ownerDocument;
26762
- // Target is in this context.
26763
- if (itemDoc == doc) {
26764
- return true;
26765
- }
26766
- // Target is nested in this context.
26767
- while (itemDoc && itemDoc != rootDoc) {
26768
- var frame = getFrameElement(itemDoc);
26769
- itemDoc = frame && frame.ownerDocument;
26770
- if (itemDoc == doc) {
26771
- return true;
26772
- }
26773
- }
26774
- return false;
26775
- });
26776
- if (hasDependentTargets) {
26777
- return;
26778
- }
26779
-
26780
- // Unsubscribe.
26781
- var unsubscribe = this._monitoringUnsubscribes[index];
26782
- this._monitoringDocuments.splice(index, 1);
26783
- this._monitoringUnsubscribes.splice(index, 1);
26784
- unsubscribe();
26785
-
26786
- // Also unmonitor the parent.
26787
- if (doc != rootDoc) {
26788
- var frame = getFrameElement(doc);
26789
- if (frame) {
26790
- this._unmonitorIntersections(frame.ownerDocument);
26791
- }
26792
- }
26793
- };
26794
-
26795
-
26796
- /**
26797
- * Stops polling for intersection changes.
26798
- * @param {!Document} doc
26799
- * @private
26800
- */
26801
- IntersectionObserver.prototype._unmonitorAllIntersections = function() {
26802
- var unsubscribes = this._monitoringUnsubscribes.slice(0);
26803
- this._monitoringDocuments.length = 0;
26804
- this._monitoringUnsubscribes.length = 0;
26805
- for (var i = 0; i < unsubscribes.length; i++) {
26806
- unsubscribes[i]();
26807
- }
26808
- };
26809
-
26810
-
26811
- /**
26812
- * Scans each observation target for intersection changes and adds them
26813
- * to the internal entries queue. If new entries are found, it
26814
- * schedules the callback to be invoked.
26815
- * @private
26816
- */
26817
- IntersectionObserver.prototype._checkForIntersections = function() {
26818
- if (!this.root && crossOriginUpdater && !crossOriginRect) {
26819
- // Cross origin monitoring, but no initial data available yet.
26820
- return;
26821
- }
26822
-
26823
- var rootIsInDom = this._rootIsInDom();
26824
- var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();
26825
-
26826
- this._observationTargets.forEach(function(item) {
26827
- var target = item.element;
26828
- var targetRect = getBoundingClientRect(target);
26829
- var rootContainsTarget = this._rootContainsTarget(target);
26830
- var oldEntry = item.entry;
26831
- var intersectionRect = rootIsInDom && rootContainsTarget &&
26832
- this._computeTargetAndRootIntersection(target, targetRect, rootRect);
26833
-
26834
- var newEntry = item.entry = new IntersectionObserverEntry({
26835
- time: now(),
26836
- target: target,
26837
- boundingClientRect: targetRect,
26838
- rootBounds: crossOriginUpdater && !this.root ? null : rootRect,
26839
- intersectionRect: intersectionRect
26840
- });
26841
-
26842
- if (!oldEntry) {
26843
- this._queuedEntries.push(newEntry);
26844
- } else if (rootIsInDom && rootContainsTarget) {
26845
- // If the new entry intersection ratio has crossed any of the
26846
- // thresholds, add a new entry.
26847
- if (this._hasCrossedThreshold(oldEntry, newEntry)) {
26848
- this._queuedEntries.push(newEntry);
26849
- }
26850
- } else {
26851
- // If the root is not in the DOM or target is not contained within
26852
- // root but the previous entry for this target had an intersection,
26853
- // add a new record indicating removal.
26854
- if (oldEntry && oldEntry.isIntersecting) {
26855
- this._queuedEntries.push(newEntry);
26856
- }
26857
- }
26858
- }, this);
26859
-
26860
- if (this._queuedEntries.length) {
26861
- this._callback(this.takeRecords(), this);
26862
- }
26863
- };
26864
-
26865
-
26866
- /**
26867
- * Accepts a target and root rect computes the intersection between then
26868
- * following the algorithm in the spec.
26869
- * TODO(philipwalton): at this time clip-path is not considered.
26870
- * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo
26871
- * @param {Element} target The target DOM element
26872
- * @param {Object} targetRect The bounding rect of the target.
26873
- * @param {Object} rootRect The bounding rect of the root after being
26874
- * expanded by the rootMargin value.
26875
- * @return {?Object} The final intersection rect object or undefined if no
26876
- * intersection is found.
26877
- * @private
26878
- */
26879
- IntersectionObserver.prototype._computeTargetAndRootIntersection =
26880
- function(target, targetRect, rootRect) {
26881
- // If the element isn't displayed, an intersection can't happen.
26882
- if (window.getComputedStyle(target).display == 'none') return;
26883
-
26884
- var intersectionRect = targetRect;
26885
- var parent = getParentNode(target);
26886
- var atRoot = false;
26887
-
26888
- while (!atRoot && parent) {
26889
- var parentRect = null;
26890
- var parentComputedStyle = parent.nodeType == 1 ?
26891
- window.getComputedStyle(parent) : {};
26892
-
26893
- // If the parent isn't displayed, an intersection can't happen.
26894
- if (parentComputedStyle.display == 'none') return null;
26895
-
26896
- if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {
26897
- atRoot = true;
26898
- if (parent == this.root || parent == document) {
26899
- if (crossOriginUpdater && !this.root) {
26900
- if (!crossOriginRect ||
26901
- crossOriginRect.width == 0 && crossOriginRect.height == 0) {
26902
- // A 0-size cross-origin intersection means no-intersection.
26903
- parent = null;
26904
- parentRect = null;
26905
- intersectionRect = null;
26906
- } else {
26907
- parentRect = crossOriginRect;
26908
- }
26909
- } else {
26910
- parentRect = rootRect;
26911
- }
26912
- } else {
26913
- // Check if there's a frame that can be navigated to.
26914
- var frame = getParentNode(parent);
26915
- var frameRect = frame && getBoundingClientRect(frame);
26916
- var frameIntersect =
26917
- frame &&
26918
- this._computeTargetAndRootIntersection(frame, frameRect, rootRect);
26919
- if (frameRect && frameIntersect) {
26920
- parent = frame;
26921
- parentRect = convertFromParentRect(frameRect, frameIntersect);
26922
- } else {
26923
- parent = null;
26924
- intersectionRect = null;
26925
- }
26926
- }
26927
- } else {
26928
- // If the element has a non-visible overflow, and it's not the <body>
26929
- // or <html> element, update the intersection rect.
26930
- // Note: <body> and <html> cannot be clipped to a rect that's not also
26931
- // the document rect, so no need to compute a new intersection.
26932
- var doc = parent.ownerDocument;
26933
- if (parent != doc.body &&
26934
- parent != doc.documentElement &&
26935
- parentComputedStyle.overflow != 'visible') {
26936
- parentRect = getBoundingClientRect(parent);
26937
- }
26938
- }
26939
-
26940
- // If either of the above conditionals set a new parentRect,
26941
- // calculate new intersection data.
26942
- if (parentRect) {
26943
- intersectionRect = computeRectIntersection(parentRect, intersectionRect);
26944
- }
26945
- if (!intersectionRect) break;
26946
- parent = parent && getParentNode(parent);
26947
- }
26948
- return intersectionRect;
26949
- };
26950
-
26951
-
26952
- /**
26953
- * Returns the root rect after being expanded by the rootMargin value.
26954
- * @return {ClientRect} The expanded root rect.
26955
- * @private
26956
- */
26957
- IntersectionObserver.prototype._getRootRect = function() {
26958
- var rootRect;
26959
- if (this.root) {
26960
- rootRect = getBoundingClientRect(this.root);
26961
- } else {
26962
- // Use <html>/<body> instead of window since scroll bars affect size.
26963
- var html = document.documentElement;
26964
- var body = document.body;
26965
- rootRect = {
26966
- top: 0,
26967
- left: 0,
26968
- right: html.clientWidth || body.clientWidth,
26969
- width: html.clientWidth || body.clientWidth,
26970
- bottom: html.clientHeight || body.clientHeight,
26971
- height: html.clientHeight || body.clientHeight
26972
- };
26973
- }
26974
- return this._expandRectByRootMargin(rootRect);
26975
- };
26976
-
26977
-
26978
- /**
26979
- * Accepts a rect and expands it by the rootMargin value.
26980
- * @param {DOMRect|ClientRect} rect The rect object to expand.
26981
- * @return {ClientRect} The expanded rect.
26982
- * @private
26983
- */
26984
- IntersectionObserver.prototype._expandRectByRootMargin = function(rect) {
26985
- var margins = this._rootMarginValues.map(function(margin, i) {
26986
- return margin.unit == 'px' ? margin.value :
26987
- margin.value * (i % 2 ? rect.width : rect.height) / 100;
26988
- });
26989
- var newRect = {
26990
- top: rect.top - margins[0],
26991
- right: rect.right + margins[1],
26992
- bottom: rect.bottom + margins[2],
26993
- left: rect.left - margins[3]
26994
- };
26995
- newRect.width = newRect.right - newRect.left;
26996
- newRect.height = newRect.bottom - newRect.top;
26997
-
26998
- return newRect;
26999
- };
27000
-
27001
-
27002
- /**
27003
- * Accepts an old and new entry and returns true if at least one of the
27004
- * threshold values has been crossed.
27005
- * @param {?IntersectionObserverEntry} oldEntry The previous entry for a
27006
- * particular target element or null if no previous entry exists.
27007
- * @param {IntersectionObserverEntry} newEntry The current entry for a
27008
- * particular target element.
27009
- * @return {boolean} Returns true if a any threshold has been crossed.
27010
- * @private
27011
- */
27012
- IntersectionObserver.prototype._hasCrossedThreshold =
27013
- function(oldEntry, newEntry) {
27014
-
27015
- // To make comparing easier, an entry that has a ratio of 0
27016
- // but does not actually intersect is given a value of -1
27017
- var oldRatio = oldEntry && oldEntry.isIntersecting ?
27018
- oldEntry.intersectionRatio || 0 : -1;
27019
- var newRatio = newEntry.isIntersecting ?
27020
- newEntry.intersectionRatio || 0 : -1;
27021
-
27022
- // Ignore unchanged ratios
27023
- if (oldRatio === newRatio) return;
27024
-
27025
- for (var i = 0; i < this.thresholds.length; i++) {
27026
- var threshold = this.thresholds[i];
27027
-
27028
- // Return true if an entry matches a threshold or if the new ratio
27029
- // and the old ratio are on the opposite sides of a threshold.
27030
- if (threshold == oldRatio || threshold == newRatio ||
27031
- threshold < oldRatio !== threshold < newRatio) {
27032
- return true;
27033
- }
27034
- }
27035
- };
27036
-
27037
-
27038
- /**
27039
- * Returns whether or not the root element is an element and is in the DOM.
27040
- * @return {boolean} True if the root element is an element and is in the DOM.
27041
- * @private
27042
- */
27043
- IntersectionObserver.prototype._rootIsInDom = function() {
27044
- return !this.root || containsDeep(document, this.root);
27045
- };
27046
-
27047
-
27048
- /**
27049
- * Returns whether or not the target element is a child of root.
27050
- * @param {Element} target The target element to check.
27051
- * @return {boolean} True if the target element is a child of root.
27052
- * @private
27053
- */
27054
- IntersectionObserver.prototype._rootContainsTarget = function(target) {
27055
- return containsDeep(this.root || document, target) &&
27056
- (!this.root || this.root.ownerDocument == target.ownerDocument);
27057
- };
27058
-
27059
-
27060
- /**
27061
- * Adds the instance to the global IntersectionObserver registry if it isn't
27062
- * already present.
27063
- * @private
27064
- */
27065
- IntersectionObserver.prototype._registerInstance = function() {
27066
- if (registry.indexOf(this) < 0) {
27067
- registry.push(this);
27068
- }
27069
- };
27070
-
27071
-
27072
- /**
27073
- * Removes the instance from the global IntersectionObserver registry.
27074
- * @private
27075
- */
27076
- IntersectionObserver.prototype._unregisterInstance = function() {
27077
- var index = registry.indexOf(this);
27078
- if (index != -1) registry.splice(index, 1);
27079
- };
27080
-
27081
-
27082
- /**
27083
- * Returns the result of the performance.now() method or null in browsers
27084
- * that don't support the API.
27085
- * @return {number} The elapsed time since the page was requested.
27086
- */
27087
- function now() {
27088
- return window.performance && performance.now && performance.now();
27089
- }
27090
-
27091
-
27092
- /**
27093
- * Throttles a function and delays its execution, so it's only called at most
27094
- * once within a given time period.
27095
- * @param {Function} fn The function to throttle.
27096
- * @param {number} timeout The amount of time that must pass before the
27097
- * function can be called again.
27098
- * @return {Function} The throttled function.
27099
- */
27100
- function throttle(fn, timeout) {
27101
- var timer = null;
27102
- return function () {
27103
- if (!timer) {
27104
- timer = setTimeout(function() {
27105
- fn();
27106
- timer = null;
27107
- }, timeout);
27108
- }
27109
- };
27110
- }
27111
-
27112
-
27113
- /**
27114
- * Adds an event handler to a DOM node ensuring cross-browser compatibility.
27115
- * @param {Node} node The DOM node to add the event handler to.
27116
- * @param {string} event The event name.
27117
- * @param {Function} fn The event handler to add.
27118
- * @param {boolean} opt_useCapture Optionally adds the even to the capture
27119
- * phase. Note: this only works in modern browsers.
27120
- */
27121
- function addEvent(node, event, fn, opt_useCapture) {
27122
- if (typeof node.addEventListener == 'function') {
27123
- node.addEventListener(event, fn, opt_useCapture || false);
27124
- }
27125
- else if (typeof node.attachEvent == 'function') {
27126
- node.attachEvent('on' + event, fn);
27127
- }
27128
- }
27129
-
27130
-
27131
- /**
27132
- * Removes a previously added event handler from a DOM node.
27133
- * @param {Node} node The DOM node to remove the event handler from.
27134
- * @param {string} event The event name.
27135
- * @param {Function} fn The event handler to remove.
27136
- * @param {boolean} opt_useCapture If the event handler was added with this
27137
- * flag set to true, it should be set to true here in order to remove it.
27138
- */
27139
- function removeEvent(node, event, fn, opt_useCapture) {
27140
- if (typeof node.removeEventListener == 'function') {
27141
- node.removeEventListener(event, fn, opt_useCapture || false);
27142
- }
27143
- else if (typeof node.detatchEvent == 'function') {
27144
- node.detatchEvent('on' + event, fn);
27145
- }
27146
- }
27147
-
27148
-
27149
- /**
27150
- * Returns the intersection between two rect objects.
27151
- * @param {Object} rect1 The first rect.
27152
- * @param {Object} rect2 The second rect.
27153
- * @return {?Object|?ClientRect} The intersection rect or undefined if no
27154
- * intersection is found.
27155
- */
27156
- function computeRectIntersection(rect1, rect2) {
27157
- var top = Math.max(rect1.top, rect2.top);
27158
- var bottom = Math.min(rect1.bottom, rect2.bottom);
27159
- var left = Math.max(rect1.left, rect2.left);
27160
- var right = Math.min(rect1.right, rect2.right);
27161
- var width = right - left;
27162
- var height = bottom - top;
27163
-
27164
- return (width >= 0 && height >= 0) && {
27165
- top: top,
27166
- bottom: bottom,
27167
- left: left,
27168
- right: right,
27169
- width: width,
27170
- height: height
27171
- } || null;
27172
- }
27173
-
27174
-
27175
- /**
27176
- * Shims the native getBoundingClientRect for compatibility with older IE.
27177
- * @param {Element} el The element whose bounding rect to get.
27178
- * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.
27179
- */
27180
- function getBoundingClientRect(el) {
27181
- var rect;
27182
-
27183
- try {
27184
- rect = el.getBoundingClientRect();
27185
- } catch (err) {
27186
- // Ignore Windows 7 IE11 "Unspecified error"
27187
- // https://github.com/w3c/IntersectionObserver/pull/205
27188
- }
27189
-
27190
- if (!rect) return getEmptyRect();
27191
-
27192
- // Older IE
27193
- if (!(rect.width && rect.height)) {
27194
- rect = {
27195
- top: rect.top,
27196
- right: rect.right,
27197
- bottom: rect.bottom,
27198
- left: rect.left,
27199
- width: rect.right - rect.left,
27200
- height: rect.bottom - rect.top
27201
- };
27202
- }
27203
- return rect;
27204
- }
27205
-
27206
-
27207
- /**
27208
- * Returns an empty rect object. An empty rect is returned when an element
27209
- * is not in the DOM.
27210
- * @return {ClientRect} The empty rect.
27211
- */
27212
- function getEmptyRect() {
27213
- return {
27214
- top: 0,
27215
- bottom: 0,
27216
- left: 0,
27217
- right: 0,
27218
- width: 0,
27219
- height: 0
27220
- };
27221
- }
27222
-
27223
-
27224
- /**
27225
- * Ensure that the result has all of the necessary fields of the DOMRect.
27226
- * Specifically this ensures that `x` and `y` fields are set.
27227
- *
27228
- * @param {?DOMRect|?ClientRect} rect
27229
- * @return {?DOMRect}
27230
- */
27231
- function ensureDOMRect(rect) {
27232
- // A `DOMRect` object has `x` and `y` fields.
27233
- if (!rect || 'x' in rect) {
27234
- return rect;
27235
- }
27236
- // A IE's `ClientRect` type does not have `x` and `y`. The same is the case
27237
- // for internally calculated Rect objects. For the purposes of
27238
- // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`
27239
- // for these fields.
27240
- return {
27241
- top: rect.top,
27242
- y: rect.top,
27243
- bottom: rect.bottom,
27244
- left: rect.left,
27245
- x: rect.left,
27246
- right: rect.right,
27247
- width: rect.width,
27248
- height: rect.height
27249
- };
27250
- }
27251
-
27252
-
27253
- /**
27254
- * Inverts the intersection and bounding rect from the parent (frame) BCR to
27255
- * the local BCR space.
27256
- * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.
27257
- * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.
27258
- * @return {ClientRect} The local root bounding rect for the parent's children.
27259
- */
27260
- function convertFromParentRect(parentBoundingRect, parentIntersectionRect) {
27261
- var top = parentIntersectionRect.top - parentBoundingRect.top;
27262
- var left = parentIntersectionRect.left - parentBoundingRect.left;
27263
- return {
27264
- top: top,
27265
- left: left,
27266
- height: parentIntersectionRect.height,
27267
- width: parentIntersectionRect.width,
27268
- bottom: top + parentIntersectionRect.height,
27269
- right: left + parentIntersectionRect.width
27270
- };
27271
- }
27272
-
27273
-
27274
- /**
27275
- * Checks to see if a parent element contains a child element (including inside
27276
- * shadow DOM).
27277
- * @param {Node} parent The parent element.
27278
- * @param {Node} child The child element.
27279
- * @return {boolean} True if the parent node contains the child node.
27280
- */
27281
- function containsDeep(parent, child) {
27282
- var node = child;
27283
- while (node) {
27284
- if (node == parent) return true;
27285
-
27286
- node = getParentNode(node);
27287
- }
27288
- return false;
27289
- }
27290
-
27291
-
27292
- /**
27293
- * Gets the parent node of an element or its host element if the parent node
27294
- * is a shadow root.
27295
- * @param {Node} node The node whose parent to get.
27296
- * @return {Node|null} The parent node or null if no parent exists.
27297
- */
27298
- function getParentNode(node) {
27299
- var parent = node.parentNode;
27300
-
27301
- if (node.nodeType == /* DOCUMENT */ 9 && node != document) {
27302
- // If this node is a document node, look for the embedding frame.
27303
- return getFrameElement(node);
27304
- }
27305
-
27306
- if (parent && parent.nodeType == 11 && parent.host) {
27307
- // If the parent is a shadow root, return the host element.
27308
- return parent.host;
27309
- }
27310
-
27311
- if (parent && parent.assignedSlot) {
27312
- // If the parent is distributed in a <slot>, return the parent of a slot.
27313
- return parent.assignedSlot.parentNode;
27314
- }
27315
-
27316
- return parent;
27317
- }
27318
-
27319
-
27320
- /**
27321
- * Returns the embedding frame element, if any.
27322
- * @param {!Document} doc
27323
- * @return {!Element}
27324
- */
27325
- function getFrameElement(doc) {
27326
- try {
27327
- return doc.defaultView && doc.defaultView.frameElement || null;
27328
- } catch (e) {
27329
- // Ignore the error.
27330
- return null;
27331
- }
27332
- }
27333
-
27334
-
27335
- // Exposes the constructors globally.
27336
- window.IntersectionObserver = IntersectionObserver;
27337
- window.IntersectionObserverEntry = IntersectionObserverEntry;
27338
-
27339
- }());
27340
-
27341
- const intersectionObserver = /*#__PURE__*/Object.freeze({
27342
- __proto__: null
27343
- });
27344
-
27345
25448
  (function () {
27346
25449
 
27347
25450
  var UNSUPPORTED_ENVIRONMENT = typeof window === "undefined";
@@ -29412,6 +27515,6 @@ const index = /*#__PURE__*/Object.freeze({
29412
27515
  GESTURE_CONTROLLER: GESTURE_CONTROLLER
29413
27516
  });
29414
27517
 
29415
- export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle$1 as nanoThrottle, setAssetPath, setPlatformOptions };
27518
+ export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle as nanoThrottle, setAssetPath, setPlatformOptions };
29416
27519
 
29417
27520
  //# sourceMappingURL=index.js.map