voyager-ionic-core 7.4.3 → 7.4.4

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 (344) hide show
  1. package/components/animation.js +60 -1
  2. package/components/checkbox.js +3 -0
  3. package/components/ion-menu.js +51 -19
  4. package/components/ion-select.js +31 -17
  5. package/components/ion-toggle.js +3 -0
  6. package/components/radio-group.js +1 -1
  7. package/components/radio.js +4 -1
  8. package/components/swipe-back.js +4 -0
  9. package/dist/cjs/{animation-2bb33618.js → animation-c8bdd3c7.js} +60 -1
  10. package/dist/cjs/{app-globals-84b6a756.js → app-globals-fe1ad535.js} +1 -1
  11. package/dist/cjs/{button-active-c358e83c.js → button-active-0932cee9.js} +1 -1
  12. package/dist/cjs/{index-14a4821e.js → index-305a23dc.js} +95 -51
  13. package/dist/cjs/{index-acf6bdf0.js → index-d3568232.js} +3 -3
  14. package/dist/cjs/{index-97a3eade.js → index-f94cbab1.js} +2 -2
  15. package/dist/cjs/index.cjs.js +8 -8
  16. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  17. package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
  18. package/dist/cjs/ion-alert.cjs.entry.js +5 -5
  19. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  20. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  21. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  22. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  23. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  24. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  25. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  26. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -2
  27. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  28. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  30. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  31. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  32. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  33. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  34. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  36. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  37. package/dist/cjs/ion-loading.cjs.entry.js +4 -4
  38. package/dist/cjs/ion-menu_3.cjs.entry.js +56 -24
  39. package/dist/cjs/ion-modal.cjs.entry.js +5 -5
  40. package/dist/cjs/ion-nav_2.cjs.entry.js +4 -4
  41. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  42. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  43. package/dist/cjs/ion-popover.cjs.entry.js +5 -5
  44. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  45. package/dist/cjs/ion-radio_2.cjs.entry.js +7 -4
  46. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
  48. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  49. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-select_3.cjs.entry.js +34 -20
  54. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  56. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  57. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  59. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-toast.cjs.entry.js +4 -4
  61. package/dist/cjs/ion-toggle.cjs.entry.js +5 -2
  62. package/dist/cjs/{ionic-global-a71608df.js → ionic-global-fb752503.js} +1 -1
  63. package/dist/cjs/ionic.cjs.js +4 -4
  64. package/dist/cjs/{ios.transition-e31445c2.js → ios.transition-7d688757.js} +3 -3
  65. package/dist/cjs/loader.cjs.js +3 -3
  66. package/dist/cjs/{md.transition-fb13ac79.js → md.transition-d77d3c2e.js} +3 -3
  67. package/dist/cjs/{overlays-efc9d511.js → overlays-7e1a08fa.js} +1 -1
  68. package/dist/cjs/{status-tap-8c22e017.js → status-tap-778e8054.js} +1 -1
  69. package/dist/cjs/{swipe-back-d97c74d1.js → swipe-back-7e843e77.js} +4 -0
  70. package/dist/collection/collection-manifest.json +1 -1
  71. package/dist/collection/components/checkbox/checkbox.js +3 -0
  72. package/dist/collection/components/menu/menu.js +51 -19
  73. package/dist/collection/components/menu/test/disable/menu.e2e.js +55 -0
  74. package/dist/collection/components/radio/radio.js +4 -1
  75. package/dist/collection/components/radio-group/radio-group.js +1 -1
  76. package/dist/collection/components/select/select.js +31 -17
  77. package/dist/collection/components/select/test/disabled/select.e2e.js +30 -0
  78. package/dist/collection/components/toggle/toggle.js +3 -0
  79. package/dist/collection/utils/animation/animation.js +60 -1
  80. package/dist/collection/utils/gesture/swipe-back.js +4 -0
  81. package/dist/docs.json +2 -2
  82. package/dist/esm/{animation-a1d9e088.js → animation-92066c62.js} +60 -1
  83. package/dist/esm/{app-globals-df292a32.js → app-globals-ec816a70.js} +1 -1
  84. package/dist/esm/{button-active-7180a130.js → button-active-5136c12d.js} +1 -1
  85. package/dist/esm/{index-32c6828b.js → index-641aeeed.js} +3 -3
  86. package/dist/esm/{index-cb894020.js → index-b49b173c.js} +95 -51
  87. package/dist/esm/{index-3d6aefa2.js → index-d78b533e.js} +2 -2
  88. package/dist/esm/index.js +8 -8
  89. package/dist/esm/ion-accordion_2.entry.js +2 -2
  90. package/dist/esm/ion-action-sheet.entry.js +5 -5
  91. package/dist/esm/ion-alert.entry.js +5 -5
  92. package/dist/esm/ion-app_8.entry.js +5 -5
  93. package/dist/esm/ion-avatar_3.entry.js +2 -2
  94. package/dist/esm/ion-back-button.entry.js +2 -2
  95. package/dist/esm/ion-backdrop.entry.js +2 -2
  96. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  97. package/dist/esm/ion-button_2.entry.js +2 -2
  98. package/dist/esm/ion-card_5.entry.js +2 -2
  99. package/dist/esm/ion-checkbox.entry.js +5 -2
  100. package/dist/esm/ion-chip.entry.js +2 -2
  101. package/dist/esm/ion-col_3.entry.js +2 -2
  102. package/dist/esm/ion-datetime-button.entry.js +2 -2
  103. package/dist/esm/ion-datetime_3.entry.js +4 -4
  104. package/dist/esm/ion-fab_3.entry.js +2 -2
  105. package/dist/esm/ion-img.entry.js +2 -2
  106. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  107. package/dist/esm/ion-input.entry.js +2 -2
  108. package/dist/esm/ion-item-option_3.entry.js +2 -2
  109. package/dist/esm/ion-item_8.entry.js +2 -2
  110. package/dist/esm/ion-loading.entry.js +4 -4
  111. package/dist/esm/ion-menu_3.entry.js +56 -24
  112. package/dist/esm/ion-modal.entry.js +5 -5
  113. package/dist/esm/ion-nav_2.entry.js +4 -4
  114. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  115. package/dist/esm/ion-picker-internal.entry.js +1 -1
  116. package/dist/esm/ion-popover.entry.js +5 -5
  117. package/dist/esm/ion-progress-bar.entry.js +2 -2
  118. package/dist/esm/ion-radio_2.entry.js +7 -4
  119. package/dist/esm/ion-range.entry.js +2 -2
  120. package/dist/esm/ion-refresher_2.entry.js +3 -3
  121. package/dist/esm/ion-reorder_2.entry.js +2 -2
  122. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  123. package/dist/esm/ion-route_4.entry.js +2 -2
  124. package/dist/esm/ion-searchbar.entry.js +2 -2
  125. package/dist/esm/ion-segment_2.entry.js +2 -2
  126. package/dist/esm/ion-select_3.entry.js +34 -20
  127. package/dist/esm/ion-spinner.entry.js +2 -2
  128. package/dist/esm/ion-split-pane.entry.js +2 -2
  129. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  130. package/dist/esm/ion-tab_2.entry.js +1 -1
  131. package/dist/esm/ion-text.entry.js +2 -2
  132. package/dist/esm/ion-textarea.entry.js +2 -2
  133. package/dist/esm/ion-toast.entry.js +4 -4
  134. package/dist/esm/ion-toggle.entry.js +5 -2
  135. package/dist/esm/{ionic-global-63a8d8c9.js → ionic-global-246ca78f.js} +1 -1
  136. package/dist/esm/ionic.js +5 -5
  137. package/dist/esm/{ios.transition-d8223b18.js → ios.transition-04c9a97a.js} +3 -3
  138. package/dist/esm/loader.js +4 -4
  139. package/dist/esm/{md.transition-caed184e.js → md.transition-67a8aabd.js} +3 -3
  140. package/dist/esm/{overlays-84621c0a.js → overlays-2fa52617.js} +1 -1
  141. package/dist/esm/{status-tap-73e982b6.js → status-tap-9aeeaca5.js} +1 -1
  142. package/dist/esm/{swipe-back-6e8158bc.js → swipe-back-cd4295f3.js} +4 -0
  143. package/dist/esm-es5/animation-92066c62.js +4 -0
  144. package/dist/esm-es5/app-globals-ec816a70.js +4 -0
  145. package/dist/esm-es5/{button-active-7180a130.js → button-active-5136c12d.js} +1 -1
  146. package/dist/esm-es5/{index-32c6828b.js → index-641aeeed.js} +1 -1
  147. package/dist/esm-es5/index-b49b173c.js +5 -0
  148. package/dist/esm-es5/{index-3d6aefa2.js → index-d78b533e.js} +1 -1
  149. package/dist/esm-es5/index.js +1 -1
  150. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  151. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  152. package/dist/esm-es5/ion-alert.entry.js +1 -1
  153. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  154. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  155. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  156. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  157. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  158. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  159. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  160. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  161. package/dist/esm-es5/ion-chip.entry.js +1 -1
  162. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  163. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  164. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  165. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  166. package/dist/esm-es5/ion-img.entry.js +1 -1
  167. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  168. package/dist/esm-es5/ion-input.entry.js +1 -1
  169. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  170. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  171. package/dist/esm-es5/ion-loading.entry.js +1 -1
  172. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  173. package/dist/esm-es5/ion-modal.entry.js +1 -1
  174. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  175. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  176. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  177. package/dist/esm-es5/ion-popover.entry.js +1 -1
  178. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  179. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  180. package/dist/esm-es5/ion-range.entry.js +1 -1
  181. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  182. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  183. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  184. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  185. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  186. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  187. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  188. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  189. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  190. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  191. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  192. package/dist/esm-es5/ion-text.entry.js +1 -1
  193. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  194. package/dist/esm-es5/ion-toast.entry.js +1 -1
  195. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  196. package/dist/esm-es5/{ionic-global-63a8d8c9.js → ionic-global-246ca78f.js} +1 -1
  197. package/dist/esm-es5/ionic.js +1 -1
  198. package/dist/esm-es5/{ios.transition-d8223b18.js → ios.transition-04c9a97a.js} +1 -1
  199. package/dist/esm-es5/loader.js +1 -1
  200. package/dist/esm-es5/{md.transition-caed184e.js → md.transition-67a8aabd.js} +1 -1
  201. package/dist/esm-es5/{overlays-84621c0a.js → overlays-2fa52617.js} +1 -1
  202. package/dist/esm-es5/{status-tap-73e982b6.js → status-tap-9aeeaca5.js} +1 -1
  203. package/dist/ionic/index.esm.js +1 -1
  204. package/dist/ionic/ionic.esm.js +1 -1
  205. package/dist/ionic/ionic.js +1 -1
  206. package/dist/ionic/p-015187e5.system.js +4 -0
  207. package/dist/ionic/{p-30b04d8d.js → p-02a4e81a.js} +1 -1
  208. package/dist/ionic/{p-89e3d112.system.entry.js → p-03c381ec.system.entry.js} +1 -1
  209. package/dist/ionic/{p-9e727d1d.entry.js → p-048f1ebe.entry.js} +1 -1
  210. package/dist/ionic/{p-ec29338e.entry.js → p-04e7c8fd.entry.js} +1 -1
  211. package/dist/ionic/{p-043e8328.system.js → p-05ae600a.system.js} +1 -1
  212. package/dist/ionic/p-06ac429a.js +5 -0
  213. package/dist/ionic/p-0c37546b.system.entry.js +4 -0
  214. package/dist/ionic/{p-7887ac7a.entry.js → p-108f9d49.entry.js} +1 -1
  215. package/dist/ionic/{p-e40b2cb4.system.entry.js → p-117cd69f.system.entry.js} +1 -1
  216. package/dist/ionic/{p-e263255c.system.entry.js → p-1289b3b5.system.entry.js} +1 -1
  217. package/dist/ionic/p-13d6e57a.js +4 -0
  218. package/dist/ionic/{p-da024961.entry.js → p-164b0e76.entry.js} +1 -1
  219. package/dist/ionic/{p-8957b1de.system.entry.js → p-170e9de0.system.entry.js} +1 -1
  220. package/dist/ionic/{p-8a289322.js → p-181b7c2a.js} +1 -1
  221. package/dist/ionic/{p-23e76249.entry.js → p-19384b9e.entry.js} +1 -1
  222. package/dist/ionic/p-1c82e9ff.js +4 -0
  223. package/dist/ionic/{p-a4e95028.system.entry.js → p-1d0aa82f.system.entry.js} +1 -1
  224. package/dist/ionic/{p-9201a4d3.entry.js → p-1ecba429.entry.js} +1 -1
  225. package/dist/ionic/{p-3db27dec.entry.js → p-1f81b5be.entry.js} +1 -1
  226. package/dist/ionic/{p-6db9035a.system.entry.js → p-238f0ac5.system.entry.js} +1 -1
  227. package/dist/ionic/{p-37fc0d22.system.entry.js → p-2784263e.system.entry.js} +1 -1
  228. package/dist/ionic/{p-8f36cde3.system.entry.js → p-29073efe.system.entry.js} +1 -1
  229. package/dist/ionic/p-29e3a9bb.entry.js +4 -0
  230. package/dist/ionic/{p-63f39d2f.entry.js → p-2a7c0093.entry.js} +1 -1
  231. package/dist/ionic/{p-007168b8.system.entry.js → p-32717950.system.entry.js} +1 -1
  232. package/dist/ionic/{p-a0e2f6d8.entry.js → p-32d364f0.entry.js} +1 -1
  233. package/dist/ionic/{p-c09e1da9.system.entry.js → p-33a8349a.system.entry.js} +1 -1
  234. package/dist/ionic/{p-a51f5932.entry.js → p-35818410.entry.js} +1 -1
  235. package/dist/ionic/{p-96ad49f1.entry.js → p-37448ac1.entry.js} +1 -1
  236. package/dist/ionic/{p-3e6b0330.system.entry.js → p-38ccfd71.system.entry.js} +1 -1
  237. package/dist/ionic/{p-6f3099b6.system.entry.js → p-3a58e3a4.system.entry.js} +1 -1
  238. package/dist/ionic/{p-c2d6b2fb.entry.js → p-3c2c6fce.entry.js} +1 -1
  239. package/dist/ionic/{p-9a6f6789.system.entry.js → p-3f3da911.system.entry.js} +1 -1
  240. package/dist/ionic/p-446230d7.js +4 -0
  241. package/dist/ionic/{p-d511de89.system.entry.js → p-45f5c8ba.system.entry.js} +1 -1
  242. package/dist/ionic/{p-2992f2a8.entry.js → p-47db15c6.entry.js} +1 -1
  243. package/dist/ionic/{p-21085f64.system.entry.js → p-4811e4af.system.entry.js} +1 -1
  244. package/dist/ionic/{p-dd0c00ed.entry.js → p-4b8db805.entry.js} +1 -1
  245. package/dist/ionic/{p-ec451ef7.system.entry.js → p-4bb26b01.system.entry.js} +1 -1
  246. package/dist/ionic/{p-28678af4.system.entry.js → p-4d6ac0fe.system.entry.js} +1 -1
  247. package/dist/ionic/p-4dd96c8d.entry.js +4 -0
  248. package/dist/ionic/{p-0793ebfd.entry.js → p-4e6e43c1.entry.js} +1 -1
  249. package/dist/ionic/{p-a760fd9a.system.js → p-51269f3b.system.js} +1 -1
  250. package/dist/ionic/{p-abfd1f2e.system.entry.js → p-54f6cd27.system.entry.js} +1 -1
  251. package/dist/ionic/{p-b27772bf.entry.js → p-55d3a9b2.entry.js} +1 -1
  252. package/dist/ionic/{p-f4267847.system.entry.js → p-576e6d0f.system.entry.js} +1 -1
  253. package/dist/ionic/{p-6ce891b2.entry.js → p-5b32b053.entry.js} +1 -1
  254. package/dist/ionic/{p-b79eb3cd.entry.js → p-5b976d70.entry.js} +1 -1
  255. package/dist/ionic/p-5bc5008c.entry.js +4 -0
  256. package/dist/ionic/{p-73eba881.system.js → p-5c3e72a8.system.js} +1 -1
  257. package/dist/ionic/{p-d580cbb7.system.entry.js → p-5c651aab.system.entry.js} +1 -1
  258. package/dist/ionic/{p-c381a9a9.system.entry.js → p-5cd791b3.system.entry.js} +1 -1
  259. package/dist/ionic/p-5ece7025.system.js +4 -0
  260. package/dist/ionic/{p-018ad59f.entry.js → p-5efb899f.entry.js} +1 -1
  261. package/dist/ionic/{p-6c7d61b9.system.entry.js → p-6129af0a.system.entry.js} +1 -1
  262. package/dist/ionic/{p-26fbffd4.system.js → p-629aa3fd.system.js} +1 -1
  263. package/dist/ionic/{p-68a3da51.js → p-63505fbb.js} +1 -1
  264. package/dist/ionic/{p-67e21699.entry.js → p-64e20cd9.entry.js} +1 -1
  265. package/dist/ionic/p-65a5761f.js +4 -0
  266. package/dist/ionic/{p-fb18f74b.system.entry.js → p-6ac3e877.system.entry.js} +1 -1
  267. package/dist/ionic/{p-c8ec0d79.system.js → p-6ba7fad7.system.js} +1 -1
  268. package/dist/ionic/{p-92d72ad8.entry.js → p-6ea2e653.entry.js} +1 -1
  269. package/dist/ionic/{p-a9b13f18.system.entry.js → p-6f8a95a3.system.entry.js} +1 -1
  270. package/dist/ionic/{p-f6f4d4bb.system.entry.js → p-6fb80ef3.system.entry.js} +1 -1
  271. package/dist/ionic/{p-b4c0e9ee.entry.js → p-706a0391.entry.js} +1 -1
  272. package/dist/ionic/{p-7fd0f045.system.entry.js → p-72aea40e.system.entry.js} +1 -1
  273. package/dist/ionic/p-73ed9a91.js +4 -0
  274. package/dist/ionic/{p-7a590a28.js → p-76378400.js} +1 -1
  275. package/dist/ionic/{p-3dce88bf.entry.js → p-818b2e75.entry.js} +1 -1
  276. package/dist/ionic/p-8297652e.entry.js +4 -0
  277. package/dist/ionic/{p-b9e2aede.entry.js → p-839276d4.entry.js} +1 -1
  278. package/dist/ionic/{p-b4daca17.system.entry.js → p-8a2801f1.system.entry.js} +1 -1
  279. package/dist/ionic/{p-00cf2d6c.js → p-8e24ebbc.js} +1 -1
  280. package/dist/ionic/{p-037e2738.system.entry.js → p-8ee012cb.system.entry.js} +1 -1
  281. package/dist/ionic/{p-f1c2678b.system.entry.js → p-908720f3.system.entry.js} +1 -1
  282. package/dist/ionic/{p-7cad90ed.entry.js → p-914ac0fc.entry.js} +1 -1
  283. package/dist/ionic/{p-9f9efb31.system.js → p-939e0fa1.system.js} +1 -1
  284. package/dist/ionic/{p-e6d2cca2.system.entry.js → p-95b14c73.system.entry.js} +1 -1
  285. package/dist/ionic/{p-ca655a7c.entry.js → p-96ba8eac.entry.js} +1 -1
  286. package/dist/ionic/{p-5fd0a13e.system.entry.js → p-99dfa53f.system.entry.js} +1 -1
  287. package/dist/ionic/{p-a8403bed.system.entry.js → p-9b4a77fc.system.entry.js} +1 -1
  288. package/dist/ionic/{p-50d83224.entry.js → p-a04bfada.entry.js} +1 -1
  289. package/dist/ionic/p-a18ec02b.entry.js +4 -0
  290. package/dist/ionic/{p-95e44641.system.entry.js → p-b109a3d7.system.entry.js} +1 -1
  291. package/dist/ionic/{p-fbc7995a.system.entry.js → p-b3690814.system.entry.js} +1 -1
  292. package/dist/ionic/{p-534a1cbc.system.js → p-b3c68723.system.js} +1 -1
  293. package/dist/ionic/{p-4e76e29a.system.entry.js → p-b61a2fa0.system.entry.js} +1 -1
  294. package/dist/ionic/{p-f37d6823.system.entry.js → p-beb864e4.system.entry.js} +1 -1
  295. package/dist/ionic/{p-a732cfec.system.js → p-c3efbcf5.system.js} +1 -1
  296. package/dist/ionic/{p-58565369.system.entry.js → p-c48fc95d.system.entry.js} +1 -1
  297. package/dist/ionic/{p-5c24c115.system.js → p-c49672d8.system.js} +1 -1
  298. package/dist/ionic/{p-57743e20.entry.js → p-c4a5de01.entry.js} +1 -1
  299. package/dist/ionic/{p-1d2d1ab5.system.entry.js → p-c7428627.system.entry.js} +1 -1
  300. package/dist/ionic/{p-84549737.system.entry.js → p-cf0c93e3.system.entry.js} +1 -1
  301. package/dist/ionic/{p-7d6f2bbb.system.entry.js → p-d0ad0430.system.entry.js} +1 -1
  302. package/dist/ionic/{p-7b15d413.entry.js → p-d35217be.entry.js} +1 -1
  303. package/dist/ionic/{p-e88ed929.system.entry.js → p-d55c9f92.system.entry.js} +1 -1
  304. package/dist/ionic/{p-b2397f35.entry.js → p-d7b8d224.entry.js} +1 -1
  305. package/dist/ionic/{p-0e070fbe.entry.js → p-d89d0de0.entry.js} +1 -1
  306. package/dist/ionic/{p-fa06c407.entry.js → p-db1a1e00.entry.js} +1 -1
  307. package/dist/ionic/{p-4b23f472.entry.js → p-deb6ddad.entry.js} +1 -1
  308. package/dist/ionic/{p-9d0916cb.system.js → p-df5fe0be.system.js} +1 -1
  309. package/dist/ionic/{p-d90f0779.system.entry.js → p-e0f52215.system.entry.js} +1 -1
  310. package/dist/ionic/{p-1caf1ec6.entry.js → p-e1ac688a.entry.js} +1 -1
  311. package/dist/ionic/{p-d2a278b1.entry.js → p-e2fd0895.entry.js} +1 -1
  312. package/dist/ionic/{p-9e91c83f.system.entry.js → p-eab10949.system.entry.js} +1 -1
  313. package/dist/ionic/{p-ac32f6ce.entry.js → p-eac263dd.entry.js} +1 -1
  314. package/dist/ionic/{p-a1d7f4ef.entry.js → p-ec9052a4.entry.js} +1 -1
  315. package/dist/ionic/{p-a6c52452.entry.js → p-f588e951.entry.js} +1 -1
  316. package/dist/ionic/{p-e3272ed8.entry.js → p-f623aa6d.entry.js} +1 -1
  317. package/dist/ionic/{p-ab7edc16.system.entry.js → p-f960fd84.system.entry.js} +1 -1
  318. package/dist/ionic/{p-57c5eca2.system.js → p-fbcb157b.system.js} +1 -1
  319. package/dist/ionic/{p-4c20879c.entry.js → p-fccfe602.entry.js} +1 -1
  320. package/dist/ionic/{p-3bf7c0dc.entry.js → p-fcf47f80.entry.js} +1 -1
  321. package/dist/ionic/{p-b3bcef34.system.entry.js → p-ff555f6f.system.entry.js} +1 -1
  322. package/dist/types/components/menu/menu.d.ts +8 -1
  323. package/hydrate/index.js +197 -72
  324. package/package.json +3 -2
  325. package/dist/esm-es5/animation-a1d9e088.js +0 -4
  326. package/dist/esm-es5/app-globals-df292a32.js +0 -4
  327. package/dist/esm-es5/index-cb894020.js +0 -5
  328. package/dist/ionic/p-15278928.entry.js +0 -4
  329. package/dist/ionic/p-1c59608c.system.entry.js +0 -4
  330. package/dist/ionic/p-469d6a98.entry.js +0 -4
  331. package/dist/ionic/p-4af11953.entry.js +0 -4
  332. package/dist/ionic/p-6641d7fa.js +0 -4
  333. package/dist/ionic/p-68b405cc.entry.js +0 -4
  334. package/dist/ionic/p-6b2641f6.system.js +0 -4
  335. package/dist/ionic/p-7c901810.system.js +0 -4
  336. package/dist/ionic/p-8c17d825.js +0 -4
  337. package/dist/ionic/p-903c36fe.js +0 -5
  338. package/dist/ionic/p-90ebbca0.entry.js +0 -4
  339. package/dist/ionic/p-94a4ce40.js +0 -4
  340. package/dist/ionic/p-9649c54e.js +0 -4
  341. package/dist/ionic/p-b370d1b4.js +0 -4
  342. /package/dist/esm-es5/{swipe-back-6e8158bc.js → swipe-back-cd4295f3.js} +0 -0
  343. /package/dist/ionic/{p-0e9a055c.js → p-32083c2d.js} +0 -0
  344. /package/dist/ionic/{p-eacb02b2.system.js → p-b912e055.system.js} +0 -0
@@ -159,6 +159,7 @@ const createAnimation = (animationId) => {
159
159
  const id = animationId;
160
160
  const onFinishCallbacks = [];
161
161
  const onFinishOneTimeCallbacks = [];
162
+ const onStopOneTimeCallbacks = [];
162
163
  const elements = [];
163
164
  const childAnimations = [];
164
165
  const stylesheets = [];
@@ -216,6 +217,28 @@ const createAnimation = (animationId) => {
216
217
  const isRunning = () => {
217
218
  return numAnimationsRunning !== 0 && !paused;
218
219
  };
220
+ /**
221
+ * @internal
222
+ * Remove a callback from a chosen callback array
223
+ * @param callbackToRemove: A reference to the callback that should be removed
224
+ * @param callbackObjects: An array of callbacks that callbackToRemove should be removed from.
225
+ */
226
+ const clearCallback = (callbackToRemove, callbackObjects) => {
227
+ const index = callbackObjects.findIndex((callbackObject) => callbackObject.c === callbackToRemove);
228
+ if (index > -1) {
229
+ callbackObjects.splice(index, 1);
230
+ }
231
+ };
232
+ /**
233
+ * @internal
234
+ * Add a callback to be fired when an animation is stopped/cancelled.
235
+ * @param callback: A reference to the callback that should be fired
236
+ * @param opts: Any options associated with this particular callback
237
+ */
238
+ const onStop = (callback, opts) => {
239
+ onStopOneTimeCallbacks.push({ c: callback, o: opts });
240
+ return ani;
241
+ };
219
242
  const onFinish = (callback, opts) => {
220
243
  const callbacks = (opts === null || opts === void 0 ? void 0 : opts.oneTimeCallback) ? onFinishOneTimeCallbacks : onFinishCallbacks;
221
244
  callbacks.push({ c: callback, o: opts });
@@ -884,7 +907,33 @@ const createAnimation = (animationId) => {
884
907
  numAnimationsRunning = childAnimations.length + 1;
885
908
  shouldCalculateNumAnimations = false;
886
909
  }
887
- onFinish(() => resolve(), { oneTimeCallback: true });
910
+ /**
911
+ * When one of these callbacks fires we
912
+ * need to clear the other's callback otherwise
913
+ * you can potentially get these callbacks
914
+ * firing multiple times if the play method
915
+ * is subsequently called.
916
+ * Example:
917
+ * animation.play() (onStop and onFinish callbacks are registered)
918
+ * animation.stop() (onStop callback is fired, onFinish is not)
919
+ * animation.play() (onStop and onFinish callbacks are registered)
920
+ * Total onStop callbacks: 1
921
+ * Total onFinish callbacks: 2
922
+ */
923
+ const onStopCallback = () => {
924
+ clearCallback(onFinishCallback, onFinishOneTimeCallbacks);
925
+ resolve();
926
+ };
927
+ const onFinishCallback = () => {
928
+ clearCallback(onStopCallback, onStopOneTimeCallbacks);
929
+ resolve();
930
+ };
931
+ /**
932
+ * The play method resolves when an animation
933
+ * run either finishes or is cancelled.
934
+ */
935
+ onFinish(onFinishCallback, { oneTimeCallback: true });
936
+ onStop(onStopCallback, { oneTimeCallback: true });
888
937
  childAnimations.forEach((animation) => {
889
938
  animation.play();
890
939
  });
@@ -897,6 +946,14 @@ const createAnimation = (animationId) => {
897
946
  paused = false;
898
947
  });
899
948
  };
949
+ /**
950
+ * Stops an animation and resets it state to the
951
+ * beginning. This does not fire any onFinish
952
+ * callbacks because the animation did not finish.
953
+ * However, since the animation was not destroyed
954
+ * (i.e. the animation could run again) we do not
955
+ * clear the onFinish callbacks.
956
+ */
900
957
  const stop = () => {
901
958
  childAnimations.forEach((animation) => {
902
959
  animation.stop();
@@ -906,6 +963,8 @@ const createAnimation = (animationId) => {
906
963
  initialized = false;
907
964
  }
908
965
  resetFlags();
966
+ onStopOneTimeCallbacks.forEach((onStopCallback) => onStopCallback.c(0, ani));
967
+ onStopOneTimeCallbacks.length = 0;
909
968
  };
910
969
  const from = (property, value) => {
911
970
  const firstFrame = _keyframes[0];
@@ -52,6 +52,9 @@ const Checkbox = /*@__PURE__*/ proxyCustomElement(class Checkbox extends HTMLEle
52
52
  this.ionBlur.emit();
53
53
  };
54
54
  this.onClick = (ev) => {
55
+ if (this.disabled) {
56
+ return;
57
+ }
55
58
  this.toggleChecked(ev);
56
59
  };
57
60
  this.color = undefined;
@@ -33,6 +33,14 @@ const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends HTMLElement {
33
33
  this.lastOnEnd = 0;
34
34
  this.blocker = GESTURE_CONTROLLER.createBlocker({ disableScroll: true });
35
35
  this.didLoad = false;
36
+ /**
37
+ * Flag used to determine if an open/close
38
+ * operation was cancelled. For example, if
39
+ * an app calls "menu.open" then disables the menu
40
+ * part way through the animation, then this would
41
+ * be considered a cancelled operation.
42
+ */
43
+ this.operationCancelled = false;
36
44
  this.isAnimating = false;
37
45
  this._isOpen = false;
38
46
  this.inheritedAttributes = {};
@@ -301,6 +309,15 @@ const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends HTMLElement {
301
309
  this.beforeAnimation(shouldOpen);
302
310
  await this.loadAnimation();
303
311
  await this.startAnimation(shouldOpen, animated);
312
+ /**
313
+ * If the animation was cancelled then
314
+ * return false because the operation
315
+ * did not succeed.
316
+ */
317
+ if (this.operationCancelled) {
318
+ this.operationCancelled = false;
319
+ return false;
320
+ }
304
321
  this.afterAnimation(shouldOpen);
305
322
  return true;
306
323
  }
@@ -337,18 +354,23 @@ const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends HTMLElement {
337
354
  const easingReverse = mode === 'ios' ? iosEasingReverse : mdEasingReverse;
338
355
  const ani = this.animation
339
356
  .direction(isReversed ? 'reverse' : 'normal')
340
- .easing(isReversed ? easingReverse : easing)
341
- .onFinish(() => {
342
- if (ani.getDirection() === 'reverse') {
343
- ani.direction('normal');
344
- }
345
- });
357
+ .easing(isReversed ? easingReverse : easing);
346
358
  if (animated) {
347
359
  await ani.play();
348
360
  }
349
361
  else {
350
362
  ani.play({ sync: true });
351
363
  }
364
+ /**
365
+ * We run this after the play invocation
366
+ * instead of using ani.onFinish so that
367
+ * multiple onFinish callbacks do not get
368
+ * run if an animation is played, stopped,
369
+ * and then played again.
370
+ */
371
+ if (ani.getDirection() === 'reverse') {
372
+ ani.direction('normal');
373
+ }
352
374
  }
353
375
  _isActive() {
354
376
  return !this.disabled && !this.isPaneVisible;
@@ -485,7 +507,6 @@ const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends HTMLElement {
485
507
  }
486
508
  afterAnimation(isOpen) {
487
509
  var _a;
488
- assert(this.isAnimating, '_before() should be called while animating');
489
510
  // keep opening/closing the menu disabled for a touch more yet
490
511
  // only add listeners/css if it's enabled and isOpen
491
512
  // and only remove listeners/css if it's not open
@@ -544,10 +565,29 @@ const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends HTMLElement {
544
565
  if (this.gesture) {
545
566
  this.gesture.enable(isActive && this.swipeGesture);
546
567
  }
547
- // Close menu immediately
548
- if (!isActive && this._isOpen) {
549
- // close if this menu is open, and should not be enabled
550
- this.forceClosing();
568
+ /**
569
+ * If the menu is disabled but it is still open
570
+ * then we should close the menu immediately.
571
+ * Additionally, if the menu is in the process
572
+ * of animating {open, close} and the menu is disabled
573
+ * then it should still be closed immediately.
574
+ */
575
+ if (!isActive) {
576
+ /**
577
+ * It is possible to disable the menu while
578
+ * it is mid-animation. When this happens, we
579
+ * need to set the operationCancelled flag
580
+ * so that this._setOpen knows to return false
581
+ * and not run the "afterAnimation" callback.
582
+ */
583
+ if (this.isAnimating) {
584
+ this.operationCancelled = true;
585
+ }
586
+ /**
587
+ * If the menu is disabled then we should
588
+ * forcibly close the menu even if it is open.
589
+ */
590
+ this.afterAnimation(false);
551
591
  }
552
592
  if (doc === null || doc === void 0 ? void 0 : doc.contains(this.el)) {
553
593
  /**
@@ -560,14 +600,6 @@ const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends HTMLElement {
560
600
  menuController._setActiveMenu(this);
561
601
  }
562
602
  }
563
- assert(!this.isAnimating, 'can not be animating');
564
- }
565
- forceClosing() {
566
- assert(this._isOpen, 'menu cannot be closed');
567
- this.isAnimating = true;
568
- const ani = this.animation.direction('reverse');
569
- ani.play({ sync: true });
570
- this.afterAnimation(false);
571
603
  }
572
604
  render() {
573
605
  const { type, disabled, isPaneVisible, inheritedAttributes, side } = this;
@@ -137,25 +137,39 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
137
137
  await overlay.present();
138
138
  // focus selected option for popovers
139
139
  if (this.interface === 'popover') {
140
- let indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
141
- indexOfSelected = indexOfSelected > -1 ? indexOfSelected : 0; // default to first option if nothing selected
142
- const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
143
- if (selectedItem) {
144
- focusElement(selectedItem);
140
+ const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
141
+ if (indexOfSelected > -1) {
142
+ const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
143
+ if (selectedItem) {
144
+ focusElement(selectedItem);
145
+ /**
146
+ * Browsers such as Firefox do not
147
+ * correctly delegate focus when manually
148
+ * focusing an element with delegatesFocus.
149
+ * We work around this by manually focusing
150
+ * the interactive element.
151
+ * ion-radio and ion-checkbox are the only
152
+ * elements that ion-select-popover uses, so
153
+ * we only need to worry about those two components
154
+ * when focusing.
155
+ */
156
+ const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
157
+ if (interactiveEl) {
158
+ interactiveEl.focus();
159
+ }
160
+ }
161
+ }
162
+ else {
145
163
  /**
146
- * Browsers such as Firefox do not
147
- * correctly delegate focus when manually
148
- * focusing an element with delegatesFocus.
149
- * We work around this by manually focusing
150
- * the interactive element.
151
- * ion-radio and ion-checkbox are the only
152
- * elements that ion-select-popover uses, so
153
- * we only need to worry about those two components
154
- * when focusing.
164
+ * If no value is set then focus the first enabled option.
155
165
  */
156
- const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
157
- if (interactiveEl) {
158
- interactiveEl.focus();
166
+ const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
167
+ if (firstEnabledOption) {
168
+ focusElement(firstEnabledOption.closest('ion-item'));
169
+ /**
170
+ * Focus the option for the same reason as we do above.
171
+ */
172
+ firstEnabledOption.focus();
159
173
  }
160
174
  }
161
175
  }
@@ -48,6 +48,9 @@ const Toggle = /*@__PURE__*/ proxyCustomElement(class Toggle extends HTMLElement
48
48
  }
49
49
  };
50
50
  this.onClick = (ev) => {
51
+ if (this.disabled) {
52
+ return;
53
+ }
51
54
  ev.preventDefault();
52
55
  if (this.lastDrag + 300 < Date.now()) {
53
56
  this.toggleChecked();
@@ -38,7 +38,7 @@ const RadioGroup = /*@__PURE__*/ proxyCustomElement(class RadioGroup extends HTM
38
38
  * using the `name` attribute.
39
39
  */
40
40
  const selectedRadio = ev.target && ev.target.closest('ion-radio');
41
- if (selectedRadio) {
41
+ if (selectedRadio && selectedRadio.disabled === false) {
42
42
  const currentValue = this.value;
43
43
  const newValue = selectedRadio.value;
44
44
  if (newValue !== currentValue) {
@@ -30,7 +30,10 @@ const Radio = /*@__PURE__*/ proxyCustomElement(class Radio extends HTMLElement {
30
30
  }
31
31
  };
32
32
  this.onClick = () => {
33
- const { radioGroup, checked } = this;
33
+ const { radioGroup, checked, disabled } = this;
34
+ if (disabled) {
35
+ return;
36
+ }
34
37
  /**
35
38
  * The legacy control uses a native input inside
36
39
  * of the radio host, so we can set this.checked
@@ -62,6 +62,10 @@ const createSwipeBackGesture = (el, canStartHandler, onStartHandler, onMoveHandl
62
62
  return createGesture({
63
63
  el,
64
64
  gestureName: 'goback-swipe',
65
+ /**
66
+ * Swipe to go back should have priority over other horizontal swipe
67
+ * gestures. These gestures have a priority of 100 which is why 101 was chosen here.
68
+ */
65
69
  gesturePriority: 101,
66
70
  threshold: 10,
67
71
  canStart,
@@ -161,6 +161,7 @@ const createAnimation = (animationId) => {
161
161
  const id = animationId;
162
162
  const onFinishCallbacks = [];
163
163
  const onFinishOneTimeCallbacks = [];
164
+ const onStopOneTimeCallbacks = [];
164
165
  const elements = [];
165
166
  const childAnimations = [];
166
167
  const stylesheets = [];
@@ -218,6 +219,28 @@ const createAnimation = (animationId) => {
218
219
  const isRunning = () => {
219
220
  return numAnimationsRunning !== 0 && !paused;
220
221
  };
222
+ /**
223
+ * @internal
224
+ * Remove a callback from a chosen callback array
225
+ * @param callbackToRemove: A reference to the callback that should be removed
226
+ * @param callbackObjects: An array of callbacks that callbackToRemove should be removed from.
227
+ */
228
+ const clearCallback = (callbackToRemove, callbackObjects) => {
229
+ const index = callbackObjects.findIndex((callbackObject) => callbackObject.c === callbackToRemove);
230
+ if (index > -1) {
231
+ callbackObjects.splice(index, 1);
232
+ }
233
+ };
234
+ /**
235
+ * @internal
236
+ * Add a callback to be fired when an animation is stopped/cancelled.
237
+ * @param callback: A reference to the callback that should be fired
238
+ * @param opts: Any options associated with this particular callback
239
+ */
240
+ const onStop = (callback, opts) => {
241
+ onStopOneTimeCallbacks.push({ c: callback, o: opts });
242
+ return ani;
243
+ };
221
244
  const onFinish = (callback, opts) => {
222
245
  const callbacks = (opts === null || opts === void 0 ? void 0 : opts.oneTimeCallback) ? onFinishOneTimeCallbacks : onFinishCallbacks;
223
246
  callbacks.push({ c: callback, o: opts });
@@ -886,7 +909,33 @@ const createAnimation = (animationId) => {
886
909
  numAnimationsRunning = childAnimations.length + 1;
887
910
  shouldCalculateNumAnimations = false;
888
911
  }
889
- onFinish(() => resolve(), { oneTimeCallback: true });
912
+ /**
913
+ * When one of these callbacks fires we
914
+ * need to clear the other's callback otherwise
915
+ * you can potentially get these callbacks
916
+ * firing multiple times if the play method
917
+ * is subsequently called.
918
+ * Example:
919
+ * animation.play() (onStop and onFinish callbacks are registered)
920
+ * animation.stop() (onStop callback is fired, onFinish is not)
921
+ * animation.play() (onStop and onFinish callbacks are registered)
922
+ * Total onStop callbacks: 1
923
+ * Total onFinish callbacks: 2
924
+ */
925
+ const onStopCallback = () => {
926
+ clearCallback(onFinishCallback, onFinishOneTimeCallbacks);
927
+ resolve();
928
+ };
929
+ const onFinishCallback = () => {
930
+ clearCallback(onStopCallback, onStopOneTimeCallbacks);
931
+ resolve();
932
+ };
933
+ /**
934
+ * The play method resolves when an animation
935
+ * run either finishes or is cancelled.
936
+ */
937
+ onFinish(onFinishCallback, { oneTimeCallback: true });
938
+ onStop(onStopCallback, { oneTimeCallback: true });
890
939
  childAnimations.forEach((animation) => {
891
940
  animation.play();
892
941
  });
@@ -899,6 +948,14 @@ const createAnimation = (animationId) => {
899
948
  paused = false;
900
949
  });
901
950
  };
951
+ /**
952
+ * Stops an animation and resets it state to the
953
+ * beginning. This does not fire any onFinish
954
+ * callbacks because the animation did not finish.
955
+ * However, since the animation was not destroyed
956
+ * (i.e. the animation could run again) we do not
957
+ * clear the onFinish callbacks.
958
+ */
902
959
  const stop = () => {
903
960
  childAnimations.forEach((animation) => {
904
961
  animation.stop();
@@ -908,6 +965,8 @@ const createAnimation = (animationId) => {
908
965
  initialized = false;
909
966
  }
910
967
  resetFlags();
968
+ onStopOneTimeCallbacks.forEach((onStopCallback) => onStopCallback.c(0, ani));
969
+ onStopOneTimeCallbacks.length = 0;
911
970
  };
912
971
  const from = (property, value) => {
913
972
  const firstFrame = _keyframes[0];
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const ionicGlobal = require('./ionic-global-a71608df.js');
6
+ const ionicGlobal = require('./ionic-global-fb752503.js');
7
7
 
8
8
  const globalScripts = ionicGlobal.initialize;
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index$1 = require('./index-14a4821e.js');
6
+ const index$1 = require('./index-305a23dc.js');
7
7
  const haptic = require('./haptic-c5f6b4d5.js');
8
8
  const index = require('./index-0ee995e4.js');
9
9