@nanoporetech-digital/components 5.11.8 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/cjs/{component-store-149aeffe.js → component-store-7427cb36.js} +2 -2
  3. package/dist/cjs/component-store-7427cb36.js.map +1 -0
  4. package/dist/cjs/{drag-777bd8dd.js → drag-1cdd881b.js} +9 -9
  5. package/dist/cjs/drag-1cdd881b.js.map +1 -0
  6. package/dist/cjs/{fade-dcabf3c1.js → fade-738dbd13.js} +2 -2
  7. package/dist/cjs/{fade-dcabf3c1.js.map → fade-738dbd13.js.map} +1 -1
  8. package/dist/cjs/{form-control-cae1e493.js → form-control-9a2379b4.js} +3 -3
  9. package/dist/cjs/form-control-9a2379b4.js.map +1 -0
  10. package/dist/cjs/{fullscreen-d24940a1.js → fullscreen-a994dc5b.js} +2 -2
  11. package/dist/cjs/{fullscreen-d24940a1.js.map → fullscreen-a994dc5b.js.map} +1 -1
  12. package/dist/cjs/{index-72ee0363.js → index-ece1cb9e.js} +10 -2
  13. package/dist/cjs/index-ece1cb9e.js.map +1 -0
  14. package/dist/cjs/index.cjs.js +35 -9
  15. package/dist/cjs/index.cjs.js.map +1 -1
  16. package/dist/cjs/{lazyload-f6be7590.js → lazyload-d532de2a.js} +2 -2
  17. package/dist/cjs/{lazyload-f6be7590.js.map → lazyload-d532de2a.js.map} +1 -1
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/cjs/{modal-b9b40f6d.js → modal-f9dce001.js} +2 -3
  20. package/dist/cjs/modal-f9dce001.js.map +1 -0
  21. package/dist/cjs/nano-accordion.cjs.entry.js +5 -2
  22. package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nano-alert.cjs.entry.js +3 -3
  24. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
  26. package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
  28. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nano-checkbox-group.cjs.entry.js +12 -14
  30. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nano-checkbox.cjs.entry.js +2 -2
  32. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nano-components.cjs.js +1 -1
  34. package/dist/cjs/nano-datalist_3.cjs.entry.js +16 -25
  35. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nano-date-input.cjs.entry.js +4 -4
  37. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
  39. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nano-demo.cjs.entry.js +8 -12
  41. package/dist/cjs/nano-demo.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nano-details.cjs.entry.js +1 -1
  43. package/dist/cjs/nano-dialog.cjs.entry.js +2 -2
  44. package/dist/cjs/nano-drawer.cjs.entry.js +3 -3
  45. package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nano-dropdown.cjs.entry.js +6 -7
  47. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nano-field-validator.cjs.entry.js +3 -6
  49. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nano-file-upload.cjs.entry.js +2 -2
  51. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +101 -33
  53. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nano-global-nav.cjs.entry.js +18 -24
  55. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nano-icon-button_2.cjs.entry.js +2 -4
  57. package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nano-icon.cjs.entry.js +7 -2
  59. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nano-input.cjs.entry.js +21 -7
  61. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nano-range.cjs.entry.js +2 -2
  63. package/dist/cjs/{nano-slides-2f3dcc02.js → nano-slides-d8032939.js} +23 -22
  64. package/dist/cjs/nano-slides-d8032939.js.map +1 -0
  65. package/dist/cjs/nano-slides.cjs.entry.js +1 -1
  66. package/dist/cjs/nano-sortable.cjs.entry.js +7 -9
  67. package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -1
  68. package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
  69. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  70. package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nano-tab-group.cjs.entry.js +6 -8
  72. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  73. package/dist/cjs/{nano-table-d96f3eea.js → nano-table-84da62a4.js} +53 -53
  74. package/dist/cjs/nano-table-84da62a4.js.map +1 -0
  75. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  76. package/dist/cjs/{page-dots-ae2cefb4.js → page-dots-d360366a.js} +2 -2
  77. package/dist/cjs/{page-dots-ae2cefb4.js.map → page-dots-d360366a.js.map} +1 -1
  78. package/dist/cjs/{table.worker-f258383d.js → table.worker-4aad752d.js} +1 -1
  79. package/dist/cjs/{table.worker-cedbf1a6.js → table.worker-f386d031.js} +3 -3
  80. package/dist/cjs/table.worker-f386d031.js.map +1 -0
  81. package/dist/cjs/{theme-9cbe28c5.js → theme-50275e1a.js} +7 -2
  82. package/dist/cjs/theme-50275e1a.js.map +1 -0
  83. package/dist/cjs/{transitions-cc18619c.js → transitions-20fce787.js} +7 -2
  84. package/dist/cjs/transitions-20fce787.js.map +1 -0
  85. package/dist/collection/components/accordion/accordion.js +4 -1
  86. package/dist/collection/components/accordion/accordion.js.map +1 -1
  87. package/dist/collection/components/alert/alert.helpers.js +24 -6
  88. package/dist/collection/components/alert/alert.helpers.js.map +1 -1
  89. package/dist/collection/components/alert/alert.js +1 -1
  90. package/dist/collection/components/alert/alert.js.map +1 -1
  91. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  92. package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
  93. package/dist/collection/components/algolia/algolia.js +1 -1
  94. package/dist/collection/components/algolia/algolia.js.map +1 -1
  95. package/dist/collection/components/checkbox/checkbox-group.js +11 -13
  96. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  97. package/dist/collection/components/checkbox/checkbox.js +1 -1
  98. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  99. package/dist/collection/components/datalist/datalist.js +14 -21
  100. package/dist/collection/components/datalist/datalist.js.map +1 -1
  101. package/dist/collection/components/date-input/date-input.js +3 -3
  102. package/dist/collection/components/date-input/date-input.js.map +1 -1
  103. package/dist/collection/components/date-picker/date-picker.js +1 -1
  104. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  105. package/dist/collection/components/demo/demo.js +8 -12
  106. package/dist/collection/components/demo/demo.js.map +1 -1
  107. package/dist/collection/components/dialog/dialog.helpers.js +11 -3
  108. package/dist/collection/components/dialog/dialog.helpers.js.map +1 -1
  109. package/dist/collection/components/drawer/drawer.js +1 -1
  110. package/dist/collection/components/drawer/drawer.js.map +1 -1
  111. package/dist/collection/components/dropdown/dropdown.js +6 -7
  112. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  113. package/dist/collection/components/field-validator/field-validator.js +3 -6
  114. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  115. package/dist/collection/components/file-upload/file-upload.js +2 -2
  116. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  117. package/dist/collection/components/form-control/form-control.js +2 -2
  118. package/dist/collection/components/form-control/form-control.js.map +1 -1
  119. package/dist/collection/components/global-nav/assets/ont-logo-inverse.svg +47 -0
  120. package/dist/collection/components/global-nav/global-nav-user-profile.js +1 -2
  121. package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
  122. package/dist/collection/components/global-nav/global-nav.js +4 -8
  123. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  124. package/dist/collection/components/icon/icon.js +6 -1
  125. package/dist/collection/components/icon/icon.js.map +1 -1
  126. package/dist/collection/components/input/input.js +19 -5
  127. package/dist/collection/components/input/input.js.map +1 -1
  128. package/dist/collection/components/menu/menu.js +2 -4
  129. package/dist/collection/components/menu/menu.js.map +1 -1
  130. package/dist/collection/components/select/select.css +2 -1
  131. package/dist/collection/components/select/select.js +153 -31
  132. package/dist/collection/components/select/select.js.map +1 -1
  133. package/dist/collection/components/slides/slides.js +19 -46
  134. package/dist/collection/components/slides/slides.js.map +1 -1
  135. package/dist/collection/components/sortable/sortable.js +6 -8
  136. package/dist/collection/components/sortable/sortable.js.map +1 -1
  137. package/dist/collection/components/table/table.cell.js +8 -8
  138. package/dist/collection/components/table/table.cell.js.map +1 -1
  139. package/dist/collection/components/table/table.header.js +11 -4
  140. package/dist/collection/components/table/table.header.js.map +1 -1
  141. package/dist/collection/components/table/table.js +12 -17
  142. package/dist/collection/components/table/table.js.map +1 -1
  143. package/dist/collection/components/table/table.row.js +11 -11
  144. package/dist/collection/components/table/table.row.js.map +1 -1
  145. package/dist/collection/components/table/table.store.js +2 -3
  146. package/dist/collection/components/table/table.store.js.map +1 -1
  147. package/dist/collection/components/table/table.utils.js +7 -8
  148. package/dist/collection/components/table/table.utils.js.map +1 -1
  149. package/dist/collection/components/table/table.worker.js +3 -3
  150. package/dist/collection/components/table/table.worker.js.map +1 -1
  151. package/dist/collection/components/tabs/tab-content.css +0 -1
  152. package/dist/collection/components/tabs/tab-group.js +3 -5
  153. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  154. package/dist/collection/components/tooltip/tooltip.js +2 -4
  155. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  156. package/dist/collection/utils/drag.js +8 -8
  157. package/dist/collection/utils/drag.js.map +1 -1
  158. package/dist/collection/utils/fetch.js +12 -15
  159. package/dist/collection/utils/fetch.js.map +1 -1
  160. package/dist/collection/utils/gesture/index.js +9 -1
  161. package/dist/collection/utils/gesture/index.js.map +1 -1
  162. package/dist/collection/utils/modal.js +1 -2
  163. package/dist/collection/utils/modal.js.map +1 -1
  164. package/dist/collection/utils/store/get-set.js +1 -1
  165. package/dist/collection/utils/store/get-set.js.map +1 -1
  166. package/dist/collection/utils/testing/index.js +2 -2
  167. package/dist/collection/utils/testing/index.js.map +1 -1
  168. package/dist/collection/utils/theme.js +6 -1
  169. package/dist/collection/utils/theme.js.map +1 -1
  170. package/dist/collection/utils/transitions.js +6 -1
  171. package/dist/collection/utils/transitions.js.map +1 -1
  172. package/dist/components/algolia.js +1 -1
  173. package/dist/components/algolia.js.map +1 -1
  174. package/dist/components/component-store.js +1 -1
  175. package/dist/components/component-store.js.map +1 -1
  176. package/dist/components/datalist.js +14 -21
  177. package/dist/components/datalist.js.map +1 -1
  178. package/dist/components/date-picker.js +1 -1
  179. package/dist/components/date-picker.js.map +1 -1
  180. package/dist/components/drag.js +8 -8
  181. package/dist/components/drag.js.map +1 -1
  182. package/dist/components/dropdown.js +6 -7
  183. package/dist/components/dropdown.js.map +1 -1
  184. package/dist/components/form-control.js +2 -2
  185. package/dist/components/form-control.js.map +1 -1
  186. package/dist/components/global-nav-user-profile.js +1 -2
  187. package/dist/components/global-nav-user-profile.js.map +1 -1
  188. package/dist/components/icon.js +6 -1
  189. package/dist/components/icon.js.map +1 -1
  190. package/dist/components/index.js +35 -9
  191. package/dist/components/index.js.map +1 -1
  192. package/dist/components/index3.js +9 -1
  193. package/dist/components/index3.js.map +1 -1
  194. package/dist/components/input.js +19 -5
  195. package/dist/components/input.js.map +1 -1
  196. package/dist/components/menu.js +2 -4
  197. package/dist/components/menu.js.map +1 -1
  198. package/dist/components/modal.js +1 -2
  199. package/dist/components/modal.js.map +1 -1
  200. package/dist/components/nano-accordion.js +4 -1
  201. package/dist/components/nano-accordion.js.map +1 -1
  202. package/dist/components/nano-alert.js +1 -1
  203. package/dist/components/nano-alert.js.map +1 -1
  204. package/dist/components/nano-algolia-filter.js +2 -2
  205. package/dist/components/nano-algolia-filter.js.map +1 -1
  206. package/dist/components/nano-checkbox-group.js +11 -13
  207. package/dist/components/nano-checkbox-group.js.map +1 -1
  208. package/dist/components/nano-checkbox.js +1 -1
  209. package/dist/components/nano-checkbox.js.map +1 -1
  210. package/dist/components/nano-date-input.js +3 -3
  211. package/dist/components/nano-date-input.js.map +1 -1
  212. package/dist/components/nano-demo.js +8 -12
  213. package/dist/components/nano-demo.js.map +1 -1
  214. package/dist/components/nano-drawer.js +1 -1
  215. package/dist/components/nano-drawer.js.map +1 -1
  216. package/dist/components/nano-field-validator.js +3 -6
  217. package/dist/components/nano-field-validator.js.map +1 -1
  218. package/dist/components/nano-file-upload.js +2 -2
  219. package/dist/components/nano-file-upload.js.map +1 -1
  220. package/dist/components/nano-global-nav.js +16 -22
  221. package/dist/components/nano-global-nav.js.map +1 -1
  222. package/dist/components/nano-slides.js +19 -19
  223. package/dist/components/nano-slides.js.map +1 -1
  224. package/dist/components/nano-sortable.js +6 -8
  225. package/dist/components/nano-sortable.js.map +1 -1
  226. package/dist/components/nano-tab-content.js +1 -1
  227. package/dist/components/nano-tab-content.js.map +1 -1
  228. package/dist/components/nano-tab-group.js +3 -5
  229. package/dist/components/nano-tab-group.js.map +1 -1
  230. package/dist/components/select.js +100 -29
  231. package/dist/components/select.js.map +1 -1
  232. package/dist/components/table.js +51 -51
  233. package/dist/components/table.js.map +1 -1
  234. package/dist/components/table.worker.js +1 -1
  235. package/dist/components/theme.js +6 -1
  236. package/dist/components/theme.js.map +1 -1
  237. package/dist/components/tooltip.js +2 -4
  238. package/dist/components/tooltip.js.map +1 -1
  239. package/dist/components/transitions.js +6 -1
  240. package/dist/components/transitions.js.map +1 -1
  241. package/dist/esm/{component-store-f7eb0a56.js → component-store-486d9d7a.js} +2 -2
  242. package/dist/esm/component-store-486d9d7a.js.map +1 -0
  243. package/dist/esm/{drag-1723a4cc.js → drag-d948d158.js} +9 -9
  244. package/dist/esm/drag-d948d158.js.map +1 -0
  245. package/dist/esm/{fade-1aa7a6db.js → fade-00c7c18e.js} +2 -2
  246. package/dist/esm/{fade-1aa7a6db.js.map → fade-00c7c18e.js.map} +1 -1
  247. package/dist/esm/{form-control-8c2750f9.js → form-control-0bfcc7ea.js} +3 -3
  248. package/dist/esm/form-control-0bfcc7ea.js.map +1 -0
  249. package/dist/esm/{fullscreen-86fa276a.js → fullscreen-09677a62.js} +2 -2
  250. package/dist/esm/{fullscreen-86fa276a.js.map → fullscreen-09677a62.js.map} +1 -1
  251. package/dist/esm/{index-f626f476.js → index-dc076ea6.js} +10 -2
  252. package/dist/esm/index-dc076ea6.js.map +1 -0
  253. package/dist/esm/index.js +35 -9
  254. package/dist/esm/index.js.map +1 -1
  255. package/dist/esm/{lazyload-994232a6.js → lazyload-43fd583a.js} +2 -2
  256. package/dist/esm/{lazyload-994232a6.js.map → lazyload-43fd583a.js.map} +1 -1
  257. package/dist/esm/loader.js +1 -1
  258. package/dist/esm/{modal-bd9638c0.js → modal-88c117cd.js} +2 -3
  259. package/dist/esm/modal-88c117cd.js.map +1 -0
  260. package/dist/esm/nano-accordion.entry.js +5 -2
  261. package/dist/esm/nano-accordion.entry.js.map +1 -1
  262. package/dist/esm/nano-alert.entry.js +3 -3
  263. package/dist/esm/nano-alert.entry.js.map +1 -1
  264. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  265. package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
  266. package/dist/esm/nano-algolia.entry.js +2 -2
  267. package/dist/esm/nano-algolia.entry.js.map +1 -1
  268. package/dist/esm/nano-checkbox-group.entry.js +12 -14
  269. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  270. package/dist/esm/nano-checkbox.entry.js +2 -2
  271. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  272. package/dist/esm/nano-components.js +1 -1
  273. package/dist/esm/nano-datalist_3.entry.js +16 -25
  274. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  275. package/dist/esm/nano-date-input.entry.js +4 -4
  276. package/dist/esm/nano-date-input.entry.js.map +1 -1
  277. package/dist/esm/nano-date-picker.entry.js +2 -2
  278. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  279. package/dist/esm/nano-demo.entry.js +8 -12
  280. package/dist/esm/nano-demo.entry.js.map +1 -1
  281. package/dist/esm/nano-details.entry.js +1 -1
  282. package/dist/esm/nano-dialog.entry.js +2 -2
  283. package/dist/esm/nano-drawer.entry.js +3 -3
  284. package/dist/esm/nano-drawer.entry.js.map +1 -1
  285. package/dist/esm/nano-dropdown.entry.js +6 -7
  286. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  287. package/dist/esm/nano-field-validator.entry.js +3 -6
  288. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  289. package/dist/esm/nano-file-upload.entry.js +2 -2
  290. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  291. package/dist/esm/nano-global-nav-user-profile_3.entry.js +101 -33
  292. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  293. package/dist/esm/nano-global-nav.entry.js +18 -24
  294. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  295. package/dist/esm/nano-icon-button_2.entry.js +2 -4
  296. package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
  297. package/dist/esm/nano-icon.entry.js +7 -2
  298. package/dist/esm/nano-icon.entry.js.map +1 -1
  299. package/dist/esm/nano-input.entry.js +21 -7
  300. package/dist/esm/nano-input.entry.js.map +1 -1
  301. package/dist/esm/nano-range.entry.js +2 -2
  302. package/dist/esm/{nano-slides-9908c44d.js → nano-slides-4dab533a.js} +24 -23
  303. package/dist/esm/nano-slides-4dab533a.js.map +1 -0
  304. package/dist/esm/nano-slides.entry.js +1 -1
  305. package/dist/esm/nano-sortable.entry.js +7 -9
  306. package/dist/esm/nano-sortable.entry.js.map +1 -1
  307. package/dist/esm/nano-split-pane.entry.js +1 -1
  308. package/dist/esm/nano-tab-content.entry.js +1 -1
  309. package/dist/esm/nano-tab-content.entry.js.map +1 -1
  310. package/dist/esm/nano-tab-group.entry.js +6 -8
  311. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  312. package/dist/esm/{nano-table-392442e9.js → nano-table-7c8eb23e.js} +53 -53
  313. package/dist/esm/nano-table-7c8eb23e.js.map +1 -0
  314. package/dist/esm/nano-table.entry.js +1 -1
  315. package/dist/esm/{page-dots-467ace2e.js → page-dots-a055f884.js} +2 -2
  316. package/dist/esm/{page-dots-467ace2e.js.map → page-dots-a055f884.js.map} +1 -1
  317. package/dist/{nano-components/table.worker-f258383d.js → esm/table.worker-4aad752d.js} +1 -1
  318. package/dist/esm/{table.worker-6c661920.js → table.worker-bdb6a68c.js} +3 -3
  319. package/dist/esm/table.worker-bdb6a68c.js.map +1 -0
  320. package/dist/esm/{theme-82feb8cf.js → theme-931bd452.js} +7 -2
  321. package/dist/esm/theme-931bd452.js.map +1 -0
  322. package/dist/esm/{transitions-fb09eb32.js → transitions-bd15e312.js} +7 -2
  323. package/dist/esm/transitions-bd15e312.js.map +1 -0
  324. package/dist/nano-assets/hash.txt +1 -1
  325. package/dist/nano-assets/ont-logo-inverse.svg +47 -0
  326. package/dist/nano-components/assets/ont-logo-inverse.svg +47 -0
  327. package/dist/nano-components/component-store-486d9d7a.js +5 -0
  328. package/dist/nano-components/component-store-486d9d7a.js.map +1 -0
  329. package/dist/nano-components/drag-d948d158.js +5 -0
  330. package/dist/nano-components/{drag-1723a4cc.js.map → drag-d948d158.js.map} +1 -1
  331. package/dist/nano-components/{fade-1aa7a6db.js → fade-00c7c18e.js} +2 -2
  332. package/dist/nano-components/form-control-0bfcc7ea.js +5 -0
  333. package/dist/nano-components/form-control-0bfcc7ea.js.map +1 -0
  334. package/dist/nano-components/{fullscreen-86fa276a.js → fullscreen-09677a62.js} +2 -2
  335. package/dist/nano-components/{index-f626f476.js → index-dc076ea6.js} +2 -2
  336. package/dist/nano-components/index-dc076ea6.js.map +1 -0
  337. package/dist/nano-components/index.esm.js +1 -1
  338. package/dist/nano-components/index.esm.js.map +1 -1
  339. package/dist/nano-components/{lazyload-994232a6.js → lazyload-43fd583a.js} +2 -2
  340. package/dist/nano-components/{modal-bd9638c0.js → modal-88c117cd.js} +2 -2
  341. package/dist/nano-components/modal-88c117cd.js.map +1 -0
  342. package/dist/nano-components/nano-accordion.entry.js +1 -1
  343. package/dist/nano-components/nano-accordion.entry.js.map +1 -1
  344. package/dist/nano-components/nano-alert.entry.js +1 -1
  345. package/dist/nano-components/nano-alert.entry.js.map +1 -1
  346. package/dist/nano-components/nano-algolia-filter.entry.js +1 -1
  347. package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -1
  348. package/dist/nano-components/nano-algolia.entry.js +1 -1
  349. package/dist/nano-components/nano-algolia.entry.js.map +1 -1
  350. package/dist/nano-components/nano-checkbox-group.entry.js +1 -1
  351. package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -1
  352. package/dist/nano-components/nano-checkbox.entry.js +1 -1
  353. package/dist/nano-components/nano-checkbox.entry.js.map +1 -1
  354. package/dist/nano-components/nano-components.css +1 -1
  355. package/dist/nano-components/nano-components.esm.js +1 -1
  356. package/dist/nano-components/nano-components.esm.js.map +1 -1
  357. package/dist/nano-components/nano-datalist_3.entry.js +1 -1
  358. package/dist/nano-components/nano-datalist_3.entry.js.map +1 -1
  359. package/dist/nano-components/nano-date-input.entry.js +1 -1
  360. package/dist/nano-components/nano-date-input.entry.js.map +1 -1
  361. package/dist/nano-components/nano-date-picker.entry.js +1 -1
  362. package/dist/nano-components/nano-date-picker.entry.js.map +1 -1
  363. package/dist/nano-components/nano-demo.entry.js +1 -1
  364. package/dist/nano-components/nano-demo.entry.js.map +1 -1
  365. package/dist/nano-components/nano-details.entry.js +1 -1
  366. package/dist/nano-components/nano-dialog.entry.js +1 -1
  367. package/dist/nano-components/nano-drawer.entry.js +1 -1
  368. package/dist/nano-components/nano-drawer.entry.js.map +1 -1
  369. package/dist/nano-components/nano-dropdown.entry.js +1 -1
  370. package/dist/nano-components/nano-dropdown.entry.js.map +1 -1
  371. package/dist/nano-components/nano-field-validator.entry.js +1 -1
  372. package/dist/nano-components/nano-field-validator.entry.js.map +1 -1
  373. package/dist/nano-components/nano-file-upload.entry.js +1 -1
  374. package/dist/nano-components/nano-file-upload.entry.js.map +1 -1
  375. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
  376. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
  377. package/dist/nano-components/nano-global-nav.entry.js +1 -1
  378. package/dist/nano-components/nano-global-nav.entry.js.map +1 -1
  379. package/dist/nano-components/nano-icon-button_2.entry.js +1 -1
  380. package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -1
  381. package/dist/nano-components/nano-icon.entry.js +1 -1
  382. package/dist/nano-components/nano-icon.entry.js.map +1 -1
  383. package/dist/nano-components/nano-input.entry.js +1 -1
  384. package/dist/nano-components/nano-input.entry.js.map +1 -1
  385. package/dist/nano-components/nano-range.entry.js +1 -1
  386. package/dist/nano-components/nano-slides-4dab533a.js +20 -0
  387. package/dist/nano-components/nano-slides-4dab533a.js.map +1 -0
  388. package/dist/nano-components/nano-slides.entry.js +1 -1
  389. package/dist/nano-components/nano-sortable.entry.js +1 -1
  390. package/dist/nano-components/nano-sortable.entry.js.map +1 -1
  391. package/dist/nano-components/nano-split-pane.entry.js +1 -1
  392. package/dist/nano-components/nano-tab-content.entry.js +1 -1
  393. package/dist/nano-components/nano-tab-content.entry.js.map +1 -1
  394. package/dist/nano-components/nano-tab-group.entry.js +1 -1
  395. package/dist/nano-components/nano-tab-group.entry.js.map +1 -1
  396. package/dist/nano-components/nano-table-7c8eb23e.js +5 -0
  397. package/dist/nano-components/nano-table-7c8eb23e.js.map +1 -0
  398. package/dist/nano-components/nano-table.entry.js +1 -1
  399. package/dist/nano-components/{page-dots-467ace2e.js → page-dots-a055f884.js} +2 -2
  400. package/dist/{esm/table.worker-f258383d.js → nano-components/table.worker-4aad752d.js} +1 -1
  401. package/dist/nano-components/{table.worker-6c661920.js → table.worker-bdb6a68c.js} +2 -2
  402. package/dist/nano-components/theme-931bd452.js +5 -0
  403. package/dist/nano-components/{theme-82feb8cf.js.map → theme-931bd452.js.map} +1 -1
  404. package/dist/nano-components/transitions-bd15e312.js +5 -0
  405. package/dist/nano-components/transitions-bd15e312.js.map +1 -0
  406. package/dist/types/components/select/select.d.ts +18 -4
  407. package/dist/types/components/slides/slides.d.ts +0 -7
  408. package/dist/types/components.d.ts +22 -5
  409. package/docs-json.json +62 -22
  410. package/docs-vscode.json +5 -1
  411. package/hydrate/index.js +321 -243
  412. package/package.json +2 -2
  413. package/dist/cjs/component-store-149aeffe.js.map +0 -1
  414. package/dist/cjs/drag-777bd8dd.js.map +0 -1
  415. package/dist/cjs/form-control-cae1e493.js.map +0 -1
  416. package/dist/cjs/index-72ee0363.js.map +0 -1
  417. package/dist/cjs/modal-b9b40f6d.js.map +0 -1
  418. package/dist/cjs/nano-slides-2f3dcc02.js.map +0 -1
  419. package/dist/cjs/nano-table-d96f3eea.js.map +0 -1
  420. package/dist/cjs/table.worker-cedbf1a6.js.map +0 -1
  421. package/dist/cjs/theme-9cbe28c5.js.map +0 -1
  422. package/dist/cjs/transitions-cc18619c.js.map +0 -1
  423. package/dist/esm/component-store-f7eb0a56.js.map +0 -1
  424. package/dist/esm/drag-1723a4cc.js.map +0 -1
  425. package/dist/esm/form-control-8c2750f9.js.map +0 -1
  426. package/dist/esm/index-f626f476.js.map +0 -1
  427. package/dist/esm/modal-bd9638c0.js.map +0 -1
  428. package/dist/esm/nano-slides-9908c44d.js.map +0 -1
  429. package/dist/esm/nano-table-392442e9.js.map +0 -1
  430. package/dist/esm/table.worker-6c661920.js.map +0 -1
  431. package/dist/esm/theme-82feb8cf.js.map +0 -1
  432. package/dist/esm/transitions-fb09eb32.js.map +0 -1
  433. package/dist/nano-components/component-store-f7eb0a56.js +0 -5
  434. package/dist/nano-components/component-store-f7eb0a56.js.map +0 -1
  435. package/dist/nano-components/drag-1723a4cc.js +0 -5
  436. package/dist/nano-components/form-control-8c2750f9.js +0 -5
  437. package/dist/nano-components/form-control-8c2750f9.js.map +0 -1
  438. package/dist/nano-components/index-f626f476.js.map +0 -1
  439. package/dist/nano-components/modal-bd9638c0.js.map +0 -1
  440. package/dist/nano-components/nano-slides-9908c44d.js +0 -20
  441. package/dist/nano-components/nano-slides-9908c44d.js.map +0 -1
  442. package/dist/nano-components/nano-table-392442e9.js +0 -5
  443. package/dist/nano-components/nano-table-392442e9.js.map +0 -1
  444. package/dist/nano-components/theme-82feb8cf.js +0 -5
  445. package/dist/nano-components/transitions-fb09eb32.js +0 -5
  446. package/dist/nano-components/transitions-fb09eb32.js.map +0 -1
  447. /package/dist/nano-components/{fade-1aa7a6db.js.map → fade-00c7c18e.js.map} +0 -0
  448. /package/dist/nano-components/{fullscreen-86fa276a.js.map → fullscreen-09677a62.js.map} +0 -0
  449. /package/dist/nano-components/{lazyload-994232a6.js.map → lazyload-43fd583a.js.map} +0 -0
  450. /package/dist/nano-components/{page-dots-467ace2e.js.map → page-dots-a055f884.js.map} +0 -0
  451. /package/dist/nano-components/{table.worker-6c661920.js.map → table.worker-bdb6a68c.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"global-nav-user-profile.js","mappings":";;;;;;MAea,oBAAoB;;;;;;;;EAa/B,MAAM;;IACJ,QACE,CAAC,CAAC,IAAI,CAAC,aAAa,KAClB,SAAG,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAC,cAAc,IAChD,WAAK,KAAK,EAAC,MAAM,IACf,WAAK,KAAK,EAAC,kBAAkB,IAC3B,WACE,KAAK,EAAC,QAAQ,EACd,GAAG,EAAE,MAAA,IAAI,CAAC,aAAa,0CAAE,gBAAgB,EACzC,GAAG,EAAC,aAAa,EACjB,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,EAAE,GACT,EACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAClC,WACE,KAAK,EAAC,YAAY,EAClB,GAAG,EAAE,YAAY,CAAC,oCAAoC,CAAC,EACvD,GAAG,EAAC,eAAe,GACnB,CACH,CACG,EAEN,WAAK,KAAK,EAAC,cAAc,IACvB,YAAM,KAAK,EAAC,MAAM,IAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAQ,EAEnD,YAAM,KAAK,EAAC,KAAK,IACd,IAAI,CAAC,aAAa,CAAC,SAAS,UAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CACxD,CACH,CACF,EAEN,WAAK,KAAK,EAAC,OAAO,IAChB,WAAK,KAAK,EAAC,eAAe,IACxB,iBAAW,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,qBAAqB,GAAa,CAC9D,CACF,CACJ,CACL,EACD;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/global-nav/global-nav-user-profile.tsx"],"sourcesContent":["import {\n Component,\n h,\n Prop,\n getAssetPath,\n ComponentInterface,\n} from '@stencil/core';\nimport { MyAccountUser } from './global-nav-interface';\n\n/**\n * Nanopore digital global navigation user profile.\n */\n@Component({\n tag: 'nano-global-nav-user-profile',\n})\nexport class GlobalNavUserProfile implements ComponentInterface {\n /**\n * Logged in user details automatically populated from MyAccount\n */\n @Prop() myAccountUser: MyAccountUser;\n\n /**\n * Link to the user profile\n */\n @Prop() userProfileUrl: string;\n\n // Render output\n\n render() {\n return (\n !!this.myAccountUser && (\n <a href={this.userProfileUrl} class=\"user-profile\">\n <div class=\"left\">\n <div class=\"avatar-container\">\n <img\n class=\"avatar\"\n src={this.myAccountUser?.small_avatar_url}\n alt=\"User Avatar\"\n height={75}\n width={75}\n />\n {this.myAccountUser.is_nanopore_user && (\n <img\n class=\"logo-small\"\n src={getAssetPath(`../nano-assets/ont-wheel-light.svg`)}\n alt=\"Nanopore Logo\"\n />\n )}\n </div>\n\n <div class=\"user-details\">\n <span class=\"name\">{this.myAccountUser.name}</span>\n\n <span class=\"bio\">\n {this.myAccountUser.job_title} at {this.myAccountUser.company}\n </span>\n </div>\n </div>\n\n <div class=\"right\">\n <div class=\"chevron-right\">\n <nano-icon slot=\"icon-end\" name=\"light/chevron-right\"></nano-icon>\n </div>\n </div>\n </a>\n )\n );\n }\n}\n"],"version":3}
1
+ {"file":"global-nav-user-profile.js","mappings":";;;;;;MAea,oBAAoB;;;;;;;;EAa/B,MAAM;IACJ,QACE,CAAC,CAAC,IAAI,CAAC,aAAa,KAClB,SAAG,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAC,cAAc,IAChD,WAAK,KAAK,EAAC,MAAM,IACf,WAAK,KAAK,EAAC,kBAAkB,IAC3B,WACE,KAAK,EAAC,QAAQ,EACd,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,EACzC,GAAG,EAAC,aAAa,EACjB,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,EAAE,GACT,EACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAClC,WACE,KAAK,EAAC,YAAY,EAClB,GAAG,EAAE,YAAY,CAAC,oCAAoC,CAAC,EACvD,GAAG,EAAC,eAAe,GACnB,CACH,CACG,EAEN,WAAK,KAAK,EAAC,cAAc,IACvB,YAAM,KAAK,EAAC,MAAM,IAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAQ,EAEnD,YAAM,KAAK,EAAC,KAAK,IACd,IAAI,CAAC,aAAa,CAAC,SAAS,UAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CACxD,CACH,CACF,EAEN,WAAK,KAAK,EAAC,OAAO,IAChB,WAAK,KAAK,EAAC,eAAe,IACxB,iBAAW,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,qBAAqB,GAAa,CAC9D,CACF,CACJ,CACL,EACD;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/global-nav/global-nav-user-profile.tsx"],"sourcesContent":["import {\n Component,\n h,\n Prop,\n getAssetPath,\n ComponentInterface,\n} from '@stencil/core';\nimport { MyAccountUser } from './global-nav-interface';\n\n/**\n * Nanopore digital global navigation user profile.\n */\n@Component({\n tag: 'nano-global-nav-user-profile',\n})\nexport class GlobalNavUserProfile implements ComponentInterface {\n /**\n * Logged in user details automatically populated from MyAccount\n */\n @Prop() myAccountUser: MyAccountUser;\n\n /**\n * Link to the user profile\n */\n @Prop() userProfileUrl: string;\n\n // Render output\n\n render() {\n return (\n !!this.myAccountUser && (\n <a href={this.userProfileUrl} class=\"user-profile\">\n <div class=\"left\">\n <div class=\"avatar-container\">\n <img\n class=\"avatar\"\n src={this.myAccountUser?.small_avatar_url}\n alt=\"User Avatar\"\n height={75}\n width={75}\n />\n {this.myAccountUser.is_nanopore_user && (\n <img\n class=\"logo-small\"\n src={getAssetPath(`../nano-assets/ont-wheel-light.svg`)}\n alt=\"Nanopore Logo\"\n />\n )}\n </div>\n\n <div class=\"user-details\">\n <span class=\"name\">{this.myAccountUser.name}</span>\n\n <span class=\"bio\">\n {this.myAccountUser.job_title} at {this.myAccountUser.company}\n </span>\n </div>\n </div>\n\n <div class=\"right\">\n <div class=\"chevron-right\">\n <nano-icon slot=\"icon-end\" name=\"light/chevron-right\"></nano-icon>\n </div>\n </div>\n </a>\n )\n );\n }\n}\n"],"version":3}
@@ -244,7 +244,12 @@ const Icon = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
244
244
  this.name.indexOf('chevron') > -1) &&
245
245
  this.el.ownerDocument.dir === 'rtl' &&
246
246
  this.flipRtl !== false);
247
- return (h(Host, { class: Object.assign(Object.assign({}, createColorClasses(this.color)), { loading: this.isLoading, [`icon-${this.size}`]: !!this.size, 'flip-rtl': !!flipRtl }) }, Build.isBrowser && this.svgContent ? (h("div", { class: "icon-inner", innerHTML: this.svgContent })) : (h("div", { class: "icon-inner" }))));
247
+ return (h(Host, { class: {
248
+ ...createColorClasses(this.color),
249
+ loading: this.isLoading,
250
+ [`icon-${this.size}`]: !!this.size,
251
+ 'flip-rtl': !!flipRtl,
252
+ } }, Build.isBrowser && this.svgContent ? (h("div", { class: "icon-inner", innerHTML: this.svgContent })) : (h("div", { class: "icon-inner" }))));
248
253
  }
249
254
  get el() { return this; }
250
255
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"icon.js","mappings":"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","names":[],"sources":["./src/components/icon/utils.ts","./src/components/icon/validate.ts","./src/components/icon/request.ts","./src/components/icon/icon.scss?tag=nano-icon&encapsulation=shadow","./src/components/icon/icon.tsx"],"sourcesContent":["import { getAssetPath } from '@stencil/core';\nimport { Icon } from './icon';\n\nlet CACHED_MAP: Map<string, string>;\n\nexport const getIconMap = (): Map<string, string> => {\n if (!CACHED_MAP) {\n const win = window as any;\n win.Nanoicons = win.Nanoicons || {};\n CACHED_MAP = win.Nanoicons.map = win.Nanoicons.map || new Map();\n }\n return CACHED_MAP;\n};\n\nexport const addIcons = (icons: { [name: string]: string }) => {\n const map = getIconMap();\n Object.keys(icons).forEach((name) => map.set(name, icons[name]));\n};\n\nexport const getUrl = (i: Icon) => {\n let url = getSrc(i.src);\n if (url) {\n return url;\n }\n\n url = getName(i.name, i.icon);\n if (url) {\n return getNamedUrl(url);\n }\n\n if (i.icon) {\n url = getSrc(i.icon);\n if (url) {\n return url;\n }\n }\n return null;\n};\n\nconst getNamedUrl = (iconName: string) => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n return getAssetPath(`../nano-assets/fontawesome-pro/svgs/${iconName}.svg`);\n};\n\nexport const getName = (\n iconName: string | undefined,\n icon: string | undefined\n) => {\n if (!iconName && icon && !isSrc(icon)) {\n iconName = icon;\n }\n if (isStr(iconName)) {\n iconName = toLower(iconName);\n }\n\n if (!isStr(iconName) || iconName.trim() === '') {\n return null;\n }\n\n // only allow alpha characters and dash\n const invalidChars = iconName.replace(/[a-z]|-|\\/|\\d/gi, '');\n if (invalidChars !== '') {\n console.warn('invalid characters in icon name ' + iconName);\n return null;\n }\n return iconName;\n};\n\nexport const getSrc = (src: string | undefined) => {\n if (isStr(src)) {\n src = src.trim();\n if (isSrc(src)) {\n return src;\n }\n }\n return null;\n};\n\nexport const isSrc = (str: string) => str.length > 0 && /(\\/|\\.)/.test(str);\nexport const isStr = (val: any): val is string => typeof val === 'string';\nexport const toLower = (val: string) => val.toLowerCase();\n","import { isStr } from './utils';\n\nexport const validateContent = (svgContent: string | null) => {\n if (svgContent) {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute(\n 'class',\n (svgClass + ' sc-nano-icon s-nano-icon svg').trim()\n );\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as any)) {\n return div.innerHTML;\n }\n }\n }\n return '';\n};\n\nexport const isValid = (elm: HTMLElement) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n for (let i = 0; i < elm.attributes.length; i++) {\n const val = elm.attributes[i].value;\n if (isStr(val) && val.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i] as any)) {\n return false;\n }\n }\n }\n return true;\n};\n","import { validateContent } from './validate';\nexport const iconContent = new Map<string, string>();\nconst requests = new Map<string, Promise<any>>();\n\nexport const getSvgContent = (url: string) => {\n // see if we already have a request for this url\n let req = requests.get(url);\n if (!req) {\n // we don't already have a request\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n iconContent.set(url, validateContent(svgContent));\n });\n }\n iconContent.set(url, '');\n });\n\n // cache for the same requests\n requests.set(url, req);\n }\n return req;\n};\n","@import '../../global/style/utilities/globals';\n\n:host {\n /**\n * @prop --color: defaults to current context color\n * @prop --primary-color: used for duotone icons to set the primary color\n * @prop --secondary-color: used for duotone icons to set the secondary color\n * @prop --primary-opacity: used for duotone icons to set the primary opacity\n * @prop --secondary-opacity: used for duotone icons to set the secondary opacity\n * @prop --stroke-width: 32px default stroke width\n */\n\n --color: var(--nano-color-base, currentcolor);\n --primary-color: var(--nano-color-tint, currentcolor);\n --secondary-color: var(--nano-color-shade, currentcolor);\n --stroke-width: 32px;\n --primary-opacity: 0.8;\n --secondary-opacity: 1;\n --icon-size: var(--nano-icon-size, 1em);\n --icon-margin-top: var(--nano-icon-margin-top, 0);\n --icon-margin-end: var(--nano-icon-margin-end, 0);\n --icon-margin-bottom: var(--nano-icon-margin-bottom, 0);\n --icon-margin-start: var(--nano-icon-margin-start, 0);\n\n display: inline-block;\n inline-size: var(--icon-size);\n block-size: var(--icon-size);\n min-inline-size: var(--icon-size);\n min-block-size: var(--icon-size);\n contain: strict;\n fill: currentcolor;\n box-sizing: content-box !important;\n transition: opacity 0.3s ease;\n color: var(--color);\n margin-inline: var(--icon-margin-start) var(--icon-margin-end);\n margin-block: var(--icon-margin-top) var(--icon-margin-bottom);\n}\n\n:host .nanoicon {\n stroke: currentcolor;\n}\n\n.nanoicon-fill-none {\n fill: none;\n}\n\n.nanoicon-stroke-width {\n stroke-width: 32px;\n stroke-width: var(--stroke-width);\n}\n\n.icon-inner,\n.nanoicon,\nsvg,\n.svg {\n display: block;\n block-size: 100%;\n inline-size: 100%;\n overflow: visible;\n}\n\n:host(.loading) {\n opacity: 0;\n}\n\n.fa-primary {\n color: var(--primary-color);\n opacity: var(--primary-opacity, 1);\n}\n\n.fa-secondary {\n color: var(--secondary-color);\n opacity: var(--secondary-opacity) !important;\n}\n\n/* Icon RTL\n * -----------------------------------------------------------\n */\n:host(.flip-rtl) .icon-inner {\n transform: scaleX(-1);\n}\n\n/* Icon Sizes\n * -----------------------------------------------------------\n */\n:host(.icon-small) {\n font-size: 18px !important;\n}\n\n:host(.icon-large) {\n font-size: 32px !important;\n}\n","import {\n Build,\n Component,\n Element,\n Host,\n Prop,\n State,\n Watch,\n h,\n} from '@stencil/core';\nimport { createColorClasses } from '../../utils/theme';\nimport { getSvgContent, iconContent } from './request';\nimport { getName, getUrl } from './utils';\nimport type { Color } from '../../interface';\n\n/**\n * An SVG loader / helper. Comes bundled with all fontawesome pro icons by default but can use any custom SVG (with an correct path). Lazily loads SVG for each icon, so will only request the icons that you're using and that are visible.\n */\n@Component({\n tag: 'nano-icon',\n styleUrl: 'icon.scss',\n shadow: true,\n})\nexport class Icon {\n private io?: IntersectionObserver;\n\n @Element() el!: HTMLNanoIconElement;\n\n @State() svgContent?: string;\n @State() isVisible = false;\n @State() isLoading = true;\n\n /**\n * Color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * Specifies the role to use for accessibility. Defaults to 'presentation' (invisible to screen-readers)\n */\n @Prop({ mutable: true, reflect: true }) role: string;\n\n /**\n * Specifies the label to use for accessibility. Defaults to the icon name.\n */\n @Prop({ mutable: true, reflect: true }) ariaLabel: string;\n\n /**\n * Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.\n */\n @Prop() flipRtl?: boolean;\n\n /**\n * Specifies which icon to use from the built-in set of icons.\n */\n @Prop() name?: string;\n\n /**\n * Specifies the exact `src` of an SVG file to use.\n */\n @Prop() src?: string;\n\n /**\n * A combination of both `name` and `src`. If a `src` url is detected\n * it will set the `src` property. Otherwise it assumes it's a built-in named\n * SVG and set the `name` property.\n */\n @Prop() icon?: any;\n\n /**\n * The size of the icon.\n * Available options are: `\"small\"` and `\"large\"`.\n */\n @Prop() size?: 'small' | 'large';\n\n /**\n * If enabled, nano-icon will be loaded lazily when it's visible in the viewport.\n * Default, `true`.\n */\n @Prop() lazy = true;\n\n @Watch('ariaLabel')\n udpateRole() {\n // force the role to br 'img' if the aria-label is explicitly set\n if (this.ariaLabel && !this.role) this.role = 'img';\n else if (!this.ariaLabel && !this.role) this.role = 'presentation';\n }\n\n @Watch('role')\n setAriaLabel() {\n if (!this.ariaLabel && !this.el.ariaLabel) {\n if (!this.role || this.role !== 'presentation') {\n // if the role is not 'presentation' and the user did not explicitly set a role,\n // let's try and derive one from the icon name\n\n const label = getName(this.name, this.icon);\n // user did not provide a label\n // come up with the label based on the icon name\n if (label) {\n this.ariaLabel = label.split('/').slice(-1)[0].replace(/\\-/g, ' ');\n }\n }\n } else if (this.role === 'presentation') {\n this.ariaLabel = undefined;\n }\n }\n\n connectedCallback() {\n // purposely do not return the promise here because loading\n // the svg file should not hold up loading the app\n // only load the svg if it's visible\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n componentWillLoad() {\n this.udpateRole();\n this.setAriaLabel();\n }\n\n private waitUntilVisible(\n el: HTMLElement,\n rootMargin: string,\n cb: () => void\n ) {\n if (\n Build.isBrowser &&\n this.lazy &&\n typeof window !== 'undefined' &&\n (window as any).IntersectionObserver\n ) {\n const io = (this.io = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting || (data[1] && data[1].isIntersecting)) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n },\n { rootMargin }\n ));\n\n io.observe(el);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n @Watch('name')\n @Watch('src')\n @Watch('icon')\n loadIcon() {\n if (Build.isBrowser && this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (iconContent.has(url)) {\n // sync if it's already loaded\n this.svgContent = iconContent.get(url);\n requestAnimationFrame(() => (this.isLoading = false));\n } else {\n // async if it hasn't been loaded\n getSvgContent(url).then(() => {\n this.svgContent = iconContent.get(url);\n requestAnimationFrame(() => (this.isLoading = false));\n });\n }\n }\n }\n this.setAriaLabel();\n }\n\n render() {\n const flipRtl =\n this.flipRtl ||\n (this.name &&\n (this.name.indexOf('arrow') > -1 ||\n this.name.indexOf('chevron') > -1) &&\n (this.el.ownerDocument as Document).dir === 'rtl' &&\n this.flipRtl !== false);\n\n return (\n <Host\n class={{\n ...createColorClasses(this.color),\n loading: this.isLoading,\n [`icon-${this.size}`]: !!this.size,\n 'flip-rtl': !!flipRtl,\n }}\n >\n {Build.isBrowser && this.svgContent ? (\n <div class=\"icon-inner\" innerHTML={this.svgContent}></div>\n ) : (\n <div class=\"icon-inner\"></div>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"icon.js","mappings":";;;;;;AAGA,IAAI,UAA+B,CAAC;AAE7B,MAAM,UAAU,GAAG;EACxB,IAAI,CAAC,UAAU,EAAE;IACf,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;IACpC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;GACjE;EACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAOK,MAAM,MAAM,GAAG,CAAC,CAAO;EAC5B,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,IAAI,GAAG,EAAE;IACP,OAAO,GAAG,CAAC;GACZ;EAED,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAI,GAAG,EAAE;IACP,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;GACzB;EAED,IAAI,CAAC,CAAC,IAAI,EAAE;IACV,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,GAAG,EAAE;MACP,OAAO,GAAG,CAAC;KACZ;GACF;EACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAgB;EACnC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EACvC,IAAI,GAAG,EAAE;IACP,OAAO,GAAG,CAAC;GACZ;EACD,OAAO,YAAY,CAAC,uCAAuC,QAAQ,MAAM,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,CACrB,QAA4B,EAC5B,IAAwB;EAExB,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;IACrC,QAAQ,GAAG,IAAI,CAAC;GACjB;EACD,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;IACnB,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;GAC9B;EAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IAC9C,OAAO,IAAI,CAAC;GACb;;EAGD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;EAC7D,IAAI,YAAY,KAAK,EAAE,EAAE;IACvB,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,QAAQ,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;GACb;EACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEK,MAAM,MAAM,GAAG,CAAC,GAAuB;EAC5C,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IACd,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;MACd,OAAO,GAAG,CAAC;KACZ;GACF;EACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEK,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,MAAM,KAAK,GAAG,CAAC,GAAQ,KAAoB,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnE,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,GAAG,CAAC,WAAW,EAAE;;ACjFlD,MAAM,eAAe,GAAG,CAAC,UAAyB;EACvD,IAAI,UAAU,EAAE;IACd,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC;;IAG3B,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;MACnD,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;QACtD,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;OACpC;KACF;;IAGD,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACrC,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;MACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;MACpD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP,CAAC,QAAQ,GAAG,+BAA+B,EAAE,IAAI,EAAE,CACpD,CAAC;;;;MAKF,IAAI,OAAO,CAAC,MAAa,CAAC,EAAE;QAC1B,OAAO,GAAG,CAAC,SAAS,CAAC;OACtB;KACF;GACF;EACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,CAAC,GAAgB;EACtC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IACtB,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;MAC3C,OAAO,KAAK,CAAC;KACd;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;MACpC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACvD,OAAO,KAAK,CAAC;OACd;KACF;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAQ,CAAC,EAAE;QACtC,OAAO,KAAK,CAAC;OACd;KACF;GACF;EACD,OAAO,IAAI,CAAC;AACd,CAAC;;ACrDM,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AAE1C,MAAM,aAAa,GAAG,CAAC,GAAW;;EAEvC,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,CAAC,GAAG,EAAE;;IAER,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;MACxB,IAAI,GAAG,CAAC,EAAE,EAAE;QACV,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU;UAChC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;SACnD,CAAC,CAAC;OACJ;MACD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KAC1B,CAAC,CAAC;;IAGH,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;GACxB;EACD,OAAO,GAAG,CAAC;AACb,CAAC;;ACtBD,MAAM,OAAO,GAAG,8+CAA8+C;;MCuBj/C,IAAI;;;;;;qBAMM,KAAK;qBACL,IAAI;;;;;;;;;gBAkDV,IAAI;;EAGnB,UAAU;;IAER,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI;MAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI;MAAE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;GACpE;EAGD,YAAY;IACV,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;MACzC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;;;QAI9C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;;QAG5C,IAAI,KAAK,EAAE;UACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACpE;OACF;KACF;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;MACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;GACF;EAED,iBAAiB;;;;IAIf,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE;MACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;MACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB,CAAC,CAAC;GACJ;EAED,oBAAoB;IAClB,IAAI,IAAI,CAAC,EAAE,EAAE;MACX,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;MACrB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;KACrB;GACF;EAED,iBAAiB;IACf,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,IAAI,CAAC,YAAY,EAAE,CAAC;GACrB;EAEO,gBAAgB,CACtB,EAAe,EACf,UAAkB,EAClB,EAAc;IAEd,IACE,KAAK,CAAC,SAAS;MACf,IAAI,CAAC,IAAI;MACT,OAAO,MAAM,KAAK,WAAW;MAC5B,MAAc,CAAC,oBAAoB,EACpC;MACA,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,IAAK,MAAc,CAAC,oBAAoB,CAC5D,CAAC,IAAiC;QAChC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE;UACjE,EAAE,CAAC,UAAU,EAAE,CAAC;UAChB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;UACpB,EAAE,EAAE,CAAC;SACN;OACF,EACD,EAAE,UAAU,EAAE,CACf,CAAC,CAAC;MAEH,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChB;SAAM;;;MAGL,EAAE,EAAE,CAAC;KACN;GACF;EAKD,QAAQ;IACN,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;MACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;MACzB,IAAI,GAAG,EAAE;QACP,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;;UAExB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UACvC,qBAAqB,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;SACvD;aAAM;;UAEL,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,qBAAqB,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;WACvD,CAAC,CAAC;SACJ;OACF;KACF;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;GACrB;EAED,MAAM;IACJ,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;OACX,IAAI,CAAC,IAAI;SACP,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;UAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,aAA0B,CAAC,GAAG,KAAK,KAAK;QACjD,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;IAE5B,QACE,EAAC,IAAI,IACH,KAAK,EAAE;QACL,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,SAAS;QACvB,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI;QAClC,UAAU,EAAE,CAAC,CAAC,OAAO;OACtB,IAEA,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IACjC,WAAK,KAAK,EAAC,YAAY,EAAC,SAAS,EAAE,IAAI,CAAC,UAAU,GAAQ,KAE1D,WAAK,KAAK,EAAC,YAAY,GAAO,CAC/B,CACI,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/icon/utils.ts","./src/components/icon/validate.ts","./src/components/icon/request.ts","./src/components/icon/icon.scss?tag=nano-icon&encapsulation=shadow","./src/components/icon/icon.tsx"],"sourcesContent":["import { getAssetPath } from '@stencil/core';\nimport { Icon } from './icon';\n\nlet CACHED_MAP: Map<string, string>;\n\nexport const getIconMap = (): Map<string, string> => {\n if (!CACHED_MAP) {\n const win = window as any;\n win.Nanoicons = win.Nanoicons || {};\n CACHED_MAP = win.Nanoicons.map = win.Nanoicons.map || new Map();\n }\n return CACHED_MAP;\n};\n\nexport const addIcons = (icons: { [name: string]: string }) => {\n const map = getIconMap();\n Object.keys(icons).forEach((name) => map.set(name, icons[name]));\n};\n\nexport const getUrl = (i: Icon) => {\n let url = getSrc(i.src);\n if (url) {\n return url;\n }\n\n url = getName(i.name, i.icon);\n if (url) {\n return getNamedUrl(url);\n }\n\n if (i.icon) {\n url = getSrc(i.icon);\n if (url) {\n return url;\n }\n }\n return null;\n};\n\nconst getNamedUrl = (iconName: string) => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n return getAssetPath(`../nano-assets/fontawesome-pro/svgs/${iconName}.svg`);\n};\n\nexport const getName = (\n iconName: string | undefined,\n icon: string | undefined\n) => {\n if (!iconName && icon && !isSrc(icon)) {\n iconName = icon;\n }\n if (isStr(iconName)) {\n iconName = toLower(iconName);\n }\n\n if (!isStr(iconName) || iconName.trim() === '') {\n return null;\n }\n\n // only allow alpha characters and dash\n const invalidChars = iconName.replace(/[a-z]|-|\\/|\\d/gi, '');\n if (invalidChars !== '') {\n console.warn('invalid characters in icon name ' + iconName);\n return null;\n }\n return iconName;\n};\n\nexport const getSrc = (src: string | undefined) => {\n if (isStr(src)) {\n src = src.trim();\n if (isSrc(src)) {\n return src;\n }\n }\n return null;\n};\n\nexport const isSrc = (str: string) => str.length > 0 && /(\\/|\\.)/.test(str);\nexport const isStr = (val: any): val is string => typeof val === 'string';\nexport const toLower = (val: string) => val.toLowerCase();\n","import { isStr } from './utils';\n\nexport const validateContent = (svgContent: string | null) => {\n if (svgContent) {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute(\n 'class',\n (svgClass + ' sc-nano-icon s-nano-icon svg').trim()\n );\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as any)) {\n return div.innerHTML;\n }\n }\n }\n return '';\n};\n\nexport const isValid = (elm: HTMLElement) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n for (let i = 0; i < elm.attributes.length; i++) {\n const val = elm.attributes[i].value;\n if (isStr(val) && val.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i] as any)) {\n return false;\n }\n }\n }\n return true;\n};\n","import { validateContent } from './validate';\nexport const iconContent = new Map<string, string>();\nconst requests = new Map<string, Promise<any>>();\n\nexport const getSvgContent = (url: string) => {\n // see if we already have a request for this url\n let req = requests.get(url);\n if (!req) {\n // we don't already have a request\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n iconContent.set(url, validateContent(svgContent));\n });\n }\n iconContent.set(url, '');\n });\n\n // cache for the same requests\n requests.set(url, req);\n }\n return req;\n};\n","@import '../../global/style/utilities/globals';\n\n:host {\n /**\n * @prop --color: defaults to current context color\n * @prop --primary-color: used for duotone icons to set the primary color\n * @prop --secondary-color: used for duotone icons to set the secondary color\n * @prop --primary-opacity: used for duotone icons to set the primary opacity\n * @prop --secondary-opacity: used for duotone icons to set the secondary opacity\n * @prop --stroke-width: 32px default stroke width\n */\n\n --color: var(--nano-color-base, currentcolor);\n --primary-color: var(--nano-color-tint, currentcolor);\n --secondary-color: var(--nano-color-shade, currentcolor);\n --stroke-width: 32px;\n --primary-opacity: 0.8;\n --secondary-opacity: 1;\n --icon-size: var(--nano-icon-size, 1em);\n --icon-margin-top: var(--nano-icon-margin-top, 0);\n --icon-margin-end: var(--nano-icon-margin-end, 0);\n --icon-margin-bottom: var(--nano-icon-margin-bottom, 0);\n --icon-margin-start: var(--nano-icon-margin-start, 0);\n\n display: inline-block;\n inline-size: var(--icon-size);\n block-size: var(--icon-size);\n min-inline-size: var(--icon-size);\n min-block-size: var(--icon-size);\n contain: strict;\n fill: currentcolor;\n box-sizing: content-box !important;\n transition: opacity 0.3s ease;\n color: var(--color);\n margin-inline: var(--icon-margin-start) var(--icon-margin-end);\n margin-block: var(--icon-margin-top) var(--icon-margin-bottom);\n}\n\n:host .nanoicon {\n stroke: currentcolor;\n}\n\n.nanoicon-fill-none {\n fill: none;\n}\n\n.nanoicon-stroke-width {\n stroke-width: 32px;\n stroke-width: var(--stroke-width);\n}\n\n.icon-inner,\n.nanoicon,\nsvg,\n.svg {\n display: block;\n block-size: 100%;\n inline-size: 100%;\n overflow: visible;\n}\n\n:host(.loading) {\n opacity: 0;\n}\n\n.fa-primary {\n color: var(--primary-color);\n opacity: var(--primary-opacity, 1);\n}\n\n.fa-secondary {\n color: var(--secondary-color);\n opacity: var(--secondary-opacity) !important;\n}\n\n/* Icon RTL\n * -----------------------------------------------------------\n */\n:host(.flip-rtl) .icon-inner {\n transform: scaleX(-1);\n}\n\n/* Icon Sizes\n * -----------------------------------------------------------\n */\n:host(.icon-small) {\n font-size: 18px !important;\n}\n\n:host(.icon-large) {\n font-size: 32px !important;\n}\n","import {\n Build,\n Component,\n Element,\n Host,\n Prop,\n State,\n Watch,\n h,\n} from '@stencil/core';\nimport { createColorClasses } from '../../utils/theme';\nimport { getSvgContent, iconContent } from './request';\nimport { getName, getUrl } from './utils';\nimport type { Color } from '../../interface';\n\n/**\n * An SVG loader / helper. Comes bundled with all fontawesome pro icons by default but can use any custom SVG (with an correct path). Lazily loads SVG for each icon, so will only request the icons that you're using and that are visible.\n */\n@Component({\n tag: 'nano-icon',\n styleUrl: 'icon.scss',\n shadow: true,\n})\nexport class Icon {\n private io?: IntersectionObserver;\n\n @Element() el!: HTMLNanoIconElement;\n\n @State() svgContent?: string;\n @State() isVisible = false;\n @State() isLoading = true;\n\n /**\n * Color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * Specifies the role to use for accessibility. Defaults to 'presentation' (invisible to screen-readers)\n */\n @Prop({ mutable: true, reflect: true }) role: string;\n\n /**\n * Specifies the label to use for accessibility. Defaults to the icon name.\n */\n @Prop({ mutable: true, reflect: true }) ariaLabel: string;\n\n /**\n * Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.\n */\n @Prop() flipRtl?: boolean;\n\n /**\n * Specifies which icon to use from the built-in set of icons.\n */\n @Prop() name?: string;\n\n /**\n * Specifies the exact `src` of an SVG file to use.\n */\n @Prop() src?: string;\n\n /**\n * A combination of both `name` and `src`. If a `src` url is detected\n * it will set the `src` property. Otherwise it assumes it's a built-in named\n * SVG and set the `name` property.\n */\n @Prop() icon?: any;\n\n /**\n * The size of the icon.\n * Available options are: `\"small\"` and `\"large\"`.\n */\n @Prop() size?: 'small' | 'large';\n\n /**\n * If enabled, nano-icon will be loaded lazily when it's visible in the viewport.\n * Default, `true`.\n */\n @Prop() lazy = true;\n\n @Watch('ariaLabel')\n udpateRole() {\n // force the role to br 'img' if the aria-label is explicitly set\n if (this.ariaLabel && !this.role) this.role = 'img';\n else if (!this.ariaLabel && !this.role) this.role = 'presentation';\n }\n\n @Watch('role')\n setAriaLabel() {\n if (!this.ariaLabel && !this.el.ariaLabel) {\n if (!this.role || this.role !== 'presentation') {\n // if the role is not 'presentation' and the user did not explicitly set a role,\n // let's try and derive one from the icon name\n\n const label = getName(this.name, this.icon);\n // user did not provide a label\n // come up with the label based on the icon name\n if (label) {\n this.ariaLabel = label.split('/').slice(-1)[0].replace(/\\-/g, ' ');\n }\n }\n } else if (this.role === 'presentation') {\n this.ariaLabel = undefined;\n }\n }\n\n connectedCallback() {\n // purposely do not return the promise here because loading\n // the svg file should not hold up loading the app\n // only load the svg if it's visible\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n componentWillLoad() {\n this.udpateRole();\n this.setAriaLabel();\n }\n\n private waitUntilVisible(\n el: HTMLElement,\n rootMargin: string,\n cb: () => void\n ) {\n if (\n Build.isBrowser &&\n this.lazy &&\n typeof window !== 'undefined' &&\n (window as any).IntersectionObserver\n ) {\n const io = (this.io = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting || (data[1] && data[1].isIntersecting)) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n },\n { rootMargin }\n ));\n\n io.observe(el);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n @Watch('name')\n @Watch('src')\n @Watch('icon')\n loadIcon() {\n if (Build.isBrowser && this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (iconContent.has(url)) {\n // sync if it's already loaded\n this.svgContent = iconContent.get(url);\n requestAnimationFrame(() => (this.isLoading = false));\n } else {\n // async if it hasn't been loaded\n getSvgContent(url).then(() => {\n this.svgContent = iconContent.get(url);\n requestAnimationFrame(() => (this.isLoading = false));\n });\n }\n }\n }\n this.setAriaLabel();\n }\n\n render() {\n const flipRtl =\n this.flipRtl ||\n (this.name &&\n (this.name.indexOf('arrow') > -1 ||\n this.name.indexOf('chevron') > -1) &&\n (this.el.ownerDocument as Document).dir === 'rtl' &&\n this.flipRtl !== false);\n\n return (\n <Host\n class={{\n ...createColorClasses(this.color),\n loading: this.isLoading,\n [`icon-${this.size}`]: !!this.size,\n 'flip-rtl': !!flipRtl,\n }}\n >\n {Build.isBrowser && this.svgContent ? (\n <div class=\"icon-inner\" innerHTML={this.svgContent}></div>\n ) : (\n <div class=\"icon-inner\"></div>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
@@ -84,12 +84,21 @@ const addBtnHandlers = (alert, buttons = []) => {
84
84
  * @returns `Promise<void>`
85
85
  */
86
86
  async function nanoShowToast(message, position = 'tr', icon, alertOptions, buttons = []) {
87
- const opts = Object.assign({ color: 'primary', duration: 3000, closable: true }, alertOptions);
87
+ const opts = {
88
+ color: 'primary',
89
+ duration: 3000,
90
+ closable: true,
91
+ ...alertOptions,
92
+ };
88
93
  icon = icon || 'light/info-circle';
89
- const alert = Object.assign(document.createElement('nano-alert'), Object.assign(Object.assign({}, opts), { open: false, innerHTML: `
94
+ const alert = Object.assign(document.createElement('nano-alert'), {
95
+ ...opts,
96
+ open: false,
97
+ innerHTML: `
90
98
  <nano-icon name="${icon}" slot="icon"></nano-icon>
91
99
  ${alertContent(message, buttons)}
92
- ` }));
100
+ `,
101
+ });
93
102
  addBtnHandlers(alert, buttons);
94
103
  document.body.appendChild(alert);
95
104
  return new Promise((resolve) => {
@@ -109,12 +118,21 @@ async function nanoShowToast(message, position = 'tr', icon, alertOptions, butto
109
118
  * @returns `Promise<void>`
110
119
  */
111
120
  function nanoShowAlert(message, buttons = [], label, icon = 'light/info-circle', alertOptions = {}) {
112
- const opts = Object.assign({ color: 'primary', duration: Infinity, closable: false }, alertOptions);
121
+ const opts = {
122
+ color: 'primary',
123
+ duration: Infinity,
124
+ closable: false,
125
+ ...alertOptions,
126
+ };
113
127
  icon = icon || 'light/info-circle';
114
- const alert = Object.assign(document.createElement('nano-alert'), Object.assign(Object.assign({}, opts), { open: false, innerHTML: `
128
+ const alert = Object.assign(document.createElement('nano-alert'), {
129
+ ...opts,
130
+ open: false,
131
+ innerHTML: `
115
132
  ${icon ? `<nano-icon name="${icon}" slot="icon"></nano-icon>` : ''}
116
133
  ${alertContent(message, buttons)}
117
- ` }));
134
+ `,
135
+ });
118
136
  addBtnHandlers(alert, buttons);
119
137
  document.body.appendChild(alert);
120
138
  return new Promise((resolve) => {
@@ -133,14 +151,22 @@ function nanoShowAlert(message, buttons = [], label, icon = 'light/info-circle',
133
151
  * @returns `Promise<void>`
134
152
  */
135
153
  function nanoCreateDialog(body, buttons = [], dialogOptions) {
136
- const opts = Object.assign({ noUserDismiss: false, label: 'Dialog' }, dialogOptions);
137
- const dialog = Object.assign(document.createElement('nano-dialog'), Object.assign(Object.assign({}, opts), { open: false, innerHTML: `
154
+ const opts = {
155
+ noUserDismiss: false,
156
+ label: 'Dialog',
157
+ ...dialogOptions,
158
+ };
159
+ const dialog = Object.assign(document.createElement('nano-dialog'), {
160
+ ...opts,
161
+ open: false,
162
+ innerHTML: `
138
163
  ${body}
139
164
  ${buttons.length
140
165
  ? buttons
141
166
  .map((btn, i) => `<button data-btn="${i}" class="button ${btn.classes}" slot="footer">${btn.content}</button>`)
142
167
  .join('')
143
- : ''}` }));
168
+ : ''}`,
169
+ });
144
170
  if (buttons.length) {
145
171
  Array.from(dialog.querySelectorAll('button[slot="footer"]')).map((btn) => {
146
172
  const foundBtn = buttons.find((_fb, i) => btn.dataset.btn === i.toString());
@@ -1 +1 @@
1
- {"file":"index.js","mappings":"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","names":[],"sources":["./src/components/alert/alert.helpers.ts","./src/components/dialog/dialog.helpers.ts","./src/index.ts","./node_modules/focus-options-polyfill/index.js","./src/global/script/global.ts"],"sourcesContent":["import type { Color, AlertToastPosition } from '../../interface';\n\ninterface ImperativeAlertOptions {\n color?: Color;\n duration?: number;\n closable?: boolean;\n}\n\ninterface ImperativeAlertButton {\n classes: string;\n content: string;\n handler?: (e: MouseEvent) => void;\n}\n\nconst alertContent = (\n message: string,\n buttons: ImperativeAlertButton[] = []\n) => {\n return `${message}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`;\n};\n\nconst addBtnHandlers = (\n alert: HTMLNanoAlertElement,\n buttons: ImperativeAlertButton[] = []\n) => {\n if (buttons.length) {\n Array.from(alert.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n};\n\n/**\n * `nano-alert` helper to create toast notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param position - the position of the toast. Options are 'tr', 'tl', 'bl' & 'br'\n * @param icon - name for the `nano-icon`\n * @param alertOptions - { color: Color, duration: number, closable: boolean }\n * @returns `Promise<void>`\n */\nexport async function nanoShowToast(\n message: string,\n position: AlertToastPosition = 'tr',\n icon?: string | undefined,\n alertOptions?: ImperativeAlertOptions,\n buttons: ImperativeAlertButton[] = []\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: 3000,\n closable: true,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n <nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n requestAnimationFrame(async (_) => {\n await alert.toast(position);\n resolve(alert);\n });\n });\n}\n\n/**\n * `nano-alert` helper to create alert notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons\n * @param label - descriptive label for assitive technology\n * @param icon - name for the `nano-icon`\n * @param alertOptions\n * @returns `Promise<void>`\n */\nexport function nanoShowAlert(\n message: string,\n buttons: ImperativeAlertButton[] = [],\n label: string,\n icon: string | undefined = 'light/info-circle',\n alertOptions: ImperativeAlertOptions = {}\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: Infinity,\n closable: false,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${icon ? `<nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>` : ''}\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n setTimeout(async (_) => {\n await alert.alert(label);\n resolve(alert);\n }, 100);\n });\n}\n","interface ImperativeDialogOptions {\n noUserDismiss: boolean;\n noHeader?: boolean;\n noFooter?: boolean;\n label: string;\n}\n/**\n * `nano-dialog` helper to create dialog modals imperatively.\n * @param body - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons - { classes: string; content: string; handler: () => {} }[]\n * @param dialogOptions - { noUserDismiss: boolean, noHeader?: boolean, noFooter?: boolean, label: string }\n * @returns `Promise<void>`\n */\nexport function nanoCreateDialog(\n body: string,\n buttons: { classes: string; content: string; handler: () => void }[] = [],\n dialogOptions?: ImperativeDialogOptions\n) {\n const opts: ImperativeDialogOptions = {\n noUserDismiss: false,\n label: 'Dialog',\n ...dialogOptions,\n };\n const dialog: HTMLNanoDialogElement = Object.assign(\n document.createElement('nano-dialog'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${body}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`,\n }\n );\n\n if (buttons.length) {\n Array.from(dialog.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n\n document.body.appendChild(dialog);\n return dialog;\n}\n","// import { setPlatformHelpers } from '@stencil/core';\nexport * from './components/alert/alert.helpers';\nexport * from './components/dialog/dialog.helpers';\nexport {\n debounce as nanoDebounce,\n throttle as nanoThrottle,\n} from './utils/throttle';\nexport { getTabbableElements as nanoGetTabElements } from './utils/tabbable';\n\nexport const initialize = (\n helpers: { _ael?: any; _ce?: any; _rel?: any } = {}\n) => {\n if (typeof (window as any) === 'undefined') {\n return;\n }\n\n const platformHelpers: any = {};\n if (helpers._ael) {\n platformHelpers.ael = helpers._ael;\n }\n if (helpers._rel) {\n platformHelpers.rel = helpers._rel;\n }\n if (helpers._ce) {\n platformHelpers.ce = helpers._ce;\n }\n // setPlatformHelpers(platformHelpers);\n};\n","// focus - focusOptions - preventScroll polyfill\n(function() {\n if (\n typeof window === \"undefined\" ||\n typeof document === \"undefined\" ||\n typeof HTMLElement === \"undefined\"\n ) {\n return;\n }\n\n var supportsPreventScrollOption = false;\n try {\n var focusElem = document.createElement(\"div\");\n focusElem.addEventListener(\n \"focus\",\n function(event) {\n event.preventDefault();\n event.stopPropagation();\n },\n true\n );\n focusElem.focus(\n Object.defineProperty({}, \"preventScroll\", {\n get: function() {\n // Edge v18 gives a false positive for supporting inputs\n if (\n navigator &&\n typeof navigator.userAgent !== 'undefined' &&\n navigator.userAgent &&\n navigator.userAgent.match(/Edge\\/1[7-8]/)) {\n return supportsPreventScrollOption = false\n }\n\n supportsPreventScrollOption = true;\n }\n })\n );\n } catch (e) {}\n\n if (\n HTMLElement.prototype.nativeFocus === undefined &&\n !supportsPreventScrollOption\n ) {\n HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus;\n\n var calcScrollableElements = function(element) {\n var parent = element.parentNode;\n var scrollableElements = [];\n var rootScrollingElement =\n document.scrollingElement || document.documentElement;\n\n while (parent && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push([\n parent,\n parent.scrollTop,\n parent.scrollLeft\n ]);\n }\n parent = parent.parentNode;\n }\n parent = rootScrollingElement;\n scrollableElements.push([parent, parent.scrollTop, parent.scrollLeft]);\n\n return scrollableElements;\n };\n\n var restoreScrollPosition = function(scrollableElements) {\n for (var i = 0; i < scrollableElements.length; i++) {\n scrollableElements[i][0].scrollTop = scrollableElements[i][1];\n scrollableElements[i][0].scrollLeft = scrollableElements[i][2];\n }\n scrollableElements = [];\n };\n\n var patchedFocus = function(args) {\n if (args && args.preventScroll) {\n var evScrollableElements = calcScrollableElements(this);\n if (typeof setTimeout === 'function') {\n var thisElem = this;\n setTimeout(function () {\n thisElem.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }, 0);\n } else {\n this.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }\n }\n else {\n this.nativeFocus();\n }\n };\n\n HTMLElement.prototype.focus = patchedFocus;\n }\n})();\n","import { Build } from '@stencil/core';\n\n// focus options\nimport 'focus-options-polyfill';\n\nif (Build.isBrowser && globalThis['document']) {\n // fire global 'ready' event when everything is hydrated\n\n const docEle = document.documentElement;\n const docIsReady = () => {\n if (!docEle.classList.contains('hydrated')) return false;\n docEle.dispatchEvent(new CustomEvent('nanoComponentsReady'));\n return true;\n };\n\n if (!docIsReady()) {\n let mutationO = new MutationObserver((_) => {\n if (!docIsReady()) return;\n\n mutationO.disconnect();\n mutationO = null;\n });\n\n mutationO.observe(docEle, {\n childList: false,\n subtree: false,\n attributes: true,\n });\n }\n}\n"],"version":3}
1
+ {"file":"index.js","mappings":"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","names":[],"sources":["./src/components/alert/alert.helpers.ts","./src/components/dialog/dialog.helpers.ts","./src/index.ts","./node_modules/focus-options-polyfill/index.js","./src/global/script/global.ts"],"sourcesContent":["import type { Color, AlertToastPosition } from '../../interface';\n\ninterface ImperativeAlertOptions {\n color?: Color;\n duration?: number;\n closable?: boolean;\n}\n\ninterface ImperativeAlertButton {\n classes: string;\n content: string;\n handler?: (e: MouseEvent) => void;\n}\n\nconst alertContent = (\n message: string,\n buttons: ImperativeAlertButton[] = []\n) => {\n return `${message}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`;\n};\n\nconst addBtnHandlers = (\n alert: HTMLNanoAlertElement,\n buttons: ImperativeAlertButton[] = []\n) => {\n if (buttons.length) {\n Array.from(alert.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n};\n\n/**\n * `nano-alert` helper to create toast notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param position - the position of the toast. Options are 'tr', 'tl', 'bl' & 'br'\n * @param icon - name for the `nano-icon`\n * @param alertOptions - { color: Color, duration: number, closable: boolean }\n * @returns `Promise<void>`\n */\nexport async function nanoShowToast(\n message: string,\n position: AlertToastPosition = 'tr',\n icon?: string | undefined,\n alertOptions?: ImperativeAlertOptions,\n buttons: ImperativeAlertButton[] = []\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: 3000,\n closable: true,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n <nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n requestAnimationFrame(async (_) => {\n await alert.toast(position);\n resolve(alert);\n });\n });\n}\n\n/**\n * `nano-alert` helper to create alert notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons\n * @param label - descriptive label for assitive technology\n * @param icon - name for the `nano-icon`\n * @param alertOptions\n * @returns `Promise<void>`\n */\nexport function nanoShowAlert(\n message: string,\n buttons: ImperativeAlertButton[] = [],\n label: string,\n icon: string | undefined = 'light/info-circle',\n alertOptions: ImperativeAlertOptions = {}\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: Infinity,\n closable: false,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${icon ? `<nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>` : ''}\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n setTimeout(async (_) => {\n await alert.alert(label);\n resolve(alert);\n }, 100);\n });\n}\n","interface ImperativeDialogOptions {\n noUserDismiss: boolean;\n noHeader?: boolean;\n noFooter?: boolean;\n label: string;\n}\n/**\n * `nano-dialog` helper to create dialog modals imperatively.\n * @param body - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons - { classes: string; content: string; handler: () => {} }[]\n * @param dialogOptions - { noUserDismiss: boolean, noHeader?: boolean, noFooter?: boolean, label: string }\n * @returns `Promise<void>`\n */\nexport function nanoCreateDialog(\n body: string,\n buttons: { classes: string; content: string; handler: () => void }[] = [],\n dialogOptions?: ImperativeDialogOptions\n) {\n const opts: ImperativeDialogOptions = {\n noUserDismiss: false,\n label: 'Dialog',\n ...dialogOptions,\n };\n const dialog: HTMLNanoDialogElement = Object.assign(\n document.createElement('nano-dialog'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${body}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`,\n }\n );\n\n if (buttons.length) {\n Array.from(dialog.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n\n document.body.appendChild(dialog);\n return dialog;\n}\n","// import { setPlatformHelpers } from '@stencil/core';\nexport * from './components/alert/alert.helpers';\nexport * from './components/dialog/dialog.helpers';\nexport {\n debounce as nanoDebounce,\n throttle as nanoThrottle,\n} from './utils/throttle';\nexport { getTabbableElements as nanoGetTabElements } from './utils/tabbable';\n\nexport const initialize = (\n helpers: { _ael?: any; _ce?: any; _rel?: any } = {}\n) => {\n if (typeof (window as any) === 'undefined') {\n return;\n }\n\n const platformHelpers: any = {};\n if (helpers._ael) {\n platformHelpers.ael = helpers._ael;\n }\n if (helpers._rel) {\n platformHelpers.rel = helpers._rel;\n }\n if (helpers._ce) {\n platformHelpers.ce = helpers._ce;\n }\n // setPlatformHelpers(platformHelpers);\n};\n","// focus - focusOptions - preventScroll polyfill\n(function() {\n if (\n typeof window === \"undefined\" ||\n typeof document === \"undefined\" ||\n typeof HTMLElement === \"undefined\"\n ) {\n return;\n }\n\n var supportsPreventScrollOption = false;\n try {\n var focusElem = document.createElement(\"div\");\n focusElem.addEventListener(\n \"focus\",\n function(event) {\n event.preventDefault();\n event.stopPropagation();\n },\n true\n );\n focusElem.focus(\n Object.defineProperty({}, \"preventScroll\", {\n get: function() {\n // Edge v18 gives a false positive for supporting inputs\n if (\n navigator &&\n typeof navigator.userAgent !== 'undefined' &&\n navigator.userAgent &&\n navigator.userAgent.match(/Edge\\/1[7-8]/)) {\n return supportsPreventScrollOption = false\n }\n\n supportsPreventScrollOption = true;\n }\n })\n );\n } catch (e) {}\n\n if (\n HTMLElement.prototype.nativeFocus === undefined &&\n !supportsPreventScrollOption\n ) {\n HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus;\n\n var calcScrollableElements = function(element) {\n var parent = element.parentNode;\n var scrollableElements = [];\n var rootScrollingElement =\n document.scrollingElement || document.documentElement;\n\n while (parent && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push([\n parent,\n parent.scrollTop,\n parent.scrollLeft\n ]);\n }\n parent = parent.parentNode;\n }\n parent = rootScrollingElement;\n scrollableElements.push([parent, parent.scrollTop, parent.scrollLeft]);\n\n return scrollableElements;\n };\n\n var restoreScrollPosition = function(scrollableElements) {\n for (var i = 0; i < scrollableElements.length; i++) {\n scrollableElements[i][0].scrollTop = scrollableElements[i][1];\n scrollableElements[i][0].scrollLeft = scrollableElements[i][2];\n }\n scrollableElements = [];\n };\n\n var patchedFocus = function(args) {\n if (args && args.preventScroll) {\n var evScrollableElements = calcScrollableElements(this);\n if (typeof setTimeout === 'function') {\n var thisElem = this;\n setTimeout(function () {\n thisElem.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }, 0);\n } else {\n this.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }\n }\n else {\n this.nativeFocus();\n }\n };\n\n HTMLElement.prototype.focus = patchedFocus;\n }\n})();\n","import { Build } from '@stencil/core';\n\n// focus options\nimport 'focus-options-polyfill';\n\nif (Build.isBrowser && globalThis['document']) {\n // fire global 'ready' event when everything is hydrated\n\n const docEle = document.documentElement;\n const docIsReady = () => {\n if (!docEle.classList.contains('hydrated')) return false;\n docEle.dispatchEvent(new CustomEvent('nanoComponentsReady'));\n return true;\n };\n\n if (!docIsReady()) {\n let mutationO = new MutationObserver((_) => {\n if (!docIsReady()) return;\n\n mutationO.disconnect();\n mutationO = null;\n });\n\n mutationO.observe(docEle, {\n childList: false,\n subtree: false,\n attributes: true,\n });\n }\n}\n"],"version":3}
@@ -405,7 +405,15 @@ const createGesture = (config) => {
405
405
  let hasStartedPan = false;
406
406
  let hasFiredStart = true;
407
407
  let isMoveQueued = false;
408
- const finalConfig = Object.assign({ disableScroll: false, direction: 'x', gesturePriority: 0, passive: true, maxAngle: 40, threshold: 10 }, config);
408
+ const finalConfig = {
409
+ disableScroll: false,
410
+ direction: 'x',
411
+ gesturePriority: 0,
412
+ passive: true,
413
+ maxAngle: 40,
414
+ threshold: 10,
415
+ ...config,
416
+ };
409
417
  const canStart = finalConfig.canStart;
410
418
  const onWillStart = finalConfig.onWillStart;
411
419
  const onStart = finalConfig.onStart;
@@ -1 +1 @@
1
- {"file":"index3.js","mappings":"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","names":[],"sources":["./src/utils/gesture/gesture-controller.ts","./src/utils/gesture/listener.ts","./src/utils/gesture/pointer-events.ts","./src/utils/gesture/recognizers.ts","./src/utils/gesture/index.ts"],"sourcesContent":["class GestureController {\n private gestureId = 0;\n private requestedStart = new Map<number, number>();\n private disabledGestures = new Map<string, Set<number>>();\n private disabledScroll = new Set<number>();\n private capturedId?: number;\n\n /**\n * Creates a gesture delegate based on the GestureConfig passed\n * @param config\n * @returns a new gesture delegate\n */\n createGesture(config: GestureConfig): GestureDelegate {\n return new GestureDelegate(\n this,\n this.newID(),\n config.name,\n config.priority || 0,\n !!config.disableScroll\n );\n }\n\n /**\n * Creates a blocker that will block any other gesture events from firing. Set in the ion-gesture component.\n * @param opts\n * @returns a new blocker delegate\n */\n createBlocker(opts: BlockerConfig = {}): BlockerDelegate {\n return new BlockerDelegate(\n this,\n this.newID(),\n opts.disable,\n !!opts.disableScroll\n );\n }\n\n start(gestureName: string, id: number, priority: number): boolean {\n if (!this.canStart(gestureName)) {\n this.requestedStart.delete(id);\n return false;\n }\n this.requestedStart.set(id, priority);\n return true;\n }\n\n capture(gestureName: string, id: number, priority: number): boolean {\n if (!this.start(gestureName, id, priority)) {\n return false;\n }\n const requestedStart = this.requestedStart;\n let maxPriority = -10000;\n\n requestedStart.forEach((value) => {\n maxPriority = Math.max(maxPriority, value);\n });\n\n if (maxPriority === priority) {\n this.capturedId = id;\n requestedStart.clear();\n\n const event = new CustomEvent('ionGestureCaptured', {\n detail: { gestureName },\n });\n document.dispatchEvent(event);\n return true;\n }\n requestedStart.delete(id);\n\n return false;\n }\n\n release(id: number) {\n this.requestedStart.delete(id);\n\n if (this.capturedId === id) {\n this.capturedId = undefined;\n }\n }\n\n disableGesture(gestureName: string, id: number) {\n let set = this.disabledGestures.get(gestureName);\n if (set === undefined) {\n set = new Set<number>();\n this.disabledGestures.set(gestureName, set);\n }\n set.add(id);\n }\n\n enableGesture(gestureName: string, id: number) {\n const set = this.disabledGestures.get(gestureName);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n\n disableScroll(id: number) {\n this.disabledScroll.add(id);\n if (this.disabledScroll.size === 1) {\n document.body.classList.add(BACKDROP_NO_SCROLL);\n }\n }\n\n enableScroll(id: number) {\n this.disabledScroll.delete(id);\n if (this.disabledScroll.size === 0) {\n document.body.classList.remove(BACKDROP_NO_SCROLL);\n }\n }\n\n canStart(gestureName: string): boolean {\n if (this.capturedId !== undefined) {\n // a gesture already captured\n return false;\n }\n\n if (this.isDisabled(gestureName)) {\n return false;\n }\n\n return true;\n }\n\n isCaptured(): boolean {\n return this.capturedId !== undefined;\n }\n\n isScrollDisabled(): boolean {\n return this.disabledScroll.size > 0;\n }\n\n isDisabled(gestureName: string): boolean {\n const disabled = this.disabledGestures.get(gestureName);\n if (disabled && disabled.size > 0) {\n return true;\n }\n return false;\n }\n\n private newID(): number {\n this.gestureId++;\n return this.gestureId;\n }\n}\n\nclass GestureDelegate {\n private ctrl?: GestureController;\n private priority: number;\n\n constructor(\n ctrl: GestureController,\n private id: number,\n private name: string,\n priority: number,\n private disableScroll: boolean\n ) {\n this.priority = priority * 1000000 + id;\n this.ctrl = ctrl;\n }\n\n canStart(): boolean {\n if (!this.ctrl) {\n return false;\n }\n\n return this.ctrl.canStart(this.name);\n }\n\n start(): boolean {\n if (!this.ctrl) {\n return false;\n }\n\n return this.ctrl.start(this.name, this.id, this.priority);\n }\n\n capture(): boolean {\n if (!this.ctrl) {\n return false;\n }\n\n const captured = this.ctrl.capture(this.name, this.id, this.priority);\n if (captured && this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n\n return captured;\n }\n\n release() {\n if (this.ctrl) {\n this.ctrl.release(this.id);\n\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n }\n\n destroy() {\n this.release();\n this.ctrl = undefined;\n }\n}\n\nclass BlockerDelegate {\n private ctrl?: GestureController;\n\n constructor(\n ctrl: GestureController,\n private id: number,\n private disable: string[] | undefined,\n private disableScroll: boolean\n ) {\n this.ctrl = ctrl;\n }\n\n block() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.disableGesture(gesture, this.id);\n }\n }\n\n if (this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n }\n\n unblock() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.enableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n\n destroy() {\n this.unblock();\n this.ctrl = undefined;\n }\n}\n\nexport interface GestureConfig {\n name: string;\n priority?: number;\n disableScroll?: boolean;\n}\n\nexport interface BlockerConfig {\n disable?: string[];\n disableScroll?: boolean;\n}\n\nconst BACKDROP_NO_SCROLL = 'backdrop-no-scroll';\nexport const GESTURE_CONTROLLER = new GestureController();\n","export const addEventListener = (\n el: any,\n eventName: string,\n callback: EventListenerOrEventListenerObject,\n opts: {\n passive?: boolean;\n capture?: boolean;\n }\n): (() => void) => {\n // use event listener options when supported\n // otherwise it's just a boolean for the \"capture\" arg\n const listenerOpts = supportsPassive(el)\n ? {\n capture: !!opts.capture,\n passive: !!opts.passive,\n }\n : !!opts.capture;\n\n let add: string;\n let remove: string;\n if (el['__zone_symbol__addEventListener']) {\n add = '__zone_symbol__addEventListener';\n remove = '__zone_symbol__removeEventListener';\n } else {\n add = 'addEventListener';\n remove = 'removeEventListener';\n }\n\n el[add](eventName, callback, listenerOpts);\n return () => {\n el[remove](eventName, callback, listenerOpts);\n };\n};\n\nconst supportsPassive = (node: Node) => {\n if (_sPassive === undefined) {\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get: () => {\n _sPassive = true;\n },\n });\n node.addEventListener(\n 'optsTest',\n () => {\n return;\n },\n opts\n );\n } catch (e) {\n _sPassive = false;\n }\n }\n return !!_sPassive;\n};\n\nlet _sPassive: boolean | undefined;\n","import { addEventListener } from './listener';\n\nconst MOUSE_WAIT = 2000;\n\nexport const createPointerEvents = (\n el: Node,\n pointerDown: any,\n pointerMove: any,\n pointerUp: any,\n options: {\n passive?: boolean;\n capture?: boolean;\n }\n) => {\n let rmTouchStart: (() => void) | undefined;\n let rmTouchMove: (() => void) | undefined;\n let rmTouchEnd: (() => void) | undefined;\n let rmTouchCancel: (() => void) | undefined;\n let rmMouseStart: (() => void) | undefined;\n let rmMouseMove: (() => void) | undefined;\n let rmMouseUp: (() => void) | undefined;\n let lastTouchEvent = 0;\n\n const handleTouchStart = (ev: any) => {\n lastTouchEvent = Date.now() + MOUSE_WAIT;\n if (!pointerDown(ev)) {\n return;\n }\n if (!rmTouchMove && pointerMove) {\n rmTouchMove = addEventListener(el, 'touchmove', pointerMove, options);\n }\n if (!rmTouchEnd) {\n rmTouchEnd = addEventListener(el, 'touchend', handleTouchEnd, options);\n }\n if (!rmTouchCancel) {\n rmTouchCancel = addEventListener(\n el,\n 'touchcancel',\n handleTouchEnd,\n options\n );\n }\n };\n\n const handleMouseDown = (ev: any) => {\n if (lastTouchEvent > Date.now()) {\n return;\n }\n if (!pointerDown(ev)) {\n return;\n }\n if (!rmMouseMove && pointerMove) {\n rmMouseMove = addEventListener(\n getDocument(el),\n 'mousemove',\n pointerMove,\n options\n );\n }\n if (!rmMouseUp) {\n rmMouseUp = addEventListener(\n getDocument(el),\n 'mouseup',\n handleMouseUp,\n options\n );\n }\n };\n\n const handleTouchEnd = (ev: any) => {\n stopTouch();\n if (pointerUp) {\n pointerUp(ev);\n }\n };\n\n const handleMouseUp = (ev: any) => {\n stopMouse();\n if (pointerUp) {\n pointerUp(ev);\n }\n };\n\n const stopTouch = () => {\n if (rmTouchMove) {\n rmTouchMove();\n }\n if (rmTouchEnd) {\n rmTouchEnd();\n }\n if (rmTouchCancel) {\n rmTouchCancel();\n }\n rmTouchMove = rmTouchEnd = rmTouchCancel = undefined;\n };\n\n const stopMouse = () => {\n if (rmMouseMove) {\n rmMouseMove();\n }\n if (rmMouseUp) {\n rmMouseUp();\n }\n rmMouseMove = rmMouseUp = undefined;\n };\n\n const stop = () => {\n stopTouch();\n stopMouse();\n };\n\n const enable = (isEnabled = true) => {\n if (!isEnabled) {\n if (rmTouchStart) {\n rmTouchStart();\n }\n if (rmMouseStart) {\n rmMouseStart();\n }\n rmTouchStart = rmMouseStart = undefined;\n stop();\n } else {\n if (!rmTouchStart) {\n rmTouchStart = addEventListener(\n el,\n 'touchstart',\n handleTouchStart,\n options\n );\n }\n if (!rmMouseStart) {\n rmMouseStart = addEventListener(\n el,\n 'mousedown',\n handleMouseDown,\n options\n );\n }\n }\n };\n\n const destroy = () => {\n enable(false);\n pointerUp = pointerMove = pointerDown = undefined;\n };\n\n return {\n enable,\n stop,\n destroy,\n };\n};\n\nconst getDocument = (node: Node) => {\n return node instanceof Document ? node : node.ownerDocument;\n};\n\nexport interface PointerEventsConfig {\n element?: HTMLElement;\n pointerDown: (ev: any) => boolean;\n pointerMove?: (ev: any) => void;\n pointerUp?: (ev: any) => void;\n zone?: boolean;\n capture?: boolean;\n passive?: boolean;\n}\n","export interface PanRecognizer {\n start(x: number, y: number): void;\n detect(x: number, y: number): boolean;\n isGesture(): boolean;\n getDirection(): number;\n}\n\nexport const createPanRecognizer = (\n direction: string,\n thresh: number,\n maxAngle: number\n): PanRecognizer => {\n const radians = maxAngle * (Math.PI / 180);\n const isDirX = direction === 'x';\n const maxCosine = Math.cos(radians);\n const threshold = thresh * thresh;\n\n let startX = 0;\n let startY = 0;\n\n let dirty = false;\n let isPan = 0;\n\n return {\n start(x: number, y: number) {\n startX = x;\n startY = y;\n isPan = 0;\n dirty = true;\n },\n\n detect(x: number, y: number): boolean {\n if (!dirty) {\n return false;\n }\n\n const deltaX = x - startX;\n const deltaY = y - startY;\n const distance = deltaX * deltaX + deltaY * deltaY;\n\n if (distance < threshold) {\n return false;\n }\n const hypotenuse = Math.sqrt(distance);\n const cosine = (isDirX ? deltaX : deltaY) / hypotenuse;\n\n if (cosine > maxCosine) {\n isPan = 1;\n } else if (cosine < -maxCosine) {\n isPan = -1;\n } else {\n isPan = 0;\n }\n\n dirty = false;\n return true;\n },\n\n isGesture(): boolean {\n return isPan !== 0;\n },\n\n getDirection(): number {\n return isPan;\n },\n };\n};\n","import { GESTURE_CONTROLLER } from './gesture-controller';\nimport { createPointerEvents } from './pointer-events';\nimport { createPanRecognizer } from './recognizers';\n\nexport const createGesture = (config: GestureConfig): Gesture => {\n let hasCapturedPan = false;\n let hasStartedPan = false;\n let hasFiredStart = true;\n let isMoveQueued = false;\n\n const finalConfig = {\n disableScroll: false,\n direction: 'x',\n gesturePriority: 0,\n passive: true,\n maxAngle: 40,\n threshold: 10,\n\n ...config,\n };\n\n const canStart = finalConfig.canStart;\n const onWillStart = finalConfig.onWillStart;\n const onStart = finalConfig.onStart;\n const onEnd = finalConfig.onEnd;\n const notCaptured = finalConfig.notCaptured;\n const onMove = finalConfig.onMove;\n const threshold = finalConfig.threshold;\n const passive = finalConfig.passive;\n const blurOnStart = finalConfig.blurOnStart;\n\n const detail = {\n type: 'pan',\n startX: 0,\n startY: 0,\n startTime: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n currentTime: 0,\n event: undefined as any,\n data: undefined,\n };\n\n const pan = createPanRecognizer(\n finalConfig.direction,\n finalConfig.threshold,\n finalConfig.maxAngle\n );\n const gesture = GESTURE_CONTROLLER.createGesture({\n name: config.gestureName,\n priority: config.gesturePriority,\n disableScroll: config.disableScroll,\n });\n\n const pointerDown = (ev: UIEvent): boolean => {\n const timeStamp = now(ev);\n if (hasStartedPan || !hasFiredStart) {\n return false;\n }\n\n updateDetail(ev, detail);\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTime = detail.currentTime = timeStamp;\n detail.velocityX = detail.velocityY = detail.deltaX = detail.deltaY = 0;\n detail.event = ev;\n\n // Check if gesture can start\n if (canStart && canStart(detail) === false) {\n return false;\n }\n // Release fallback\n gesture.release();\n\n // Start gesture\n if (!gesture.start()) {\n return false;\n }\n\n hasStartedPan = true;\n if (threshold === 0) {\n return tryToCapturePan();\n }\n pan.start(detail.startX, detail.startY);\n return true;\n };\n\n const pointerMove = (ev: UIEvent) => {\n // fast path, if gesture is currently captured\n // do minimum job to get user-land even dispatched\n if (hasCapturedPan) {\n if (!isMoveQueued && hasFiredStart) {\n isMoveQueued = true;\n calcGestureData(detail, ev);\n requestAnimationFrame(fireOnMove);\n }\n return;\n }\n\n // gesture is currently being detected\n calcGestureData(detail, ev);\n if (pan.detect(detail.currentX, detail.currentY)) {\n if (!pan.isGesture() || !tryToCapturePan()) {\n abortGesture();\n }\n }\n };\n\n const fireOnMove = () => {\n // Since fireOnMove is called inside a RAF, onEnd() might be called,\n // we must double check hasCapturedPan\n if (!hasCapturedPan) {\n return;\n }\n isMoveQueued = false;\n if (onMove) {\n onMove(detail);\n }\n };\n\n const tryToCapturePan = (): boolean => {\n if (gesture && !gesture.capture()) {\n return false;\n }\n hasCapturedPan = true;\n hasFiredStart = false;\n\n // reset start position since the real user-land event starts here\n // If the pan detector threshold is big, not resetting the start position\n // will cause a jump in the animation equal to the detector threshold.\n // the array of positions used to calculate the gesture velocity does not\n // need to be cleaned, more points in the positions array always results in a\n // more accurate value of the velocity.\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTime = detail.currentTime;\n\n if (onWillStart) {\n onWillStart(detail).then(fireOnStart);\n } else {\n fireOnStart();\n }\n return true;\n };\n\n const blurActiveElement = () => {\n /* tslint:disable-next-line */\n if (typeof document !== 'undefined') {\n const activeElement = document.activeElement as HTMLElement | null;\n if (activeElement !== null && activeElement.blur) {\n activeElement.blur();\n }\n }\n };\n\n const fireOnStart = () => {\n if (blurOnStart) {\n blurActiveElement();\n }\n if (onStart) {\n onStart(detail);\n }\n hasFiredStart = true;\n };\n\n const reset = () => {\n hasCapturedPan = false;\n hasStartedPan = false;\n isMoveQueued = false;\n hasFiredStart = true;\n\n gesture.release();\n };\n\n // END *************************\n\n const pointerUp = (ev: UIEvent | undefined) => {\n const tmpHasCaptured = hasCapturedPan;\n const tmpHasFiredStart = hasFiredStart;\n reset();\n\n if (!tmpHasFiredStart) {\n return;\n }\n calcGestureData(detail, ev);\n\n // Try to capture press\n if (tmpHasCaptured) {\n if (onEnd) {\n onEnd(detail);\n }\n return;\n }\n\n // Not captured any event\n if (notCaptured) {\n notCaptured(detail);\n }\n };\n\n const pointerEvents = createPointerEvents(\n finalConfig.el,\n pointerDown,\n pointerMove,\n pointerUp,\n {\n capture: false,\n passive,\n }\n );\n\n const abortGesture = () => {\n reset();\n pointerEvents.stop();\n if (notCaptured) {\n notCaptured(detail);\n }\n };\n\n return {\n enable(enable = true) {\n if (!enable) {\n if (hasCapturedPan) {\n pointerUp(undefined);\n }\n\n reset();\n }\n pointerEvents.enable(enable);\n },\n destroy() {\n gesture.destroy();\n pointerEvents.destroy();\n },\n };\n};\n\nconst calcGestureData = (detail: GestureDetail, ev: UIEvent | undefined) => {\n if (!ev) {\n return;\n }\n const prevX = detail.currentX;\n const prevY = detail.currentY;\n const prevT = detail.currentTime;\n\n updateDetail(ev, detail);\n\n const currentX = detail.currentX;\n const currentY = detail.currentY;\n const timestamp = (detail.currentTime = now(ev));\n const timeDelta = timestamp - prevT;\n if (timeDelta > 0 && timeDelta < 100) {\n const velocityX = (currentX - prevX) / timeDelta;\n const velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n detail.event = ev;\n};\n\nconst updateDetail = (ev: any, detail: GestureDetail) => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n let x = 0;\n let y = 0;\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n x = touch.clientX;\n y = touch.clientY;\n } else if (ev.pageX !== undefined) {\n x = ev.pageX;\n y = ev.pageY;\n }\n }\n detail.currentX = x;\n detail.currentY = y;\n};\n\nconst now = (ev: UIEvent) => {\n return ev.timeStamp || Date.now();\n};\n\nexport interface GestureDetail {\n type: string;\n startX: number;\n startY: number;\n startTime: number;\n currentX: number;\n currentY: number;\n velocityX: number;\n velocityY: number;\n deltaX: number;\n deltaY: number;\n currentTime: number;\n event: UIEvent;\n data?: any;\n}\n\nexport type GestureCallback = (detail: GestureDetail) => boolean | void;\n\nexport interface Gesture {\n enable(enable?: boolean): void;\n destroy(): void;\n}\n\nexport interface GestureConfig {\n el: Node;\n disableScroll?: boolean;\n\n direction?: 'x' | 'y';\n gestureName: string;\n gesturePriority?: number;\n passive?: boolean;\n maxAngle?: number;\n threshold?: number;\n blurOnStart?: boolean;\n\n canStart?: GestureCallback;\n onWillStart?: (_: GestureDetail) => Promise<void>;\n onStart?: GestureCallback;\n onMove?: GestureCallback;\n onEnd?: GestureCallback;\n notCaptured?: GestureCallback;\n}\n\nexport { GESTURE_CONTROLLER };\n"],"version":3}
1
+ {"file":"index3.js","mappings":";;;AAAA,MAAM,iBAAiB;EAAvB;IACU,cAAS,GAAG,CAAC,CAAC;IACd,mBAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,qBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAClD,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;GA0I5C;;;;;;EAlIC,aAAa,CAAC,MAAqB;IACjC,OAAO,IAAI,eAAe,CACxB,IAAI,EACJ,IAAI,CAAC,KAAK,EAAE,EACZ,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,IAAI,CAAC,EACpB,CAAC,CAAC,MAAM,CAAC,aAAa,CACvB,CAAC;GACH;;;;;;EAOD,aAAa,CAAC,OAAsB,EAAE;IACpC,OAAO,IAAI,eAAe,CACxB,IAAI,EACJ,IAAI,CAAC,KAAK,EAAE,EACZ,IAAI,CAAC,OAAO,EACZ,CAAC,CAAC,IAAI,CAAC,aAAa,CACrB,CAAC;GACH;EAED,KAAK,CAAC,WAAmB,EAAE,EAAU,EAAE,QAAgB;IACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;MAC/B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;MAC/B,OAAO,KAAK,CAAC;KACd;IACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;GACb;EAED,OAAO,CAAC,WAAmB,EAAE,EAAU,EAAE,QAAgB;IACvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE;MAC1C,OAAO,KAAK,CAAC;KACd;IACD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3C,IAAI,WAAW,GAAG,CAAC,KAAK,CAAC;IAEzB,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK;MAC3B,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;KAC5C,CAAC,CAAC;IAEH,IAAI,WAAW,KAAK,QAAQ,EAAE;MAC5B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;MACrB,cAAc,CAAC,KAAK,EAAE,CAAC;MAEvB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,oBAAoB,EAAE;QAClD,MAAM,EAAE,EAAE,WAAW,EAAE;OACxB,CAAC,CAAC;MACH,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;MAC9B,OAAO,IAAI,CAAC;KACb;IACD,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC;GACd;EAED,OAAO,CAAC,EAAU;IAChB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/B,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;MAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC7B;GACF;EAED,cAAc,CAAC,WAAmB,EAAE,EAAU;IAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,GAAG,KAAK,SAAS,EAAE;MACrB,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;MACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;KAC7C;IACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;GACb;EAED,aAAa,CAAC,WAAmB,EAAE,EAAU;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,GAAG,KAAK,SAAS,EAAE;MACrB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAChB;GACF;EAED,aAAa,CAAC,EAAU;IACtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE;MAClC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;KACjD;GACF;EAED,YAAY,CAAC,EAAU;IACrB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE;MAClC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;KACpD;GACF;EAED,QAAQ,CAAC,WAAmB;IAC1B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;;MAEjC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;MAChC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;GACb;EAED,UAAU;IACR,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;GACtC;EAED,gBAAgB;IACd,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC;GACrC;EAED,UAAU,CAAC,WAAmB;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;MACjC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;GACd;EAEO,KAAK;IACX,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,OAAO,IAAI,CAAC,SAAS,CAAC;GACvB;CACF;AAED,MAAM,eAAe;EAInB,YACE,IAAuB,EACf,EAAU,EACV,IAAY,EACpB,QAAgB,EACR,aAAsB;IAHtB,OAAE,GAAF,EAAE,CAAQ;IACV,SAAI,GAAJ,IAAI,CAAQ;IAEZ,kBAAa,GAAb,aAAa,CAAS;IAE9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;IACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GAClB;EAED,QAAQ;IACN,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;MACd,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACtC;EAED,KAAK;IACH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;MACd,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;GAC3D;EAED,OAAO;IACL,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;MACd,OAAO,KAAK,CAAC;KACd;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;MAClC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAClC;IAED,OAAO,QAAQ,CAAC;GACjB;EAED,OAAO;IACL,IAAI,IAAI,CAAC,IAAI,EAAE;MACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;MAE3B,IAAI,IAAI,CAAC,aAAa,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;OACjC;KACF;GACF;EAED,OAAO;IACL,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;GACvB;CACF;AAED,MAAM,eAAe;EAGnB,YACE,IAAuB,EACf,EAAU,EACV,OAA6B,EAC7B,aAAsB;IAFtB,OAAE,GAAF,EAAE,CAAQ;IACV,YAAO,GAAP,OAAO,CAAsB;IAC7B,kBAAa,GAAb,aAAa,CAAS;IAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GAClB;EAED,KAAK;IACH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;MACd,OAAO;KACR;IACD,IAAI,IAAI,CAAC,OAAO,EAAE;MAChB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;OAC5C;KACF;IAED,IAAI,IAAI,CAAC,aAAa,EAAE;MACtB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAClC;GACF;EAED,OAAO;IACL,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;MACd,OAAO;KACR;IACD,IAAI,IAAI,CAAC,OAAO,EAAE;MAChB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;OAC3C;KACF;IACD,IAAI,IAAI,CAAC,aAAa,EAAE;MACtB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjC;GACF;EAED,OAAO;IACL,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;GACvB;CACF;AAaD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;MACnC,kBAAkB,GAAG,IAAI,iBAAiB;;ACvQhD,MAAM,gBAAgB,GAAG,CAC9B,EAAO,EACP,SAAiB,EACjB,QAA4C,EAC5C,IAGC;;;EAID,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,CAAC;MACpC;MACE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;MACvB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;KACxB;MACD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;EAEnB,IAAI,GAAW,CAAC;EAChB,IAAI,MAAc,CAAC;EACnB,IAAI,EAAE,CAAC,iCAAiC,CAAC,EAAE;IACzC,GAAG,GAAG,iCAAiC,CAAC;IACxC,MAAM,GAAG,oCAAoC,CAAC;GAC/C;OAAM;IACL,GAAG,GAAG,kBAAkB,CAAC;IACzB,MAAM,GAAG,qBAAqB,CAAC;GAChC;EAED,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;EAC3C,OAAO;IACL,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;GAC/C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAU;EACjC,IAAI,SAAS,KAAK,SAAS,EAAE;IAC3B,IAAI;MACF,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE;QAChD,GAAG,EAAE;UACH,SAAS,GAAG,IAAI,CAAC;SAClB;OACF,CAAC,CAAC;MACH,IAAI,CAAC,gBAAgB,CACnB,UAAU,EACV;QACE,OAAO;OACR,EACD,IAAI,CACL,CAAC;KACH;IAAC,OAAO,CAAC,EAAE;MACV,SAAS,GAAG,KAAK,CAAC;KACnB;GACF;EACD,OAAO,CAAC,CAAC,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,IAAI,SAA8B;;ACtDlC,MAAM,UAAU,GAAG,IAAI,CAAC;AAEjB,MAAM,mBAAmB,GAAG,CACjC,EAAQ,EACR,WAAgB,EAChB,WAAgB,EAChB,SAAc,EACd,OAGC;EAED,IAAI,YAAsC,CAAC;EAC3C,IAAI,WAAqC,CAAC;EAC1C,IAAI,UAAoC,CAAC;EACzC,IAAI,aAAuC,CAAC;EAC5C,IAAI,YAAsC,CAAC;EAC3C,IAAI,WAAqC,CAAC;EAC1C,IAAI,SAAmC,CAAC;EACxC,IAAI,cAAc,GAAG,CAAC,CAAC;EAEvB,MAAM,gBAAgB,GAAG,CAAC,EAAO;IAC/B,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;IACzC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;MACpB,OAAO;KACR;IACD,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;MAC/B,WAAW,GAAG,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;KACvE;IACD,IAAI,CAAC,UAAU,EAAE;MACf,UAAU,GAAG,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;KACxE;IACD,IAAI,CAAC,aAAa,EAAE;MAClB,aAAa,GAAG,gBAAgB,CAC9B,EAAE,EACF,aAAa,EACb,cAAc,EACd,OAAO,CACR,CAAC;KACH;GACF,CAAC;EAEF,MAAM,eAAe,GAAG,CAAC,EAAO;IAC9B,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;MAC/B,OAAO;KACR;IACD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;MACpB,OAAO;KACR;IACD,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;MAC/B,WAAW,GAAG,gBAAgB,CAC5B,WAAW,CAAC,EAAE,CAAC,EACf,WAAW,EACX,WAAW,EACX,OAAO,CACR,CAAC;KACH;IACD,IAAI,CAAC,SAAS,EAAE;MACd,SAAS,GAAG,gBAAgB,CAC1B,WAAW,CAAC,EAAE,CAAC,EACf,SAAS,EACT,aAAa,EACb,OAAO,CACR,CAAC;KACH;GACF,CAAC;EAEF,MAAM,cAAc,GAAG,CAAC,EAAO;IAC7B,SAAS,EAAE,CAAC;IACZ,IAAI,SAAS,EAAE;MACb,SAAS,CAAC,EAAE,CAAC,CAAC;KACf;GACF,CAAC;EAEF,MAAM,aAAa,GAAG,CAAC,EAAO;IAC5B,SAAS,EAAE,CAAC;IACZ,IAAI,SAAS,EAAE;MACb,SAAS,CAAC,EAAE,CAAC,CAAC;KACf;GACF,CAAC;EAEF,MAAM,SAAS,GAAG;IAChB,IAAI,WAAW,EAAE;MACf,WAAW,EAAE,CAAC;KACf;IACD,IAAI,UAAU,EAAE;MACd,UAAU,EAAE,CAAC;KACd;IACD,IAAI,aAAa,EAAE;MACjB,aAAa,EAAE,CAAC;KACjB;IACD,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;GACtD,CAAC;EAEF,MAAM,SAAS,GAAG;IAChB,IAAI,WAAW,EAAE;MACf,WAAW,EAAE,CAAC;KACf;IACD,IAAI,SAAS,EAAE;MACb,SAAS,EAAE,CAAC;KACb;IACD,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;GACrC,CAAC;EAEF,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;GACb,CAAC;EAEF,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,IAAI;IAC9B,IAAI,CAAC,SAAS,EAAE;MACd,IAAI,YAAY,EAAE;QAChB,YAAY,EAAE,CAAC;OAChB;MACD,IAAI,YAAY,EAAE;QAChB,YAAY,EAAE,CAAC;OAChB;MACD,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;MACxC,IAAI,EAAE,CAAC;KACR;SAAM;MACL,IAAI,CAAC,YAAY,EAAE;QACjB,YAAY,GAAG,gBAAgB,CAC7B,EAAE,EACF,YAAY,EACZ,gBAAgB,EAChB,OAAO,CACR,CAAC;OACH;MACD,IAAI,CAAC,YAAY,EAAE;QACjB,YAAY,GAAG,gBAAgB,CAC7B,EAAE,EACF,WAAW,EACX,eAAe,EACf,OAAO,CACR,CAAC;OACH;KACF;GACF,CAAC;EAEF,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,KAAK,CAAC,CAAC;IACd,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;GACnD,CAAC;EAEF,OAAO;IACL,MAAM;IACN,IAAI;IACJ,OAAO;GACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAU;EAC7B,OAAO,IAAI,YAAY,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;AAC9D,CAAC;;ACpJM,MAAM,mBAAmB,GAAG,CACjC,SAAiB,EACjB,MAAc,EACd,QAAgB;EAEhB,MAAM,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;EAC3C,MAAM,MAAM,GAAG,SAAS,KAAK,GAAG,CAAC;EACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EACpC,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;EAElC,IAAI,MAAM,GAAG,CAAC,CAAC;EACf,IAAI,MAAM,GAAG,CAAC,CAAC;EAEf,IAAI,KAAK,GAAG,KAAK,CAAC;EAClB,IAAI,KAAK,GAAG,CAAC,CAAC;EAEd,OAAO;IACL,KAAK,CAAC,CAAS,EAAE,CAAS;MACxB,MAAM,GAAG,CAAC,CAAC;MACX,MAAM,GAAG,CAAC,CAAC;MACX,KAAK,GAAG,CAAC,CAAC;MACV,KAAK,GAAG,IAAI,CAAC;KACd;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;MACzB,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;OACd;MAED,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;MAC1B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;MAC1B,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;MAEnD,IAAI,QAAQ,GAAG,SAAS,EAAE;QACxB,OAAO,KAAK,CAAC;OACd;MACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MACvC,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,UAAU,CAAC;MAEvD,IAAI,MAAM,GAAG,SAAS,EAAE;QACtB,KAAK,GAAG,CAAC,CAAC;OACX;WAAM,IAAI,MAAM,GAAG,CAAC,SAAS,EAAE;QAC9B,KAAK,GAAG,CAAC,CAAC,CAAC;OACZ;WAAM;QACL,KAAK,GAAG,CAAC,CAAC;OACX;MAED,KAAK,GAAG,KAAK,CAAC;MACd,OAAO,IAAI,CAAC;KACb;IAED,SAAS;MACP,OAAO,KAAK,KAAK,CAAC,CAAC;KACpB;IAED,YAAY;MACV,OAAO,KAAK,CAAC;KACd;GACF,CAAC;AACJ,CAAC;;MC9DY,aAAa,GAAG,CAAC,MAAqB;EACjD,IAAI,cAAc,GAAG,KAAK,CAAC;EAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;EAC1B,IAAI,aAAa,GAAG,IAAI,CAAC;EACzB,IAAI,YAAY,GAAG,KAAK,CAAC;EAEzB,MAAM,WAAW,GAAG;IAClB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,CAAC;IAClB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IAEb,GAAG,MAAM;GACV,CAAC;EAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;EACtC,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;EAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;EACpC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;EAChC,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;EAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EAClC,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;EACxC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;EACpC,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;EAE5C,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,SAAgB;IACvB,IAAI,EAAE,SAAS;GAChB,CAAC;EAEF,MAAM,GAAG,GAAG,mBAAmB,CAC7B,WAAW,CAAC,SAAS,EACrB,WAAW,CAAC,SAAS,EACrB,WAAW,CAAC,QAAQ,CACrB,CAAC;EACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,aAAa,CAAC;IAC/C,IAAI,EAAE,MAAM,CAAC,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC,eAAe;IAChC,aAAa,EAAE,MAAM,CAAC,aAAa;GACpC,CAAC,CAAC;EAEH,MAAM,WAAW,GAAG,CAAC,EAAW;IAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,aAAa,IAAI,CAAC,aAAa,EAAE;MACnC,OAAO,KAAK,CAAC;KACd;IAED,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;IAClD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;;IAGlB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;MAC1C,OAAO,KAAK,CAAC;KACd;;IAED,OAAO,CAAC,OAAO,EAAE,CAAC;;IAGlB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;MACpB,OAAO,KAAK,CAAC;KACd;IAED,aAAa,GAAG,IAAI,CAAC;IACrB,IAAI,SAAS,KAAK,CAAC,EAAE;MACnB,OAAO,eAAe,EAAE,CAAC;KAC1B;IACD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;GACb,CAAC;EAEF,MAAM,WAAW,GAAG,CAAC,EAAW;;;IAG9B,IAAI,cAAc,EAAE;MAClB,IAAI,CAAC,YAAY,IAAI,aAAa,EAAE;QAClC,YAAY,GAAG,IAAI,CAAC;QACpB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5B,qBAAqB,CAAC,UAAU,CAAC,CAAC;OACnC;MACD,OAAO;KACR;;IAGD,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;MAChD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE;QAC1C,YAAY,EAAE,CAAC;OAChB;KACF;GACF,CAAC;EAEF,MAAM,UAAU,GAAG;;;IAGjB,IAAI,CAAC,cAAc,EAAE;MACnB,OAAO;KACR;IACD,YAAY,GAAG,KAAK,CAAC;IACrB,IAAI,MAAM,EAAE;MACV,MAAM,CAAC,MAAM,CAAC,CAAC;KAChB;GACF,CAAC;EAEF,MAAM,eAAe,GAAG;IACtB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;MACjC,OAAO,KAAK,CAAC;KACd;IACD,cAAc,GAAG,IAAI,CAAC;IACtB,aAAa,GAAG,KAAK,CAAC;;;;;;;IAQtB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;IAEtC,IAAI,WAAW,EAAE;MACf,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvC;SAAM;MACL,WAAW,EAAE,CAAC;KACf;IACD,OAAO,IAAI,CAAC;GACb,CAAC;EAEF,MAAM,iBAAiB,GAAG;;IAExB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;MACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAmC,CAAC;MACnE,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;QAChD,aAAa,CAAC,IAAI,EAAE,CAAC;OACtB;KACF;GACF,CAAC;EAEF,MAAM,WAAW,GAAG;IAClB,IAAI,WAAW,EAAE;MACf,iBAAiB,EAAE,CAAC;KACrB;IACD,IAAI,OAAO,EAAE;MACX,OAAO,CAAC,MAAM,CAAC,CAAC;KACjB;IACD,aAAa,GAAG,IAAI,CAAC;GACtB,CAAC;EAEF,MAAM,KAAK,GAAG;IACZ,cAAc,GAAG,KAAK,CAAC;IACvB,aAAa,GAAG,KAAK,CAAC;IACtB,YAAY,GAAG,KAAK,CAAC;IACrB,aAAa,GAAG,IAAI,CAAC;IAErB,OAAO,CAAC,OAAO,EAAE,CAAC;GACnB,CAAC;;EAIF,MAAM,SAAS,GAAG,CAAC,EAAuB;IACxC,MAAM,cAAc,GAAG,cAAc,CAAC;IACtC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IACvC,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,gBAAgB,EAAE;MACrB,OAAO;KACR;IACD,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;IAG5B,IAAI,cAAc,EAAE;MAClB,IAAI,KAAK,EAAE;QACT,KAAK,CAAC,MAAM,CAAC,CAAC;OACf;MACD,OAAO;KACR;;IAGD,IAAI,WAAW,EAAE;MACf,WAAW,CAAC,MAAM,CAAC,CAAC;KACrB;GACF,CAAC;EAEF,MAAM,aAAa,GAAG,mBAAmB,CACvC,WAAW,CAAC,EAAE,EACd,WAAW,EACX,WAAW,EACX,SAAS,EACT;IACE,OAAO,EAAE,KAAK;IACd,OAAO;GACR,CACF,CAAC;EAEF,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,CAAC;IACR,aAAa,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,WAAW,EAAE;MACf,WAAW,CAAC,MAAM,CAAC,CAAC;KACrB;GACF,CAAC;EAEF,OAAO;IACL,MAAM,CAAC,MAAM,GAAG,IAAI;MAClB,IAAI,CAAC,MAAM,EAAE;QACX,IAAI,cAAc,EAAE;UAClB,SAAS,CAAC,SAAS,CAAC,CAAC;SACtB;QAED,KAAK,EAAE,CAAC;OACT;MACD,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9B;IACD,OAAO;MACL,OAAO,CAAC,OAAO,EAAE,CAAC;MAClB,aAAa,CAAC,OAAO,EAAE,CAAC;KACzB;GACF,CAAC;AACJ,EAAE;AAEF,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAE,EAAuB;EACrE,IAAI,CAAC,EAAE,EAAE;IACP,OAAO;GACR;EACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;EAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;EAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;EAEjC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;EAEzB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;EACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;EACjC,MAAM,SAAS,IAAI,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EACjD,MAAM,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC;EACpC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE;IACpC,MAAM,SAAS,GAAG,CAAC,QAAQ,GAAG,KAAK,IAAI,SAAS,CAAC;IACjD,MAAM,SAAS,GAAG,CAAC,QAAQ,GAAG,KAAK,IAAI,SAAS,CAAC;IACjD,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;IAC5D,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;GAC7D;EACD,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;EACzC,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;EACzC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAO,EAAE,MAAqB;;;EAGlD,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,EAAE,EAAE;IACN,MAAM,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;IACzC,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;MAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;MAChC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;MAClB,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;KACnB;SAAM,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS,EAAE;MACjC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;MACb,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;KACd;GACF;EACD,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;EACpB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,EAAW;EACtB,OAAO,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACpC,CAAC;;;;","names":[],"sources":["./src/utils/gesture/gesture-controller.ts","./src/utils/gesture/listener.ts","./src/utils/gesture/pointer-events.ts","./src/utils/gesture/recognizers.ts","./src/utils/gesture/index.ts"],"sourcesContent":["class GestureController {\n private gestureId = 0;\n private requestedStart = new Map<number, number>();\n private disabledGestures = new Map<string, Set<number>>();\n private disabledScroll = new Set<number>();\n private capturedId?: number;\n\n /**\n * Creates a gesture delegate based on the GestureConfig passed\n * @param config\n * @returns a new gesture delegate\n */\n createGesture(config: GestureConfig): GestureDelegate {\n return new GestureDelegate(\n this,\n this.newID(),\n config.name,\n config.priority || 0,\n !!config.disableScroll\n );\n }\n\n /**\n * Creates a blocker that will block any other gesture events from firing. Set in the ion-gesture component.\n * @param opts\n * @returns a new blocker delegate\n */\n createBlocker(opts: BlockerConfig = {}): BlockerDelegate {\n return new BlockerDelegate(\n this,\n this.newID(),\n opts.disable,\n !!opts.disableScroll\n );\n }\n\n start(gestureName: string, id: number, priority: number): boolean {\n if (!this.canStart(gestureName)) {\n this.requestedStart.delete(id);\n return false;\n }\n this.requestedStart.set(id, priority);\n return true;\n }\n\n capture(gestureName: string, id: number, priority: number): boolean {\n if (!this.start(gestureName, id, priority)) {\n return false;\n }\n const requestedStart = this.requestedStart;\n let maxPriority = -10000;\n\n requestedStart.forEach((value) => {\n maxPriority = Math.max(maxPriority, value);\n });\n\n if (maxPriority === priority) {\n this.capturedId = id;\n requestedStart.clear();\n\n const event = new CustomEvent('ionGestureCaptured', {\n detail: { gestureName },\n });\n document.dispatchEvent(event);\n return true;\n }\n requestedStart.delete(id);\n\n return false;\n }\n\n release(id: number) {\n this.requestedStart.delete(id);\n\n if (this.capturedId === id) {\n this.capturedId = undefined;\n }\n }\n\n disableGesture(gestureName: string, id: number) {\n let set = this.disabledGestures.get(gestureName);\n if (set === undefined) {\n set = new Set<number>();\n this.disabledGestures.set(gestureName, set);\n }\n set.add(id);\n }\n\n enableGesture(gestureName: string, id: number) {\n const set = this.disabledGestures.get(gestureName);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n\n disableScroll(id: number) {\n this.disabledScroll.add(id);\n if (this.disabledScroll.size === 1) {\n document.body.classList.add(BACKDROP_NO_SCROLL);\n }\n }\n\n enableScroll(id: number) {\n this.disabledScroll.delete(id);\n if (this.disabledScroll.size === 0) {\n document.body.classList.remove(BACKDROP_NO_SCROLL);\n }\n }\n\n canStart(gestureName: string): boolean {\n if (this.capturedId !== undefined) {\n // a gesture already captured\n return false;\n }\n\n if (this.isDisabled(gestureName)) {\n return false;\n }\n\n return true;\n }\n\n isCaptured(): boolean {\n return this.capturedId !== undefined;\n }\n\n isScrollDisabled(): boolean {\n return this.disabledScroll.size > 0;\n }\n\n isDisabled(gestureName: string): boolean {\n const disabled = this.disabledGestures.get(gestureName);\n if (disabled && disabled.size > 0) {\n return true;\n }\n return false;\n }\n\n private newID(): number {\n this.gestureId++;\n return this.gestureId;\n }\n}\n\nclass GestureDelegate {\n private ctrl?: GestureController;\n private priority: number;\n\n constructor(\n ctrl: GestureController,\n private id: number,\n private name: string,\n priority: number,\n private disableScroll: boolean\n ) {\n this.priority = priority * 1000000 + id;\n this.ctrl = ctrl;\n }\n\n canStart(): boolean {\n if (!this.ctrl) {\n return false;\n }\n\n return this.ctrl.canStart(this.name);\n }\n\n start(): boolean {\n if (!this.ctrl) {\n return false;\n }\n\n return this.ctrl.start(this.name, this.id, this.priority);\n }\n\n capture(): boolean {\n if (!this.ctrl) {\n return false;\n }\n\n const captured = this.ctrl.capture(this.name, this.id, this.priority);\n if (captured && this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n\n return captured;\n }\n\n release() {\n if (this.ctrl) {\n this.ctrl.release(this.id);\n\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n }\n\n destroy() {\n this.release();\n this.ctrl = undefined;\n }\n}\n\nclass BlockerDelegate {\n private ctrl?: GestureController;\n\n constructor(\n ctrl: GestureController,\n private id: number,\n private disable: string[] | undefined,\n private disableScroll: boolean\n ) {\n this.ctrl = ctrl;\n }\n\n block() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.disableGesture(gesture, this.id);\n }\n }\n\n if (this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n }\n\n unblock() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.enableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n\n destroy() {\n this.unblock();\n this.ctrl = undefined;\n }\n}\n\nexport interface GestureConfig {\n name: string;\n priority?: number;\n disableScroll?: boolean;\n}\n\nexport interface BlockerConfig {\n disable?: string[];\n disableScroll?: boolean;\n}\n\nconst BACKDROP_NO_SCROLL = 'backdrop-no-scroll';\nexport const GESTURE_CONTROLLER = new GestureController();\n","export const addEventListener = (\n el: any,\n eventName: string,\n callback: EventListenerOrEventListenerObject,\n opts: {\n passive?: boolean;\n capture?: boolean;\n }\n): (() => void) => {\n // use event listener options when supported\n // otherwise it's just a boolean for the \"capture\" arg\n const listenerOpts = supportsPassive(el)\n ? {\n capture: !!opts.capture,\n passive: !!opts.passive,\n }\n : !!opts.capture;\n\n let add: string;\n let remove: string;\n if (el['__zone_symbol__addEventListener']) {\n add = '__zone_symbol__addEventListener';\n remove = '__zone_symbol__removeEventListener';\n } else {\n add = 'addEventListener';\n remove = 'removeEventListener';\n }\n\n el[add](eventName, callback, listenerOpts);\n return () => {\n el[remove](eventName, callback, listenerOpts);\n };\n};\n\nconst supportsPassive = (node: Node) => {\n if (_sPassive === undefined) {\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get: () => {\n _sPassive = true;\n },\n });\n node.addEventListener(\n 'optsTest',\n () => {\n return;\n },\n opts\n );\n } catch (e) {\n _sPassive = false;\n }\n }\n return !!_sPassive;\n};\n\nlet _sPassive: boolean | undefined;\n","import { addEventListener } from './listener';\n\nconst MOUSE_WAIT = 2000;\n\nexport const createPointerEvents = (\n el: Node,\n pointerDown: any,\n pointerMove: any,\n pointerUp: any,\n options: {\n passive?: boolean;\n capture?: boolean;\n }\n) => {\n let rmTouchStart: (() => void) | undefined;\n let rmTouchMove: (() => void) | undefined;\n let rmTouchEnd: (() => void) | undefined;\n let rmTouchCancel: (() => void) | undefined;\n let rmMouseStart: (() => void) | undefined;\n let rmMouseMove: (() => void) | undefined;\n let rmMouseUp: (() => void) | undefined;\n let lastTouchEvent = 0;\n\n const handleTouchStart = (ev: any) => {\n lastTouchEvent = Date.now() + MOUSE_WAIT;\n if (!pointerDown(ev)) {\n return;\n }\n if (!rmTouchMove && pointerMove) {\n rmTouchMove = addEventListener(el, 'touchmove', pointerMove, options);\n }\n if (!rmTouchEnd) {\n rmTouchEnd = addEventListener(el, 'touchend', handleTouchEnd, options);\n }\n if (!rmTouchCancel) {\n rmTouchCancel = addEventListener(\n el,\n 'touchcancel',\n handleTouchEnd,\n options\n );\n }\n };\n\n const handleMouseDown = (ev: any) => {\n if (lastTouchEvent > Date.now()) {\n return;\n }\n if (!pointerDown(ev)) {\n return;\n }\n if (!rmMouseMove && pointerMove) {\n rmMouseMove = addEventListener(\n getDocument(el),\n 'mousemove',\n pointerMove,\n options\n );\n }\n if (!rmMouseUp) {\n rmMouseUp = addEventListener(\n getDocument(el),\n 'mouseup',\n handleMouseUp,\n options\n );\n }\n };\n\n const handleTouchEnd = (ev: any) => {\n stopTouch();\n if (pointerUp) {\n pointerUp(ev);\n }\n };\n\n const handleMouseUp = (ev: any) => {\n stopMouse();\n if (pointerUp) {\n pointerUp(ev);\n }\n };\n\n const stopTouch = () => {\n if (rmTouchMove) {\n rmTouchMove();\n }\n if (rmTouchEnd) {\n rmTouchEnd();\n }\n if (rmTouchCancel) {\n rmTouchCancel();\n }\n rmTouchMove = rmTouchEnd = rmTouchCancel = undefined;\n };\n\n const stopMouse = () => {\n if (rmMouseMove) {\n rmMouseMove();\n }\n if (rmMouseUp) {\n rmMouseUp();\n }\n rmMouseMove = rmMouseUp = undefined;\n };\n\n const stop = () => {\n stopTouch();\n stopMouse();\n };\n\n const enable = (isEnabled = true) => {\n if (!isEnabled) {\n if (rmTouchStart) {\n rmTouchStart();\n }\n if (rmMouseStart) {\n rmMouseStart();\n }\n rmTouchStart = rmMouseStart = undefined;\n stop();\n } else {\n if (!rmTouchStart) {\n rmTouchStart = addEventListener(\n el,\n 'touchstart',\n handleTouchStart,\n options\n );\n }\n if (!rmMouseStart) {\n rmMouseStart = addEventListener(\n el,\n 'mousedown',\n handleMouseDown,\n options\n );\n }\n }\n };\n\n const destroy = () => {\n enable(false);\n pointerUp = pointerMove = pointerDown = undefined;\n };\n\n return {\n enable,\n stop,\n destroy,\n };\n};\n\nconst getDocument = (node: Node) => {\n return node instanceof Document ? node : node.ownerDocument;\n};\n\nexport interface PointerEventsConfig {\n element?: HTMLElement;\n pointerDown: (ev: any) => boolean;\n pointerMove?: (ev: any) => void;\n pointerUp?: (ev: any) => void;\n zone?: boolean;\n capture?: boolean;\n passive?: boolean;\n}\n","export interface PanRecognizer {\n start(x: number, y: number): void;\n detect(x: number, y: number): boolean;\n isGesture(): boolean;\n getDirection(): number;\n}\n\nexport const createPanRecognizer = (\n direction: string,\n thresh: number,\n maxAngle: number\n): PanRecognizer => {\n const radians = maxAngle * (Math.PI / 180);\n const isDirX = direction === 'x';\n const maxCosine = Math.cos(radians);\n const threshold = thresh * thresh;\n\n let startX = 0;\n let startY = 0;\n\n let dirty = false;\n let isPan = 0;\n\n return {\n start(x: number, y: number) {\n startX = x;\n startY = y;\n isPan = 0;\n dirty = true;\n },\n\n detect(x: number, y: number): boolean {\n if (!dirty) {\n return false;\n }\n\n const deltaX = x - startX;\n const deltaY = y - startY;\n const distance = deltaX * deltaX + deltaY * deltaY;\n\n if (distance < threshold) {\n return false;\n }\n const hypotenuse = Math.sqrt(distance);\n const cosine = (isDirX ? deltaX : deltaY) / hypotenuse;\n\n if (cosine > maxCosine) {\n isPan = 1;\n } else if (cosine < -maxCosine) {\n isPan = -1;\n } else {\n isPan = 0;\n }\n\n dirty = false;\n return true;\n },\n\n isGesture(): boolean {\n return isPan !== 0;\n },\n\n getDirection(): number {\n return isPan;\n },\n };\n};\n","import { GESTURE_CONTROLLER } from './gesture-controller';\nimport { createPointerEvents } from './pointer-events';\nimport { createPanRecognizer } from './recognizers';\n\nexport const createGesture = (config: GestureConfig): Gesture => {\n let hasCapturedPan = false;\n let hasStartedPan = false;\n let hasFiredStart = true;\n let isMoveQueued = false;\n\n const finalConfig = {\n disableScroll: false,\n direction: 'x',\n gesturePriority: 0,\n passive: true,\n maxAngle: 40,\n threshold: 10,\n\n ...config,\n };\n\n const canStart = finalConfig.canStart;\n const onWillStart = finalConfig.onWillStart;\n const onStart = finalConfig.onStart;\n const onEnd = finalConfig.onEnd;\n const notCaptured = finalConfig.notCaptured;\n const onMove = finalConfig.onMove;\n const threshold = finalConfig.threshold;\n const passive = finalConfig.passive;\n const blurOnStart = finalConfig.blurOnStart;\n\n const detail = {\n type: 'pan',\n startX: 0,\n startY: 0,\n startTime: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n currentTime: 0,\n event: undefined as any,\n data: undefined,\n };\n\n const pan = createPanRecognizer(\n finalConfig.direction,\n finalConfig.threshold,\n finalConfig.maxAngle\n );\n const gesture = GESTURE_CONTROLLER.createGesture({\n name: config.gestureName,\n priority: config.gesturePriority,\n disableScroll: config.disableScroll,\n });\n\n const pointerDown = (ev: UIEvent): boolean => {\n const timeStamp = now(ev);\n if (hasStartedPan || !hasFiredStart) {\n return false;\n }\n\n updateDetail(ev, detail);\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTime = detail.currentTime = timeStamp;\n detail.velocityX = detail.velocityY = detail.deltaX = detail.deltaY = 0;\n detail.event = ev;\n\n // Check if gesture can start\n if (canStart && canStart(detail) === false) {\n return false;\n }\n // Release fallback\n gesture.release();\n\n // Start gesture\n if (!gesture.start()) {\n return false;\n }\n\n hasStartedPan = true;\n if (threshold === 0) {\n return tryToCapturePan();\n }\n pan.start(detail.startX, detail.startY);\n return true;\n };\n\n const pointerMove = (ev: UIEvent) => {\n // fast path, if gesture is currently captured\n // do minimum job to get user-land even dispatched\n if (hasCapturedPan) {\n if (!isMoveQueued && hasFiredStart) {\n isMoveQueued = true;\n calcGestureData(detail, ev);\n requestAnimationFrame(fireOnMove);\n }\n return;\n }\n\n // gesture is currently being detected\n calcGestureData(detail, ev);\n if (pan.detect(detail.currentX, detail.currentY)) {\n if (!pan.isGesture() || !tryToCapturePan()) {\n abortGesture();\n }\n }\n };\n\n const fireOnMove = () => {\n // Since fireOnMove is called inside a RAF, onEnd() might be called,\n // we must double check hasCapturedPan\n if (!hasCapturedPan) {\n return;\n }\n isMoveQueued = false;\n if (onMove) {\n onMove(detail);\n }\n };\n\n const tryToCapturePan = (): boolean => {\n if (gesture && !gesture.capture()) {\n return false;\n }\n hasCapturedPan = true;\n hasFiredStart = false;\n\n // reset start position since the real user-land event starts here\n // If the pan detector threshold is big, not resetting the start position\n // will cause a jump in the animation equal to the detector threshold.\n // the array of positions used to calculate the gesture velocity does not\n // need to be cleaned, more points in the positions array always results in a\n // more accurate value of the velocity.\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTime = detail.currentTime;\n\n if (onWillStart) {\n onWillStart(detail).then(fireOnStart);\n } else {\n fireOnStart();\n }\n return true;\n };\n\n const blurActiveElement = () => {\n /* tslint:disable-next-line */\n if (typeof document !== 'undefined') {\n const activeElement = document.activeElement as HTMLElement | null;\n if (activeElement !== null && activeElement.blur) {\n activeElement.blur();\n }\n }\n };\n\n const fireOnStart = () => {\n if (blurOnStart) {\n blurActiveElement();\n }\n if (onStart) {\n onStart(detail);\n }\n hasFiredStart = true;\n };\n\n const reset = () => {\n hasCapturedPan = false;\n hasStartedPan = false;\n isMoveQueued = false;\n hasFiredStart = true;\n\n gesture.release();\n };\n\n // END *************************\n\n const pointerUp = (ev: UIEvent | undefined) => {\n const tmpHasCaptured = hasCapturedPan;\n const tmpHasFiredStart = hasFiredStart;\n reset();\n\n if (!tmpHasFiredStart) {\n return;\n }\n calcGestureData(detail, ev);\n\n // Try to capture press\n if (tmpHasCaptured) {\n if (onEnd) {\n onEnd(detail);\n }\n return;\n }\n\n // Not captured any event\n if (notCaptured) {\n notCaptured(detail);\n }\n };\n\n const pointerEvents = createPointerEvents(\n finalConfig.el,\n pointerDown,\n pointerMove,\n pointerUp,\n {\n capture: false,\n passive,\n }\n );\n\n const abortGesture = () => {\n reset();\n pointerEvents.stop();\n if (notCaptured) {\n notCaptured(detail);\n }\n };\n\n return {\n enable(enable = true) {\n if (!enable) {\n if (hasCapturedPan) {\n pointerUp(undefined);\n }\n\n reset();\n }\n pointerEvents.enable(enable);\n },\n destroy() {\n gesture.destroy();\n pointerEvents.destroy();\n },\n };\n};\n\nconst calcGestureData = (detail: GestureDetail, ev: UIEvent | undefined) => {\n if (!ev) {\n return;\n }\n const prevX = detail.currentX;\n const prevY = detail.currentY;\n const prevT = detail.currentTime;\n\n updateDetail(ev, detail);\n\n const currentX = detail.currentX;\n const currentY = detail.currentY;\n const timestamp = (detail.currentTime = now(ev));\n const timeDelta = timestamp - prevT;\n if (timeDelta > 0 && timeDelta < 100) {\n const velocityX = (currentX - prevX) / timeDelta;\n const velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n detail.event = ev;\n};\n\nconst updateDetail = (ev: any, detail: GestureDetail) => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n let x = 0;\n let y = 0;\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n x = touch.clientX;\n y = touch.clientY;\n } else if (ev.pageX !== undefined) {\n x = ev.pageX;\n y = ev.pageY;\n }\n }\n detail.currentX = x;\n detail.currentY = y;\n};\n\nconst now = (ev: UIEvent) => {\n return ev.timeStamp || Date.now();\n};\n\nexport interface GestureDetail {\n type: string;\n startX: number;\n startY: number;\n startTime: number;\n currentX: number;\n currentY: number;\n velocityX: number;\n velocityY: number;\n deltaX: number;\n deltaY: number;\n currentTime: number;\n event: UIEvent;\n data?: any;\n}\n\nexport type GestureCallback = (detail: GestureDetail) => boolean | void;\n\nexport interface Gesture {\n enable(enable?: boolean): void;\n destroy(): void;\n}\n\nexport interface GestureConfig {\n el: Node;\n disableScroll?: boolean;\n\n direction?: 'x' | 'y';\n gestureName: string;\n gesturePriority?: number;\n passive?: boolean;\n maxAngle?: number;\n threshold?: number;\n blurOnStart?: boolean;\n\n canStart?: GestureCallback;\n onWillStart?: (_: GestureDetail) => Promise<void>;\n onStart?: GestureCallback;\n onMove?: GestureCallback;\n onEnd?: GestureCallback;\n notCaptured?: GestureCallback;\n}\n\nexport { GESTURE_CONTROLLER };\n"],"version":3}
@@ -57,7 +57,7 @@ const Input = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
57
57
  };
58
58
  this.onInput = (ev) => {
59
59
  const input = ev.target;
60
- this.value = (input === null || input === void 0 ? void 0 : input.value) || '';
60
+ this.value = input?.value || '';
61
61
  this.nanoInput.emit(ev);
62
62
  };
63
63
  this.onBlur = () => {
@@ -142,7 +142,11 @@ const Input = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
142
142
  if (!this.datalist)
143
143
  return;
144
144
  const currDWConfig = this.datalist.dropDownConfig || {};
145
- this.datalist.dropDownConfig = Object.assign(Object.assign({}, currDWConfig), { skidding: -1, tetherTo: this.nativeInputWrap });
145
+ this.datalist.dropDownConfig = {
146
+ ...currDWConfig,
147
+ skidding: -1,
148
+ tetherTo: this.nativeInputWrap,
149
+ };
146
150
  }
147
151
  /**
148
152
  * This will be true when the control is in an invalid state.
@@ -350,16 +354,26 @@ const Input = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
350
354
  rtl,
351
355
  hasHelperEndSlot,
352
356
  }))(this);
353
- const wrapOptions = Object.assign(Object.assign({}, compWrapOptions), { labelId,
357
+ const wrapOptions = {
358
+ ...compWrapOptions,
359
+ labelId,
354
360
  moreId,
355
- helperEndId, hasValue: this.hasValue(), controlId: this.inputId });
361
+ helperEndId,
362
+ hasValue: this.hasValue(),
363
+ controlId: this.inputId,
364
+ };
356
365
  const controlOptions = (({ clearInput, readonly, disabled }) => ({
357
366
  clearInput,
358
367
  readonly,
359
368
  disabled,
360
369
  clearControl: this.clearInput,
361
370
  }))(this);
362
- return (h(Host, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) }, h("div", { style: { width: '100%' } }, h(FormControlWrap, Object.assign({}, wrapOptions), h(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }), this.type !== 'textarea' && (h("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onBlur: this.handleBlur, onKeyDown: this.onKeydown, onInvalid: this.validate })), this.type === 'textarea' && (h("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
371
+ return (h(Host, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: {
372
+ ...createColorClasses(this.color),
373
+ 'has-value': this.hasValue(),
374
+ 'has-focus': this.hasFocus,
375
+ 'is-invalid': this._invalid,
376
+ } }, h("div", { style: { width: '100%' } }, h(FormControlWrap, { ...wrapOptions }, h(FormControl, { ...controlOptions, onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }, this.type !== 'textarea' && (h("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onBlur: this.handleBlur, onKeyDown: this.onKeydown, onInvalid: this.validate })), this.type === 'textarea' && (h("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
363
377
  'input__native-ctrl': true,
364
378
  input__resizable: this.resize === 'true',
365
379
  }, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate, onBlur: this.handleBlur })))), h("slot", null))));