voyager-ionic-core 7.5.0 → 7.5.5

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 (594) hide show
  1. package/components/action-sheet.js +2 -2
  2. package/components/alert.js +2 -2
  3. package/components/animation.js +18 -3
  4. package/components/checkbox.js +2 -2
  5. package/components/form-controller.js +1 -5
  6. package/components/index8.js +0 -1
  7. package/components/input-shims.js +9 -1
  8. package/components/ion-accordion-group.js +11 -1
  9. package/components/ion-datetime.js +48 -23
  10. package/components/ion-fab-list.js +1 -1
  11. package/components/ion-fab.js +1 -1
  12. package/components/ion-header.js +1 -1
  13. package/components/ion-input.js +11 -4
  14. package/components/ion-item-divider.js +2 -2
  15. package/components/ion-item-option.js +2 -2
  16. package/components/ion-menu.js +17 -5
  17. package/components/ion-modal.js +8 -8
  18. package/components/ion-range.js +2 -2
  19. package/components/ion-refresher.js +8 -1
  20. package/components/ion-reorder.js +2 -2
  21. package/components/ion-searchbar.js +10 -3
  22. package/components/ion-segment.js +43 -17
  23. package/components/ion-select.js +2 -2
  24. package/components/ion-tab-bar.js +2 -2
  25. package/components/ion-tab-button.js +2 -2
  26. package/components/ion-textarea.js +11 -4
  27. package/components/ion-title.js +1 -1
  28. package/components/ion-toast.js +2 -2
  29. package/components/ion-toggle.js +2 -2
  30. package/components/ios.transition.js +209 -41
  31. package/components/item.js +2 -2
  32. package/components/list-header.js +2 -2
  33. package/components/list.js +2 -2
  34. package/components/picker-internal.js +2 -2
  35. package/components/popover.js +2 -2
  36. package/components/radio-group.js +10 -1
  37. package/components/radio.js +2 -3
  38. package/components/watch-options.js +14 -3
  39. package/css/core.css.map +1 -1
  40. package/css/display.css.map +1 -1
  41. package/css/float-elements.css.map +1 -1
  42. package/css/global.bundle.css.map +1 -1
  43. package/css/ionic.bundle.css.map +1 -1
  44. package/css/padding.css.map +1 -1
  45. package/css/structure.css.map +1 -1
  46. package/css/text-alignment.css.map +1 -1
  47. package/css/text-transformation.css.map +1 -1
  48. package/css/typography.css.map +1 -1
  49. package/css/utils.bundle.css.map +1 -1
  50. package/dist/cjs/{animation-c8bdd3c7.js → animation-1083855c.js} +18 -3
  51. package/dist/cjs/{app-globals-fe1ad535.js → app-globals-1d4c1dbf.js} +1 -1
  52. package/dist/cjs/{button-active-c0ff1915.js → button-active-af897e0e.js} +1 -1
  53. package/dist/cjs/{form-controller-5e223b54.js → form-controller-9343050c.js} +1 -5
  54. package/dist/cjs/{index-d93fb71d.js → index-573877f3.js} +3 -3
  55. package/dist/cjs/{index-305a23dc.js → index-c2940dc1.js} +127 -57
  56. package/dist/cjs/{index-5e7529f6.js → index-d7561763.js} +2 -2
  57. package/dist/cjs/{index-10873539.js → index-da2c7a37.js} +0 -1
  58. package/dist/cjs/index.cjs.js +8 -8
  59. package/dist/cjs/{input-shims-da7dc0de.js → input-shims-b0a75a01.js} +10 -2
  60. package/dist/cjs/ion-accordion_2.cjs.entry.js +13 -3
  61. package/dist/cjs/ion-action-sheet.cjs.entry.js +7 -7
  62. package/dist/cjs/ion-alert.cjs.entry.js +7 -7
  63. package/dist/cjs/ion-app_8.cjs.entry.js +8 -8
  64. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  65. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -5
  71. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  72. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-datetime_3.cjs.entry.js +52 -27
  75. package/dist/cjs/ion-fab_3.cjs.entry.js +4 -4
  76. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  78. package/dist/cjs/ion-input.cjs.entry.js +13 -6
  79. package/dist/cjs/ion-item-option_3.cjs.entry.js +6 -6
  80. package/dist/cjs/ion-item_8.cjs.entry.js +10 -10
  81. package/dist/cjs/ion-loading.cjs.entry.js +4 -4
  82. package/dist/cjs/ion-menu_3.cjs.entry.js +22 -10
  83. package/dist/cjs/ion-modal.cjs.entry.js +14 -14
  84. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  86. package/dist/cjs/ion-picker-internal.cjs.entry.js +3 -3
  87. package/dist/cjs/ion-popover.cjs.entry.js +7 -7
  88. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-radio_2.cjs.entry.js +15 -7
  90. package/dist/cjs/ion-range.cjs.entry.js +6 -6
  91. package/dist/cjs/ion-refresher_2.cjs.entry.js +12 -5
  92. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
  93. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  94. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  95. package/dist/cjs/ion-searchbar.cjs.entry.js +11 -4
  96. package/dist/cjs/ion-segment_2.cjs.entry.js +45 -19
  97. package/dist/cjs/ion-select_3.cjs.entry.js +7 -7
  98. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  99. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  100. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -6
  101. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  102. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  103. package/dist/cjs/ion-textarea.cjs.entry.js +13 -6
  104. package/dist/cjs/ion-toast.cjs.entry.js +6 -6
  105. package/dist/cjs/ion-toggle.cjs.entry.js +5 -5
  106. package/dist/cjs/{ionic-global-fb752503.js → ionic-global-ea2901a3.js} +1 -1
  107. package/dist/cjs/ionic.cjs.js +4 -4
  108. package/dist/cjs/{ios.transition-a4d545dd.js → ios.transition-ac909bc8.js} +212 -44
  109. package/dist/cjs/loader.cjs.js +3 -3
  110. package/dist/cjs/{md.transition-80bb961b.js → md.transition-907af519.js} +3 -3
  111. package/dist/cjs/{overlays-1a734051.js → overlays-2ffc5f27.js} +1 -1
  112. package/dist/cjs/{status-tap-778e8054.js → status-tap-3fb2391a.js} +2 -2
  113. package/dist/cjs/{watch-options-f3f77e54.js → watch-options-53bbb124.js} +14 -3
  114. package/dist/collection/collection-manifest.json +1 -1
  115. package/dist/collection/components/accordion-group/accordion-group.js +10 -0
  116. package/dist/collection/components/accordion-group/accordion-group.md.css +2 -2
  117. package/dist/collection/components/action-sheet/action-sheet.ios.css +18 -5
  118. package/dist/collection/components/action-sheet/action-sheet.md.css +18 -5
  119. package/dist/collection/components/action-sheet/test/basic/action-sheet.e2e.js +59 -0
  120. package/dist/collection/components/alert/alert.ios.css +37 -4
  121. package/dist/collection/components/alert/alert.md.css +37 -4
  122. package/dist/collection/components/alert/test/a11y/alert.e2e.js +48 -0
  123. package/dist/collection/components/checkbox/checkbox.ios.css +3 -3
  124. package/dist/collection/components/checkbox/checkbox.md.css +3 -3
  125. package/dist/collection/components/datetime/datetime.ios.css +24 -4
  126. package/dist/collection/components/datetime/datetime.js +47 -22
  127. package/dist/collection/components/datetime/datetime.md.css +24 -8
  128. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +66 -0
  129. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +68 -0
  130. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +113 -0
  131. package/dist/collection/components/fab/fab.css +24 -36
  132. package/dist/collection/components/fab/test/safe-area/fab.e2e.js +63 -0
  133. package/dist/collection/components/fab-list/fab-list.css +2 -2
  134. package/dist/collection/components/header/header.ios.css +4 -1
  135. package/dist/collection/components/input/input.ios.css +15 -15
  136. package/dist/collection/components/input/input.js +9 -2
  137. package/dist/collection/components/input/input.md.css +22 -10
  138. package/dist/collection/components/item/item.ios.css +60 -12
  139. package/dist/collection/components/item/item.md.css +63 -15
  140. package/dist/collection/components/item/test/basic/item.e2e.js +26 -0
  141. package/dist/collection/components/item-divider/item-divider.ios.css +35 -8
  142. package/dist/collection/components/item-divider/item-divider.md.css +35 -8
  143. package/dist/collection/components/item-divider/test/basic/item-divider.e2e.js +22 -0
  144. package/dist/collection/components/item-option/item-option.ios.css +0 -10
  145. package/dist/collection/components/item-option/item-option.md.css +0 -10
  146. package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +77 -0
  147. package/dist/collection/components/label/label.ios.css +1 -1
  148. package/dist/collection/components/list/list.ios.css +15 -1
  149. package/dist/collection/components/list/list.md.css +41 -3
  150. package/dist/collection/components/list/test/lines/list.e2e.js +143 -0
  151. package/dist/collection/components/list-header/list-header.ios.css +15 -2
  152. package/dist/collection/components/list-header/list-header.md.css +15 -2
  153. package/dist/collection/components/list-header/test/basic/list-header.e2e.js +28 -0
  154. package/dist/collection/components/menu/menu.ios.css +4 -4
  155. package/dist/collection/components/menu/menu.js +15 -3
  156. package/dist/collection/components/menu/menu.md.css +4 -4
  157. package/dist/collection/components/modal/animations/ios.enter.js +3 -3
  158. package/dist/collection/components/modal/animations/ios.leave.js +4 -4
  159. package/dist/collection/components/modal/modal.ios.css +2 -2
  160. package/dist/collection/components/picker/picker.ios.css +1 -1
  161. package/dist/collection/components/picker/picker.md.css +1 -1
  162. package/dist/collection/components/picker-internal/picker-internal.ios.css +2 -2
  163. package/dist/collection/components/picker-internal/picker-internal.md.css +2 -2
  164. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +5 -0
  165. package/dist/collection/components/popover/popover.ios.css +4 -4
  166. package/dist/collection/components/popover/popover.md.css +2 -2
  167. package/dist/collection/components/radio/radio.ios.css +4 -4
  168. package/dist/collection/components/radio/radio.js +5 -2
  169. package/dist/collection/components/radio/radio.md.css +4 -4
  170. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +5 -5
  171. package/dist/collection/components/radio-group/radio-group.js +10 -1
  172. package/dist/collection/components/range/range.ios.css +1 -1
  173. package/dist/collection/components/range/range.md.css +1 -1
  174. package/dist/collection/components/refresher/refresher.utils.js +8 -1
  175. package/dist/collection/components/reorder/reorder.ios.css +1 -34
  176. package/dist/collection/components/reorder/reorder.md.css +1 -34
  177. package/dist/collection/components/searchbar/searchbar.js +9 -2
  178. package/dist/collection/components/searchbar/searchbar.md.css +12 -6
  179. package/dist/collection/components/searchbar/test/basic/searchbar.e2e.js +25 -0
  180. package/dist/collection/components/segment/segment.js +43 -17
  181. package/dist/collection/components/select/select.ios.css +12 -15
  182. package/dist/collection/components/select/select.md.css +16 -7
  183. package/dist/collection/components/split-pane/test/multiple/split-pane.e2e.js +31 -0
  184. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  185. package/dist/collection/components/tab-bar/tab-bar.md.css +4 -4
  186. package/dist/collection/components/tab-bar/test/basic/tab-bar.e2e.js +43 -0
  187. package/dist/collection/components/tab-button/tab-button.ios.css +3 -3
  188. package/dist/collection/components/tab-button/tab-button.md.css +3 -3
  189. package/dist/collection/components/textarea/textarea.ios.css +19 -19
  190. package/dist/collection/components/textarea/textarea.js +9 -2
  191. package/dist/collection/components/textarea/textarea.md.css +26 -20
  192. package/dist/collection/components/title/title.ios.css +11 -2
  193. package/dist/collection/components/toast/toast.ios.css +1 -1
  194. package/dist/collection/components/toast/toast.md.css +1 -1
  195. package/dist/collection/components/toggle/toggle.ios.css +3 -3
  196. package/dist/collection/components/toggle/toggle.md.css +3 -3
  197. package/dist/collection/utils/animation/animation.js +18 -3
  198. package/dist/collection/utils/content/index.js +0 -1
  199. package/dist/collection/utils/forms/form-controller.js +1 -5
  200. package/dist/collection/utils/input-shims/hacks/common.js +9 -1
  201. package/dist/collection/utils/transition/ios.transition.js +209 -41
  202. package/dist/collection/utils/watch-options.js +14 -3
  203. package/dist/docs.json +3 -3
  204. package/dist/esm/{animation-92066c62.js → animation-8aa13916.js} +18 -3
  205. package/dist/esm/{app-globals-ec816a70.js → app-globals-2398e405.js} +1 -1
  206. package/dist/esm/{button-active-d926d4f4.js → button-active-ce5cba4c.js} +1 -1
  207. package/dist/esm/{form-controller-ed77647a.js → form-controller-64edeaad.js} +1 -5
  208. package/dist/esm/{index-df55802d.js → index-0aa6e61f.js} +2 -2
  209. package/dist/esm/{index-746a238e.js → index-4392efa5.js} +0 -1
  210. package/dist/esm/{index-7d2b2808.js → index-6a0ccabb.js} +3 -3
  211. package/dist/esm/{index-b49b173c.js → index-7c9b1bca.js} +127 -57
  212. package/dist/esm/index.js +8 -8
  213. package/dist/esm/{input-shims-d78a3c77.js → input-shims-d0c93e5d.js} +10 -2
  214. package/dist/esm/ion-accordion_2.entry.js +13 -3
  215. package/dist/esm/ion-action-sheet.entry.js +7 -7
  216. package/dist/esm/ion-alert.entry.js +7 -7
  217. package/dist/esm/ion-app_8.entry.js +8 -8
  218. package/dist/esm/ion-avatar_3.entry.js +2 -2
  219. package/dist/esm/ion-back-button.entry.js +2 -2
  220. package/dist/esm/ion-backdrop.entry.js +2 -2
  221. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  222. package/dist/esm/ion-button_2.entry.js +2 -2
  223. package/dist/esm/ion-card_5.entry.js +2 -2
  224. package/dist/esm/ion-checkbox.entry.js +5 -5
  225. package/dist/esm/ion-chip.entry.js +2 -2
  226. package/dist/esm/ion-col_3.entry.js +2 -2
  227. package/dist/esm/ion-datetime-button.entry.js +2 -2
  228. package/dist/esm/ion-datetime_3.entry.js +52 -27
  229. package/dist/esm/ion-fab_3.entry.js +4 -4
  230. package/dist/esm/ion-img.entry.js +2 -2
  231. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  232. package/dist/esm/ion-input.entry.js +14 -7
  233. package/dist/esm/ion-item-option_3.entry.js +6 -6
  234. package/dist/esm/ion-item_8.entry.js +10 -10
  235. package/dist/esm/ion-loading.entry.js +4 -4
  236. package/dist/esm/ion-menu_3.entry.js +22 -10
  237. package/dist/esm/ion-modal.entry.js +14 -14
  238. package/dist/esm/ion-nav_2.entry.js +3 -3
  239. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  240. package/dist/esm/ion-picker-internal.entry.js +3 -3
  241. package/dist/esm/ion-popover.entry.js +7 -7
  242. package/dist/esm/ion-progress-bar.entry.js +2 -2
  243. package/dist/esm/ion-radio_2.entry.js +15 -7
  244. package/dist/esm/ion-range.entry.js +6 -6
  245. package/dist/esm/ion-refresher_2.entry.js +12 -5
  246. package/dist/esm/ion-reorder_2.entry.js +5 -5
  247. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  248. package/dist/esm/ion-route_4.entry.js +2 -2
  249. package/dist/esm/ion-searchbar.entry.js +12 -5
  250. package/dist/esm/ion-segment_2.entry.js +45 -19
  251. package/dist/esm/ion-select_3.entry.js +7 -7
  252. package/dist/esm/ion-spinner.entry.js +2 -2
  253. package/dist/esm/ion-split-pane.entry.js +2 -2
  254. package/dist/esm/ion-tab-bar_2.entry.js +6 -6
  255. package/dist/esm/ion-tab_2.entry.js +1 -1
  256. package/dist/esm/ion-text.entry.js +2 -2
  257. package/dist/esm/ion-textarea.entry.js +14 -7
  258. package/dist/esm/ion-toast.entry.js +6 -6
  259. package/dist/esm/ion-toggle.entry.js +5 -5
  260. package/dist/esm/{ionic-global-246ca78f.js → ionic-global-40e42e7f.js} +1 -1
  261. package/dist/esm/ionic.js +5 -5
  262. package/dist/esm/{ios.transition-a86d7bbe.js → ios.transition-1651c430.js} +212 -44
  263. package/dist/esm/loader.js +4 -4
  264. package/dist/esm/{md.transition-365ef6b6.js → md.transition-66f18369.js} +3 -3
  265. package/dist/esm/{overlays-cec6bac8.js → overlays-6c9feb7e.js} +1 -1
  266. package/dist/esm/{status-tap-9aeeaca5.js → status-tap-9ce68758.js} +2 -2
  267. package/dist/esm/{watch-options-355a920a.js → watch-options-02d8498b.js} +14 -3
  268. package/dist/esm-es5/animation-8aa13916.js +4 -0
  269. package/dist/esm-es5/app-globals-2398e405.js +4 -0
  270. package/dist/esm-es5/{button-active-d926d4f4.js → button-active-ce5cba4c.js} +1 -1
  271. package/dist/esm-es5/config-96c9ace3.js +1 -1
  272. package/dist/esm-es5/cubic-bezier-66542bc5.js +1 -1
  273. package/dist/esm-es5/data-44d9e816.js +1 -1
  274. package/dist/esm-es5/dir-912e3e13.js +1 -1
  275. package/dist/esm-es5/focus-visible-85493433.js +1 -1
  276. package/dist/esm-es5/form-controller-64edeaad.js +4 -0
  277. package/dist/esm-es5/framework-delegate-aa433dea.js +1 -1
  278. package/dist/esm-es5/gesture-controller-0fa396c4.js +1 -1
  279. package/dist/esm-es5/haptic-1243b917.js +1 -1
  280. package/dist/esm-es5/hardware-back-button-39299f84.js +1 -1
  281. package/dist/esm-es5/helpers-3379ba19.js +1 -1
  282. package/dist/esm-es5/index-0aa6e61f.js +4 -0
  283. package/dist/esm-es5/index-4392efa5.js +4 -0
  284. package/dist/esm-es5/index-6a0ccabb.js +4 -0
  285. package/dist/esm-es5/index-7c9b1bca.js +5 -0
  286. package/dist/esm-es5/index-f0cc4e14.js +1 -1
  287. package/dist/esm-es5/index-ff313b19.js +1 -1
  288. package/dist/esm-es5/index.js +1 -1
  289. package/dist/esm-es5/input-shims-d0c93e5d.js +4 -0
  290. package/dist/esm-es5/input.utils-ec063df4.js +1 -1
  291. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  292. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  293. package/dist/esm-es5/ion-alert.entry.js +1 -1
  294. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  295. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  296. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  297. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  298. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  299. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  300. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  301. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  302. package/dist/esm-es5/ion-chip.entry.js +1 -1
  303. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  304. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  305. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  306. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  307. package/dist/esm-es5/ion-img.entry.js +1 -1
  308. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  309. package/dist/esm-es5/ion-input.entry.js +1 -1
  310. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  311. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  312. package/dist/esm-es5/ion-loading.entry.js +1 -1
  313. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  314. package/dist/esm-es5/ion-modal.entry.js +1 -1
  315. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  316. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  317. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  318. package/dist/esm-es5/ion-popover.entry.js +1 -1
  319. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  320. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  321. package/dist/esm-es5/ion-range.entry.js +1 -1
  322. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  323. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  324. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  325. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  326. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  327. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  328. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  329. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  330. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  331. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  332. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  333. package/dist/esm-es5/ion-text.entry.js +1 -1
  334. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  335. package/dist/esm-es5/ion-toast.entry.js +1 -1
  336. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  337. package/dist/esm-es5/ionic-global-40e42e7f.js +4 -0
  338. package/dist/esm-es5/ionic.js +1 -1
  339. package/dist/esm-es5/ios.transition-1651c430.js +4 -0
  340. package/dist/esm-es5/keyboard-b551279d.js +1 -1
  341. package/dist/esm-es5/keyboard-controller-0c2dce71.js +1 -1
  342. package/dist/esm-es5/loader.js +1 -1
  343. package/dist/esm-es5/md.transition-66f18369.js +4 -0
  344. package/dist/esm-es5/notch-controller-8c9c0e54.js +1 -1
  345. package/dist/esm-es5/overlays-6c9feb7e.js +4 -0
  346. package/dist/esm-es5/spinner-configs-d09fbbbb.js +1 -1
  347. package/dist/esm-es5/status-tap-9ce68758.js +4 -0
  348. package/dist/esm-es5/swipe-back-cd4295f3.js +1 -1
  349. package/dist/esm-es5/watch-options-02d8498b.js +4 -0
  350. package/dist/html.html-data.json +1 -1
  351. package/dist/ionic/index.esm.js +1 -1
  352. package/dist/ionic/ionic.esm.js +1 -1
  353. package/dist/ionic/ionic.js +1 -1
  354. package/dist/ionic/p-0330f0a3.system.entry.js +4 -0
  355. package/dist/ionic/{p-a7f8dc42.entry.js → p-0492946a.entry.js} +1 -1
  356. package/dist/ionic/{p-78030c1f.system.entry.js → p-07d9e9cd.system.entry.js} +1 -1
  357. package/dist/ionic/{p-ced41304.system.js → p-09d142b3.system.js} +1 -1
  358. package/dist/ionic/{p-fcf47f80.entry.js → p-0a794e83.entry.js} +1 -1
  359. package/dist/ionic/p-0d8e9393.entry.js +4 -0
  360. package/dist/ionic/p-0dc0d9b5.entry.js +4 -0
  361. package/dist/ionic/p-0e23256e.system.entry.js +4 -0
  362. package/dist/ionic/p-14aca3fb.entry.js +4 -0
  363. package/dist/ionic/p-14b4348c.system.js +4 -0
  364. package/dist/ionic/{p-108f9d49.entry.js → p-174f3446.entry.js} +1 -1
  365. package/dist/ionic/p-18e01b30.system.entry.js +4 -0
  366. package/dist/ionic/p-1a8ae7a7.system.entry.js +4 -0
  367. package/dist/ionic/p-1cb5f2f8.system.entry.js +4 -0
  368. package/dist/ionic/{p-c42c86c0.system.entry.js → p-1d269117.system.entry.js} +1 -1
  369. package/dist/ionic/{p-0ac3fb2c.entry.js → p-1dc91702.entry.js} +1 -1
  370. package/dist/ionic/p-1e5165db.system.entry.js +4 -0
  371. package/dist/ionic/{p-0b00b937.entry.js → p-1e86a71b.entry.js} +1 -1
  372. package/dist/ionic/p-1f4f0d59.system.entry.js +4 -0
  373. package/dist/ionic/p-20cf4994.js +4 -0
  374. package/dist/ionic/p-236063ec.system.entry.js +4 -0
  375. package/dist/ionic/p-2b89ea1b.system.js +1 -1
  376. package/dist/ionic/p-2e8e0045.js +4 -0
  377. package/dist/ionic/{p-ce7d67a7.system.entry.js → p-34d2de14.system.entry.js} +2 -2
  378. package/dist/ionic/{p-303bf1e8.system.entry.js → p-352c0232.system.entry.js} +2 -2
  379. package/dist/ionic/p-3602001b.system.js +4 -0
  380. package/dist/ionic/p-3632220b.system.js +1 -1
  381. package/dist/ionic/p-377c636c.system.entry.js +4 -0
  382. package/dist/ionic/{p-f9fa802c.system.entry.js → p-39044fe6.system.entry.js} +2 -2
  383. package/dist/ionic/{p-38089641.entry.js → p-3ce8c3e3.entry.js} +1 -1
  384. package/dist/ionic/p-3d7fea9b.system.entry.js +4 -0
  385. package/dist/ionic/p-3de79805.entry.js +4 -0
  386. package/dist/ionic/{p-0bbede6a.system.entry.js → p-3fb57e1b.system.entry.js} +1 -1
  387. package/dist/ionic/{p-5c3e72a8.system.js → p-40903d34.system.js} +1 -1
  388. package/dist/ionic/p-41122cd6.system.js +4 -0
  389. package/dist/ionic/p-41477ad9.system.js +1 -1
  390. package/dist/ionic/p-44bc8b45.system.js +2 -2
  391. package/dist/ionic/p-4518e4c0.system.entry.js +4 -0
  392. package/dist/ionic/{p-eab10949.system.entry.js → p-45da1e68.system.entry.js} +1 -1
  393. package/dist/ionic/p-4794e0ac.system.entry.js +4 -0
  394. package/dist/ionic/p-479cdbf8.system.js +2 -2
  395. package/dist/ionic/{p-4e50b8d1.entry.js → p-48d9faa7.entry.js} +1 -1
  396. package/dist/ionic/{p-8d6728a1.system.entry.js → p-4a142496.system.entry.js} +1 -1
  397. package/dist/ionic/p-4c80afe1.system.entry.js +4 -0
  398. package/dist/ionic/p-4cd588b3.system.entry.js +4 -0
  399. package/dist/ionic/{p-afb6658f.entry.js → p-4dbac22d.entry.js} +1 -1
  400. package/dist/ionic/p-4e6a1efb.system.entry.js +4 -0
  401. package/dist/ionic/p-4ecb5692.entry.js +4 -0
  402. package/dist/ionic/p-5370e786.js +4 -0
  403. package/dist/ionic/p-55ed230e.system.js +4 -0
  404. package/dist/ionic/p-56dc022e.system.js +1 -1
  405. package/dist/ionic/p-5aac9314.system.js +4 -0
  406. package/dist/ionic/p-5bd4e009.entry.js +4 -0
  407. package/dist/ionic/{p-6f8a95a3.system.entry.js → p-5cfb3feb.system.entry.js} +2 -2
  408. package/dist/ionic/{p-181b7c2a.js → p-5d711127.js} +1 -1
  409. package/dist/ionic/p-5da0eb3e.system.entry.js +4 -0
  410. package/dist/ionic/p-5deff017.entry.js +4 -0
  411. package/dist/ionic/p-613d4042.system.js +2 -2
  412. package/dist/ionic/p-63d519fb.entry.js +4 -0
  413. package/dist/ionic/{p-8083aadb.entry.js → p-63f08fe3.entry.js} +1 -1
  414. package/dist/ionic/{p-35b26732.entry.js → p-64296b15.entry.js} +1 -1
  415. package/dist/ionic/p-64ed03a3.entry.js +4 -0
  416. package/dist/ionic/p-664d2b07.system.entry.js +4 -0
  417. package/dist/ionic/p-67aab78f.js +4 -0
  418. package/dist/ionic/{p-e0f52215.system.entry.js → p-67e18f02.system.entry.js} +1 -1
  419. package/dist/ionic/{p-572cce26.system.entry.js → p-67ed452a.system.entry.js} +2 -2
  420. package/dist/ionic/p-67eecef4.system.js +4 -0
  421. package/dist/ionic/{p-76378400.js → p-6c3d5383.js} +1 -1
  422. package/dist/ionic/{p-1289b3b5.system.entry.js → p-6e23777e.system.entry.js} +2 -2
  423. package/dist/ionic/p-702d85d8.system.js +4 -0
  424. package/dist/ionic/{p-1edb53a1.entry.js → p-7176cea3.entry.js} +1 -1
  425. package/dist/ionic/p-73411c1b.entry.js +4 -0
  426. package/dist/ionic/p-73420380.js +4 -0
  427. package/dist/ionic/{p-6ea2e653.entry.js → p-744973f3.entry.js} +1 -1
  428. package/dist/ionic/p-772f6c84.system.js +2 -2
  429. package/dist/ionic/p-77e7a9c8.entry.js +4 -0
  430. package/dist/ionic/p-7ab6fc5a.system.entry.js +4 -0
  431. package/dist/ionic/{p-31119a15.entry.js → p-7cee75c0.entry.js} +1 -1
  432. package/dist/ionic/{p-cf62e1c8.js → p-800ef057.js} +1 -1
  433. package/dist/ionic/p-815c2fba.system.js +2 -2
  434. package/dist/ionic/p-819ff3b9.system.js +1 -1
  435. package/dist/ionic/p-87411e39.system.js +1 -1
  436. package/dist/ionic/p-8a308596.system.js +4 -0
  437. package/dist/ionic/{p-3818f63f.entry.js → p-8ad82eb3.entry.js} +1 -1
  438. package/dist/ionic/{p-c4a5de01.entry.js → p-8b29691f.entry.js} +1 -1
  439. package/dist/ionic/p-8c15eda7.system.js +2 -2
  440. package/dist/ionic/p-8e1bded3.entry.js +4 -0
  441. package/dist/ionic/{p-15decbec.entry.js → p-9209d90c.entry.js} +1 -1
  442. package/dist/ionic/{p-96ba8eac.entry.js → p-92800752.entry.js} +1 -1
  443. package/dist/ionic/p-965677f1.entry.js +4 -0
  444. package/dist/ionic/{p-446230d7.js → p-97c65aa5.js} +1 -1
  445. package/dist/ionic/p-97e31c0a.system.js +4 -0
  446. package/dist/ionic/p-9ab6f3e6.system.js +1 -1
  447. package/dist/ionic/{p-62e7d4fa.js → p-9b89cbde.js} +1 -1
  448. package/dist/ionic/p-9e852ff1.system.js +1 -1
  449. package/dist/ionic/p-a0b6d438.js +4 -0
  450. package/dist/ionic/p-a545b4f1.system.js +4 -0
  451. package/dist/ionic/p-a5c1e6ce.entry.js +4 -0
  452. package/dist/ionic/p-a6d83a03.system.entry.js +4 -0
  453. package/dist/ionic/p-a8e68fd9.entry.js +4 -0
  454. package/dist/ionic/{p-aa377971.system.js → p-a936d224.system.js} +1 -1
  455. package/dist/ionic/{p-beb864e4.system.entry.js → p-a9c3699b.system.entry.js} +1 -1
  456. package/dist/ionic/p-ab4cff27.system.js +1 -1
  457. package/dist/ionic/{p-012952cd.system.entry.js → p-abacb44b.system.entry.js} +2 -2
  458. package/dist/ionic/{p-1f81b5be.entry.js → p-af016cd3.entry.js} +1 -1
  459. package/dist/ionic/{p-a9c32660.entry.js → p-b0cee324.entry.js} +1 -1
  460. package/dist/ionic/{p-f4309ac7.entry.js → p-b1142133.entry.js} +1 -1
  461. package/dist/ionic/p-b17b7c3c.system.entry.js +4 -0
  462. package/dist/ionic/p-b203659a.system.entry.js +4 -0
  463. package/dist/ionic/{p-c679fcb5.entry.js → p-b2a74a72.entry.js} +1 -1
  464. package/dist/ionic/p-b4b4bb29.system.js +1 -1
  465. package/dist/ionic/p-b6f8ee31.entry.js +4 -0
  466. package/dist/ionic/p-b8c3f071.system.js +1 -1
  467. package/dist/ionic/p-b906c5ca.entry.js +4 -0
  468. package/dist/ionic/p-b912e055.system.js +1 -1
  469. package/dist/ionic/{p-e42aaa8b.entry.js → p-b91fe549.entry.js} +1 -1
  470. package/dist/ionic/p-bba2ce59.system.js +1 -1
  471. package/dist/ionic/p-beb64be7.system.entry.js +4 -0
  472. package/dist/ionic/p-bed722c4.system.entry.js +4 -0
  473. package/dist/ionic/p-c0c81820.system.js +4 -0
  474. package/dist/ionic/p-c224b9a9.js +5 -0
  475. package/dist/ionic/p-c4042875.system.js +4 -0
  476. package/dist/ionic/p-c4f2dce7.system.js +1 -1
  477. package/dist/ionic/{p-6f6646bf.system.entry.js → p-c7b8c2ef.system.entry.js} +1 -1
  478. package/dist/ionic/{p-1ecba429.entry.js → p-c7d30db9.entry.js} +1 -1
  479. package/dist/ionic/{p-db1a1e00.entry.js → p-c919498d.entry.js} +1 -1
  480. package/dist/ionic/{p-54200074.entry.js → p-ca5219df.entry.js} +1 -1
  481. package/dist/ionic/p-ccdcb022.system.js +1 -1
  482. package/dist/ionic/p-cf425ec5.system.entry.js +4 -0
  483. package/dist/ionic/p-d2597b3e.system.js +5 -0
  484. package/dist/ionic/p-d3952bd5.system.entry.js +4 -0
  485. package/dist/ionic/{p-8c1805f4.system.entry.js → p-d7ea6a0d.system.entry.js} +1 -1
  486. package/dist/ionic/p-db5043df.system.entry.js +4 -0
  487. package/dist/ionic/p-dfa756ed.system.js +4 -0
  488. package/dist/ionic/{p-28ea45b9.js → p-e6b240a0.js} +1 -1
  489. package/dist/ionic/{p-cabd2c6d.entry.js → p-e76a4bc8.entry.js} +1 -1
  490. package/dist/ionic/{p-cf0c93e3.system.entry.js → p-e8400078.system.entry.js} +2 -2
  491. package/dist/ionic/{p-4e6e43c1.entry.js → p-ed636a74.entry.js} +1 -1
  492. package/dist/ionic/p-f10de93b.js +4 -0
  493. package/dist/ionic/{p-f919c026.entry.js → p-f4cc91f6.entry.js} +1 -1
  494. package/dist/ionic/p-f5a750e4.system.entry.js +4 -0
  495. package/dist/ionic/p-f8e620f1.entry.js +4 -0
  496. package/dist/ionic/p-fa8d4788.system.js +1 -1
  497. package/dist/ionic/{p-8a2801f1.system.entry.js → p-ff5144f3.system.entry.js} +1 -1
  498. package/dist/ionic/p-ff5a10f9.system.js +2 -2
  499. package/dist/ionic/{p-6129af0a.system.entry.js → p-ffb876b0.system.entry.js} +1 -1
  500. package/dist/types/components/datetime/datetime.d.ts +1 -1
  501. package/dist/types/components/menu/menu-interface.d.ts +15 -4
  502. package/dist/types/components/radio/radio.d.ts +1 -1
  503. package/dist/types/components.d.ts +627 -3
  504. package/dist/types/stencil-public-runtime.d.ts +21 -0
  505. package/dist/types/utils/content/index.d.ts +1 -1
  506. package/dist/types/utils/focus-visible.d.ts +3 -2
  507. package/dist/types/utils/menu-controller/index.d.ts +2 -21
  508. package/dist/types/utils/test/platform.utils.d.ts +9 -9
  509. package/dist/types/utils/watch-options.d.ts +9 -1
  510. package/hydrate/index.d.ts +1 -1
  511. package/hydrate/index.js +567 -238
  512. package/package.json +11 -14
  513. package/dist/esm-es5/animation-92066c62.js +0 -4
  514. package/dist/esm-es5/app-globals-ec816a70.js +0 -4
  515. package/dist/esm-es5/form-controller-ed77647a.js +0 -4
  516. package/dist/esm-es5/index-746a238e.js +0 -4
  517. package/dist/esm-es5/index-7d2b2808.js +0 -4
  518. package/dist/esm-es5/index-b49b173c.js +0 -5
  519. package/dist/esm-es5/index-df55802d.js +0 -4
  520. package/dist/esm-es5/input-shims-d78a3c77.js +0 -4
  521. package/dist/esm-es5/ionic-global-246ca78f.js +0 -4
  522. package/dist/esm-es5/ios.transition-a86d7bbe.js +0 -4
  523. package/dist/esm-es5/md.transition-365ef6b6.js +0 -4
  524. package/dist/esm-es5/overlays-cec6bac8.js +0 -4
  525. package/dist/esm-es5/status-tap-9aeeaca5.js +0 -4
  526. package/dist/esm-es5/watch-options-355a920a.js +0 -4
  527. package/dist/ionic/p-015187e5.system.js +0 -4
  528. package/dist/ionic/p-06ac429a.js +0 -5
  529. package/dist/ionic/p-0b7c25ee.system.entry.js +0 -4
  530. package/dist/ionic/p-0f1f59da.system.entry.js +0 -4
  531. package/dist/ionic/p-128a98e8.system.js +0 -4
  532. package/dist/ionic/p-16e44585.js +0 -4
  533. package/dist/ionic/p-19fba51c.entry.js +0 -4
  534. package/dist/ionic/p-1a463b1e.system.entry.js +0 -4
  535. package/dist/ionic/p-1f260a7b.entry.js +0 -4
  536. package/dist/ionic/p-29073efe.system.entry.js +0 -4
  537. package/dist/ionic/p-2bbf3ac4.system.entry.js +0 -4
  538. package/dist/ionic/p-33a8349a.system.entry.js +0 -4
  539. package/dist/ionic/p-34259245.system.entry.js +0 -4
  540. package/dist/ionic/p-35e399bd.entry.js +0 -4
  541. package/dist/ionic/p-38c5fe2b.system.entry.js +0 -4
  542. package/dist/ionic/p-3a58e3a4.system.entry.js +0 -4
  543. package/dist/ionic/p-3d726a67.system.js +0 -4
  544. package/dist/ionic/p-3f3da911.system.entry.js +0 -4
  545. package/dist/ionic/p-4215652f.system.entry.js +0 -4
  546. package/dist/ionic/p-4f97c112.entry.js +0 -4
  547. package/dist/ionic/p-54f6cd27.system.entry.js +0 -4
  548. package/dist/ionic/p-5b976d70.entry.js +0 -4
  549. package/dist/ionic/p-5bf16a18.js +0 -4
  550. package/dist/ionic/p-629aa3fd.system.js +0 -5
  551. package/dist/ionic/p-64475ab5.system.js +0 -4
  552. package/dist/ionic/p-673846f6.entry.js +0 -4
  553. package/dist/ionic/p-6ce0a709.system.entry.js +0 -4
  554. package/dist/ionic/p-818b2e75.entry.js +0 -4
  555. package/dist/ionic/p-81ef7437.system.entry.js +0 -4
  556. package/dist/ionic/p-8e24ebbc.js +0 -4
  557. package/dist/ionic/p-8f01a9a2.system.js +0 -4
  558. package/dist/ionic/p-939e0fa1.system.js +0 -4
  559. package/dist/ionic/p-95817276.system.entry.js +0 -4
  560. package/dist/ionic/p-9b9dcc3e.system.entry.js +0 -4
  561. package/dist/ionic/p-9dc85536.system.entry.js +0 -4
  562. package/dist/ionic/p-9f2e0db9.js +0 -4
  563. package/dist/ionic/p-a04bfada.entry.js +0 -4
  564. package/dist/ionic/p-a164e3ab.system.entry.js +0 -4
  565. package/dist/ionic/p-a200a7fc.entry.js +0 -4
  566. package/dist/ionic/p-a34fc12e.system.entry.js +0 -4
  567. package/dist/ionic/p-ad48dd13.system.js +0 -4
  568. package/dist/ionic/p-b132c2c0.system.js +0 -4
  569. package/dist/ionic/p-b3c68723.system.js +0 -4
  570. package/dist/ionic/p-b61a2fa0.system.entry.js +0 -4
  571. package/dist/ionic/p-b753ec0d.system.entry.js +0 -4
  572. package/dist/ionic/p-b9047b05.system.js +0 -4
  573. package/dist/ionic/p-c05315f5.system.entry.js +0 -4
  574. package/dist/ionic/p-c105bd36.entry.js +0 -4
  575. package/dist/ionic/p-c49672d8.system.js +0 -4
  576. package/dist/ionic/p-c87827ca.system.js +0 -4
  577. package/dist/ionic/p-c8c9d699.system.entry.js +0 -4
  578. package/dist/ionic/p-c92f0a6d.system.entry.js +0 -4
  579. package/dist/ionic/p-c956e82c.system.entry.js +0 -4
  580. package/dist/ionic/p-c994fff0.system.js +0 -4
  581. package/dist/ionic/p-ca5cf574.js +0 -4
  582. package/dist/ionic/p-cd2d17c3.system.entry.js +0 -4
  583. package/dist/ionic/p-d35217be.entry.js +0 -4
  584. package/dist/ionic/p-d6e53e66.entry.js +0 -4
  585. package/dist/ionic/p-e1d5752d.system.entry.js +0 -4
  586. package/dist/ionic/p-e2bb634f.js +0 -4
  587. package/dist/ionic/p-e38a5f77.js +0 -4
  588. package/dist/ionic/p-e65ebe96.entry.js +0 -4
  589. package/dist/ionic/p-e74faf2a.entry.js +0 -4
  590. package/dist/ionic/p-eac263dd.entry.js +0 -4
  591. package/dist/ionic/p-f34f001c.entry.js +0 -4
  592. package/dist/ionic/p-f5bf698b.entry.js +0 -4
  593. package/dist/ionic/p-f7566bad.entry.js +0 -4
  594. /package/dist/ionic/{p-b24aa895.js → p-114a36ed.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/themes/ionic.functions.font.scss","../src/css/padding.scss","../src/themes/ionic.mixins.scss","../src/css/float-elements.scss","../src/css/text-alignment.scss","../src/css/text-transformation.scss","../src/css/flex-utils.scss","../src/css/display.scss"],"names":[],"mappings":"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","file":"utils.bundle.css","sourcesContent":["@use \"sass:math\";\n\n$baselineSize: 16px !default;\n$baselineUnit: 1rem !default;\n\n/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font($size, $unit: $baselineUnit) {\n @return (math.div($size, $baselineSize)) * $unit;\n}\n\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font-max($size, $maxScale, $unit: $baselineUnit) {\n $baseScale: dynamic-font($size, $unit);\n $maxScale: $size * $maxScale;\n\n @return min($baseScale, $maxScale);\n}\n\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font-min($minScale, $size, $unit: $baselineUnit) {\n $baseScale: dynamic-font($size, $unit);\n $minScale: $size * $minScale;\n\n @return max($minScale, $baseScale);\n}\n\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font-clamp($minScale, $baseSize, $maxScale, $unit: $baselineUnit) {\n $baseScale: dynamic-font($baseSize, $unit);\n $maxScale: $baseSize * $maxScale;\n $minScale: $baseSize * $minScale;\n\n @return clamp($minScale, $baseScale, $maxScale);\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n\n// Element Space\n// --------------------------------------------------\n// Creates padding and margin attributes to be used on\n// any element\n\n$padding: var(--ion-padding, 16px);\n$margin: var(--ion-margin, 16px);\n\n// Padding\n// --------------------------------------------------\n\n.ion-no-padding {\n --padding-start: 0;\n --padding-end: 0;\n --padding-top: 0;\n --padding-bottom: 0;\n\n @include padding(0);\n}\n\n.ion-padding {\n --padding-start: #{$padding};\n --padding-end: #{$padding};\n --padding-top: #{$padding};\n --padding-bottom: #{$padding};\n\n @include padding($padding);\n}\n\n.ion-padding-top {\n --padding-top: #{$padding};\n\n @include padding($padding, null, null, null);\n}\n\n.ion-padding-start {\n --padding-start: #{$padding};\n\n @include padding-horizontal($padding, null);\n}\n\n.ion-padding-end {\n --padding-end: #{$padding};\n\n @include padding-horizontal(null, $padding);\n}\n\n.ion-padding-bottom {\n --padding-bottom: #{$padding};\n\n @include padding(null, null, $padding, null);\n}\n\n.ion-padding-vertical {\n --padding-top: #{$padding};\n --padding-bottom: #{$padding};\n\n @include padding($padding, null, $padding, null);\n}\n\n.ion-padding-horizontal {\n --padding-start: #{$padding};\n --padding-end: #{$padding};\n\n @include padding-horizontal($padding);\n}\n\n\n// Margin\n// --------------------------------------------------\n\n.ion-no-margin {\n --margin-start: 0;\n --margin-end: 0;\n --margin-top: 0;\n --margin-bottom: 0;\n\n @include margin(0);\n}\n\n.ion-margin {\n --margin-start: #{$margin};\n --margin-end: #{$margin};\n --margin-top: #{$margin};\n --margin-bottom: #{$margin};\n\n @include margin($margin);\n}\n\n.ion-margin-top {\n --margin-top: #{$margin};\n\n @include margin($margin, null, null, null);\n}\n\n.ion-margin-start {\n --margin-start: #{$margin};\n\n @include margin-horizontal($margin, null);\n}\n\n.ion-margin-end {\n --margin-end: #{$margin};\n\n @include margin-horizontal(null, $margin);\n}\n\n.ion-margin-bottom {\n --margin-bottom: #{$margin};\n\n @include margin(null, null, $margin, null);\n}\n\n.ion-margin-vertical {\n --margin-top: #{$margin};\n --margin-bottom: #{$margin};\n\n @include margin($margin, null, $margin, null);\n}\n\n.ion-margin-horizontal {\n --margin-start: #{$margin};\n --margin-end: #{$margin};\n\n @include margin-horizontal($margin);\n}\n","@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n background: transparent;\n cursor: pointer;\n\n appearance: none;\n outline: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n padding: 0;\n\n border: 0;\n outline: 0;\n clip: rect(0 0 0 0);\n\n opacity: 0;\n overflow: hidden;\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: str-split($root, \",\");\n $selectors: #{add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n \n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n @each $selector in $rootSplit {\n $dirSelector: \"#{$selector}:dir(rtl)\";\n // Group the selectors back into a single selector to optimize the output.\n $dirSelectors: append($dirSelectors, $dirSelector, comma);\n }\n\n // Supported by Firefox.\n @if length($dirSelectors) > 0 {\n @at-root #{$dirSelectors} {\n @content;\n }\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: str-split(str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr () {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n left: $start;\n right: $end;\n }\n } @else {\n @at-root {\n @supports (inset-inline-start: 0) {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n\n // TODO FW-3766\n @at-root {\n @supports not (inset-inline-start: 0) {\n & {\n @include ltr() {\n left: $start;\n right: $end;\n }\n @include rtl() {\n left: unset;\n right: unset;\n\n left: $end;\n right: $start;\n }\n }\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n @include multi-dir() {\n border-radius: $top-start;\n }\n } @else {\n @include ltr() {\n border-top-left-radius: $top-start;\n border-top-right-radius: $top-end;\n border-bottom-right-radius: $bottom-end;\n border-bottom-left-radius: $bottom-start;\n }\n\n @include rtl() {\n border-top-left-radius: $top-end;\n border-top-right-radius: $top-start;\n border-bottom-right-radius: $bottom-start;\n border-bottom-left-radius: $bottom-end;\n }\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: str-replace($transform, 'translate3d(');\n $transform: str-replace($transform, ')');\n\n $coordinates: str-split($transform, ',');\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == '0' or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Float Elements\n// --------------------------------------------------\n// Creates float classes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-float-{bp}-{side}` classes for floating the element based\n // on the breakpoint and side\n .ion-float#{$infix}-left {\n @include float(left, !important);\n }\n\n .ion-float#{$infix}-right {\n @include float(right, !important);\n }\n\n .ion-float#{$infix}-start {\n @include float(start, !important);\n }\n\n .ion-float#{$infix}-end {\n @include float(end, !important);\n }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Text Alignment\n// --------------------------------------------------\n// Creates text alignment attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for aligning the text based\n // on the breakpoint\n .ion-text#{$infix}-center {\n text-align: center !important;\n }\n\n .ion-text#{$infix}-justify {\n text-align: justify !important;\n }\n\n .ion-text#{$infix}-start {\n text-align: start !important;\n }\n\n .ion-text#{$infix}-end {\n text-align: end !important;\n }\n\n .ion-text#{$infix}-left {\n text-align: left !important;\n }\n\n .ion-text#{$infix}-right {\n text-align: right !important;\n }\n\n .ion-text#{$infix}-nowrap {\n white-space: nowrap !important;\n }\n\n .ion-text#{$infix}-wrap {\n white-space: normal !important;\n }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Text Transformation\n// --------------------------------------------------\n// Creates text transform attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for transforming the text based\n // on the breakpoint\n .ion-text#{$infix}-uppercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: uppercase !important;\n }\n\n .ion-text#{$infix}-lowercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: lowercase !important;\n }\n\n .ion-text#{$infix}-capitalize {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: capitalize !important;\n }\n }\n}\n","// Flex Utilities\n// --------------------------------------------------\n// Creates flex classes to align flex containers\n// and items\n\n// Align Self\n// --------------------------------------------------\n\n.ion-align-self-start {\n align-self: flex-start !important;\n}\n\n.ion-align-self-end {\n align-self: flex-end !important;\n}\n\n.ion-align-self-center {\n align-self: center !important;\n}\n\n.ion-align-self-stretch {\n align-self: stretch !important;\n}\n\n.ion-align-self-baseline {\n align-self: baseline !important;\n}\n\n.ion-align-self-auto {\n align-self: auto !important;\n}\n\n\n// Flex Wrap\n// --------------------------------------------------\n\n.ion-wrap {\n flex-wrap: wrap !important;\n}\n\n.ion-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.ion-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n\n// Justify Content\n// --------------------------------------------------\n\n.ion-justify-content-start {\n justify-content: flex-start !important;\n}\n\n.ion-justify-content-center {\n justify-content: center !important;\n}\n\n.ion-justify-content-end {\n justify-content: flex-end !important;\n}\n\n.ion-justify-content-around {\n justify-content: space-around !important;\n}\n\n.ion-justify-content-between {\n justify-content: space-between !important;\n}\n\n.ion-justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n\n// Align Items\n// --------------------------------------------------\n\n.ion-align-items-start {\n align-items: flex-start !important;\n}\n\n.ion-align-items-center {\n align-items: center !important;\n}\n\n.ion-align-items-end {\n align-items: flex-end !important;\n}\n\n.ion-align-items-stretch {\n align-items: stretch !important;\n}\n\n.ion-align-items-baseline {\n align-items: baseline !important;\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Display\n// --------------------------------------------------\n// Modifies display of a particular element based on the given classes\n\n.ion-hide {\n display: none !important;\n}\n\n// Adds hidden classes\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `ion-hide-{bp}-up` classes for hiding the element based\n // on the breakpoint\n .ion-hide#{$infix}-up {\n display: none !important;\n }\n }\n\n @include media-breakpoint-down($breakpoint, $screen-breakpoints) {\n // Provide `ion-hide-{bp}-down` classes for hiding the element based\n // on the breakpoint\n .ion-hide#{$infix}-down {\n display: none !important;\n }\n }\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../src/themes/ionic.functions.font.scss","../src/css/padding.scss","../src/themes/ionic.mixins.scss","../src/css/float-elements.scss","../src/css/text-alignment.scss","../src/css/text-transformation.scss","../src/css/flex-utils.scss","../src/css/display.scss"],"names":[],"mappings":"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","file":"utils.bundle.css","sourcesContent":["@use \"sass:math\";\n\n$baselineSize: 16px !default;\n$baselineUnit: 1rem !default;\n\n/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font($size, $unit: $baselineUnit) {\n @return (math.div($size, $baselineSize)) * $unit;\n}\n\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font-max($size, $maxScale, $unit: $baselineUnit) {\n $baseScale: dynamic-font($size, $unit);\n $maxScale: $size * $maxScale;\n\n @return min($baseScale, $maxScale);\n}\n\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font-min($minScale, $size, $unit: $baselineUnit) {\n $baseScale: dynamic-font($size, $unit);\n $minScale: $size * $minScale;\n\n @return max($minScale, $baseScale);\n}\n\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n@function dynamic-font-clamp($minScale, $baseSize, $maxScale, $unit: $baselineUnit) {\n $baseScale: dynamic-font($baseSize, $unit);\n $maxScale: $baseSize * $maxScale;\n $minScale: $baseSize * $minScale;\n\n @return clamp($minScale, $baseScale, $maxScale);\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n\n// Element Space\n// --------------------------------------------------\n// Creates padding and margin attributes to be used on\n// any element\n\n$padding: var(--ion-padding, 16px);\n$margin: var(--ion-margin, 16px);\n\n// Padding\n// --------------------------------------------------\n\n.ion-no-padding {\n --padding-start: 0;\n --padding-end: 0;\n --padding-top: 0;\n --padding-bottom: 0;\n\n @include padding(0);\n}\n\n.ion-padding {\n --padding-start: #{$padding};\n --padding-end: #{$padding};\n --padding-top: #{$padding};\n --padding-bottom: #{$padding};\n\n @include padding($padding);\n}\n\n.ion-padding-top {\n --padding-top: #{$padding};\n\n @include padding($padding, null, null, null);\n}\n\n.ion-padding-start {\n --padding-start: #{$padding};\n\n @include padding-horizontal($padding, null);\n}\n\n.ion-padding-end {\n --padding-end: #{$padding};\n\n @include padding-horizontal(null, $padding);\n}\n\n.ion-padding-bottom {\n --padding-bottom: #{$padding};\n\n @include padding(null, null, $padding, null);\n}\n\n.ion-padding-vertical {\n --padding-top: #{$padding};\n --padding-bottom: #{$padding};\n\n @include padding($padding, null, $padding, null);\n}\n\n.ion-padding-horizontal {\n --padding-start: #{$padding};\n --padding-end: #{$padding};\n\n @include padding-horizontal($padding);\n}\n\n\n// Margin\n// --------------------------------------------------\n\n.ion-no-margin {\n --margin-start: 0;\n --margin-end: 0;\n --margin-top: 0;\n --margin-bottom: 0;\n\n @include margin(0);\n}\n\n.ion-margin {\n --margin-start: #{$margin};\n --margin-end: #{$margin};\n --margin-top: #{$margin};\n --margin-bottom: #{$margin};\n\n @include margin($margin);\n}\n\n.ion-margin-top {\n --margin-top: #{$margin};\n\n @include margin($margin, null, null, null);\n}\n\n.ion-margin-start {\n --margin-start: #{$margin};\n\n @include margin-horizontal($margin, null);\n}\n\n.ion-margin-end {\n --margin-end: #{$margin};\n\n @include margin-horizontal(null, $margin);\n}\n\n.ion-margin-bottom {\n --margin-bottom: #{$margin};\n\n @include margin(null, null, $margin, null);\n}\n\n.ion-margin-vertical {\n --margin-top: #{$margin};\n --margin-bottom: #{$margin};\n\n @include margin($margin, null, $margin, null);\n}\n\n.ion-margin-horizontal {\n --margin-start: #{$margin};\n --margin-end: #{$margin};\n\n @include margin-horizontal($margin);\n}\n","@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n background: transparent;\n cursor: pointer;\n\n appearance: none;\n outline: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n padding: 0;\n\n border: 0;\n outline: 0;\n clip: rect(0 0 0 0);\n\n opacity: 0;\n overflow: hidden;\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: str-split($root, \",\");\n $selectors: #{add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n \n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: str-split(str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr () {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n left: $start;\n right: $end;\n }\n } @else {\n @at-root {\n @supports (inset-inline-start: 0) {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n\n // TODO FW-3766\n @at-root {\n @supports not (inset-inline-start: 0) {\n & {\n @include ltr() {\n left: $start;\n right: $end;\n }\n @include rtl() {\n left: unset;\n right: unset;\n\n left: $end;\n right: $start;\n }\n }\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n @include multi-dir() {\n border-radius: $top-start;\n }\n } @else {\n @include ltr() {\n border-top-left-radius: $top-start;\n border-top-right-radius: $top-end;\n border-bottom-right-radius: $bottom-end;\n border-bottom-left-radius: $bottom-start;\n }\n\n @include rtl() {\n border-top-left-radius: $top-end;\n border-top-right-radius: $top-start;\n border-bottom-right-radius: $bottom-start;\n border-bottom-left-radius: $bottom-end;\n }\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: str-replace($transform, 'translate3d(');\n $transform: str-replace($transform, ')');\n\n $coordinates: str-split($transform, ',');\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == '0' or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Float Elements\n// --------------------------------------------------\n// Creates float classes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-float-{bp}-{side}` classes for floating the element based\n // on the breakpoint and side\n .ion-float#{$infix}-left {\n @include float(left, !important);\n }\n\n .ion-float#{$infix}-right {\n @include float(right, !important);\n }\n\n .ion-float#{$infix}-start {\n @include float(start, !important);\n }\n\n .ion-float#{$infix}-end {\n @include float(end, !important);\n }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Text Alignment\n// --------------------------------------------------\n// Creates text alignment attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for aligning the text based\n // on the breakpoint\n .ion-text#{$infix}-center {\n text-align: center !important;\n }\n\n .ion-text#{$infix}-justify {\n text-align: justify !important;\n }\n\n .ion-text#{$infix}-start {\n text-align: start !important;\n }\n\n .ion-text#{$infix}-end {\n text-align: end !important;\n }\n\n .ion-text#{$infix}-left {\n text-align: left !important;\n }\n\n .ion-text#{$infix}-right {\n text-align: right !important;\n }\n\n .ion-text#{$infix}-nowrap {\n white-space: nowrap !important;\n }\n\n .ion-text#{$infix}-wrap {\n white-space: normal !important;\n }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Text Transformation\n// --------------------------------------------------\n// Creates text transform attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for transforming the text based\n // on the breakpoint\n .ion-text#{$infix}-uppercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: uppercase !important;\n }\n\n .ion-text#{$infix}-lowercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: lowercase !important;\n }\n\n .ion-text#{$infix}-capitalize {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: capitalize !important;\n }\n }\n}\n","// Flex Utilities\n// --------------------------------------------------\n// Creates flex classes to align flex containers\n// and items\n\n// Align Self\n// --------------------------------------------------\n\n.ion-align-self-start {\n align-self: flex-start !important;\n}\n\n.ion-align-self-end {\n align-self: flex-end !important;\n}\n\n.ion-align-self-center {\n align-self: center !important;\n}\n\n.ion-align-self-stretch {\n align-self: stretch !important;\n}\n\n.ion-align-self-baseline {\n align-self: baseline !important;\n}\n\n.ion-align-self-auto {\n align-self: auto !important;\n}\n\n\n// Flex Wrap\n// --------------------------------------------------\n\n.ion-wrap {\n flex-wrap: wrap !important;\n}\n\n.ion-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.ion-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n\n// Justify Content\n// --------------------------------------------------\n\n.ion-justify-content-start {\n justify-content: flex-start !important;\n}\n\n.ion-justify-content-center {\n justify-content: center !important;\n}\n\n.ion-justify-content-end {\n justify-content: flex-end !important;\n}\n\n.ion-justify-content-around {\n justify-content: space-around !important;\n}\n\n.ion-justify-content-between {\n justify-content: space-between !important;\n}\n\n.ion-justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n\n// Align Items\n// --------------------------------------------------\n\n.ion-align-items-start {\n align-items: flex-start !important;\n}\n\n.ion-align-items-center {\n align-items: center !important;\n}\n\n.ion-align-items-end {\n align-items: flex-end !important;\n}\n\n.ion-align-items-stretch {\n align-items: stretch !important;\n}\n\n.ion-align-items-baseline {\n align-items: baseline !important;\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Display\n// --------------------------------------------------\n// Modifies display of a particular element based on the given classes\n\n.ion-hide {\n display: none !important;\n}\n\n// Adds hidden classes\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `ion-hide-{bp}-up` classes for hiding the element based\n // on the breakpoint\n .ion-hide#{$infix}-up {\n display: none !important;\n }\n }\n\n @include media-breakpoint-down($breakpoint, $screen-breakpoints) {\n // Provide `ion-hide-{bp}-down` classes for hiding the element based\n // on the breakpoint\n .ion-hide#{$infix}-down {\n display: none !important;\n }\n }\n}\n"]}
@@ -512,11 +512,25 @@ const createAnimation = (animationId) => {
512
512
  const updateKeyframes = (keyframeValues) => {
513
513
  if (supportsWebAnimations) {
514
514
  getWebAnimations().forEach((animation) => {
515
- if (animation.effect.setKeyframes) {
516
- animation.effect.setKeyframes(keyframeValues);
515
+ /**
516
+ * animation.effect's type is AnimationEffect.
517
+ * However, in this case we have a more specific
518
+ * type of AnimationEffect called KeyframeEffect which
519
+ * inherits from AnimationEffect. As a result,
520
+ * we cast animation.effect to KeyframeEffect.
521
+ */
522
+ const keyframeEffect = animation.effect;
523
+ /**
524
+ * setKeyframes is not supported in all browser
525
+ * versions that Ionic supports, so we need to
526
+ * check for support before using it.
527
+ */
528
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
529
+ if (keyframeEffect.setKeyframes) {
530
+ keyframeEffect.setKeyframes(keyframeValues);
517
531
  }
518
532
  else {
519
- const newEffect = new KeyframeEffect(animation.effect.target, keyframeValues, animation.effect.getTiming());
533
+ const newEffect = new KeyframeEffect(keyframeEffect.target, keyframeValues, keyframeEffect.getTiming());
520
534
  animation.effect = newEffect;
521
535
  }
522
536
  });
@@ -661,6 +675,7 @@ const createAnimation = (animationId) => {
661
675
  step = Math.min(Math.max(step, 0), 0.9999);
662
676
  if (supportsWebAnimations) {
663
677
  webAnimations.forEach((animation) => {
678
+ // When creating the animation the delay is guaranteed to be set to a number.
664
679
  animation.currentTime = animation.effect.getComputedTiming().delay + getDuration() * step;
665
680
  animation.pause();
666
681
  });
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const ionicGlobal = require('./ionic-global-fb752503.js');
6
+ const ionicGlobal = require('./ionic-global-ea2901a3.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-305a23dc.js');
6
+ const index$1 = require('./index-c2940dc1.js');
7
7
  const haptic = require('./haptic-678abc9f.js');
8
8
  const index = require('./index-0ee995e4.js');
9
9
 
@@ -42,10 +42,6 @@ const createLegacyFormController = (el) => {
42
42
  return { hasLegacyControl };
43
43
  };
44
44
  const hasLabelSlot = (controlEl) => {
45
- const root = controlEl.shadowRoot;
46
- if (root === null) {
47
- return false;
48
- }
49
45
  /**
50
46
  * Components that have a named label slot
51
47
  * also have other slots, so we need to query for
@@ -64,7 +60,7 @@ const hasLabelSlot = (controlEl) => {
64
60
  }
65
61
  return false;
66
62
  };
67
- const NAMED_LABEL_SLOT_COMPONENTS = ['ION-RANGE'];
63
+ const NAMED_LABEL_SLOT_COMPONENTS = ['ION-INPUT', 'ION-TEXTAREA', 'ION-SELECT', 'ION-RANGE'];
68
64
  const UNNAMED_LABEL_SLOT_COMPONENTS = ['ION-TOGGLE', 'ION-CHECKBOX', 'ION-RADIO'];
69
65
 
70
66
  exports.createLegacyFormController = createLegacyFormController;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index = require('./index-305a23dc.js');
6
+ const index = require('./index-c2940dc1.js');
7
7
  const helpers = require('./helpers-ea4ccbcb.js');
8
8
 
9
9
  const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
@@ -12,8 +12,8 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
12
12
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
13
13
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
14
14
 
15
- const iosTransitionAnimation = () => Promise.resolve().then(function () { return require('./ios.transition-a4d545dd.js'); });
16
- const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-80bb961b.js'); });
15
+ const iosTransitionAnimation = () => Promise.resolve().then(function () { return require('./ios.transition-ac909bc8.js'); });
16
+ const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-907af519.js'); });
17
17
  // TODO(FW-2832): types
18
18
  const transition = (opts) => {
19
19
  return new Promise((resolve, reject) => {
@@ -24,6 +24,7 @@ function _interopNamespace(e) {
24
24
  }
25
25
 
26
26
  const NAMESPACE = 'ionic';
27
+ const BUILD = /* ionic */ { allRenderFn: false, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: true, cmpDidUnload: false, cmpDidUpdate: true, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: true, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: true, experimentalSlotFixes: false, formAssociated: false, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: true, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, initializeNextTick: false, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: true, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, scoped: true, scopedSlotTextContentFix: false, scriptDataOpts: false, shadowDelegatesFocus: true, shadowDom: true, slot: true, slotChildNodesFix: false, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, transformTagName: false, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: true, watchCallback: true };
27
28
 
28
29
  /**
29
30
  * Virtual DOM patching algorithm based on Snabbdom by
@@ -73,6 +74,13 @@ const HYDRATE_ID = 's-id';
73
74
  const HYDRATED_STYLE_ID = 'sty-id';
74
75
  const HYDRATE_CHILD_ID = 'c-id';
75
76
  const HYDRATED_CSS = '{visibility:hidden}.hydrated{visibility:inherit}';
77
+ /**
78
+ * Constant for styles to be globally applied to `slot-fb` elements for pseudo-slot behavior.
79
+ *
80
+ * Two cascading rules must be used instead of a `:not()` selector due to Stencil browser
81
+ * support as of Stencil v4.
82
+ */
83
+ const SLOT_FB_CSS = 'slot-fb{display:contents}slot-fb[hidden]{display:none}';
76
84
  const XLINK_NS = 'http://www.w3.org/1999/xlink';
77
85
  /**
78
86
  * Default style mode id
@@ -608,6 +616,10 @@ const addStyle = (styleContainerNode, cmpMeta, mode) => {
608
616
  }
609
617
  styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector('link'));
610
618
  }
619
+ // Add styles for `slot-fb` elements if we're using slots outside the Shadow DOM
620
+ if (cmpMeta.$flags$ & 4 /* CMP_FLAGS.hasSlotRelocation */) {
621
+ styleElm.innerHTML += SLOT_FB_CSS;
622
+ }
611
623
  if (appliedStyles) {
612
624
  appliedStyles.add(scopeId);
613
625
  }
@@ -742,11 +754,19 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
742
754
  // except for the first character, we keep the event name case
743
755
  memberName = ln[2] + memberName.slice(3);
744
756
  }
745
- if (oldValue) {
746
- plt.rel(elm, memberName, oldValue, false);
747
- }
748
- if (newValue) {
749
- plt.ael(elm, memberName, newValue, false);
757
+ if (oldValue || newValue) {
758
+ // Need to account for "capture" events.
759
+ // If the event name ends with "Capture", we'll update the name to remove
760
+ // the "Capture" suffix and make sure the event listener is setup to handle the capture event.
761
+ const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);
762
+ // Make sure we only replace the last instance of "Capture"
763
+ memberName = memberName.replace(CAPTURE_EVENT_REGEX, '');
764
+ if (oldValue) {
765
+ plt.rel(elm, memberName, oldValue, capture);
766
+ }
767
+ if (newValue) {
768
+ plt.ael(elm, memberName, newValue, capture);
769
+ }
750
770
  }
751
771
  }
752
772
  else {
@@ -808,6 +828,8 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
808
828
  };
809
829
  const parseClassListRegex = /\s/;
810
830
  const parseClassList = (value) => (!value ? [] : value.split(parseClassListRegex));
831
+ const CAPTURE_EVENT_SUFFIX = 'Capture';
832
+ const CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + '$');
811
833
  const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
812
834
  // if the element passed in is a shadow root, which is a document fragment
813
835
  // then we want to be adding attrs/props to the shadow root's "host" element
@@ -841,6 +863,7 @@ const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
841
863
  * @returns the newly created node
842
864
  */
843
865
  const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
866
+ var _a;
844
867
  // tslint:disable-next-line: prefer-const
845
868
  const newVNode = newParentVNode.$children$[childIndex];
846
869
  let i = 0;
@@ -919,6 +942,8 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
919
942
  if (newVNode.$flags$ & (2 /* VNODE_FLAGS.isSlotFallback */ | 1 /* VNODE_FLAGS.isSlotReference */)) {
920
943
  // remember the content reference comment
921
944
  elm['s-sr'] = true;
945
+ // Persist the name of the slot that this slot was going to be projected into.
946
+ elm['s-fs'] = (_a = newVNode.$attrs$) === null || _a === void 0 ? void 0 : _a.slot;
922
947
  // remember the content reference comment
923
948
  elm['s-cr'] = contentRef;
924
949
  // remember the slot name, or empty string for default slot
@@ -935,6 +960,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
935
960
  return elm;
936
961
  };
937
962
  const putBackInOriginalLocation = (parentElm, recursive) => {
963
+ var _a;
938
964
  plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
939
965
  const oldSlotChildNodes = parentElm.childNodes;
940
966
  for (let i = oldSlotChildNodes.length - 1; i >= 0; i--) {
@@ -950,6 +976,14 @@ const putBackInOriginalLocation = (parentElm, recursive) => {
950
976
  // and move this to the correct spot if need be
951
977
  childNode['s-ol'].remove();
952
978
  childNode['s-ol'] = undefined;
979
+ // Reset so we can correctly move the node around again.
980
+ childNode['s-sh'] = undefined;
981
+ // When putting an element node back in its original location,
982
+ // we need to reset the `slot` attribute back to the value it originally had
983
+ // so we can correctly relocate it again in the future
984
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
985
+ childNode.setAttribute('slot', (_a = childNode['s-sn']) !== null && _a !== void 0 ? _a : '');
986
+ }
953
987
  checkSlotRelocate = true;
954
988
  }
955
989
  if (recursive) {
@@ -1400,22 +1434,26 @@ const updateFallbackSlotVisibility = (elm) => {
1400
1434
  // we need to check all of its sibling nodes in order to see if
1401
1435
  // `childNode` should be hidden
1402
1436
  for (const siblingNode of childNodes) {
1403
- if (siblingNode['s-hn'] !== childNode['s-hn'] || slotName !== '') {
1404
- // this sibling node is from a different component OR is a named
1405
- // fallback slot node
1406
- if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ && slotName === siblingNode.getAttribute('slot')) {
1407
- childNode.hidden = true;
1408
- break;
1437
+ // Don't check the node against itself
1438
+ if (siblingNode !== childNode) {
1439
+ if (siblingNode['s-hn'] !== childNode['s-hn'] || slotName !== '') {
1440
+ // this sibling node is from a different component OR is a named
1441
+ // fallback slot node
1442
+ if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ &&
1443
+ (slotName === siblingNode.getAttribute('slot') || slotName === siblingNode['s-sn'])) {
1444
+ childNode.hidden = true;
1445
+ break;
1446
+ }
1409
1447
  }
1410
- }
1411
- else {
1412
- // this is a default fallback slot node
1413
- // any element or text node (with content)
1414
- // should hide the default fallback slot node
1415
- if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1416
- (siblingNode.nodeType === 3 /* NODE_TYPE.TextNode */ && siblingNode.textContent.trim() !== '')) {
1417
- childNode.hidden = true;
1418
- break;
1448
+ else {
1449
+ // this is a default fallback slot node
1450
+ // any element or text node (with content)
1451
+ // should hide the default fallback slot node
1452
+ if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1453
+ (siblingNode.nodeType === 3 /* NODE_TYPE.TextNode */ && siblingNode.textContent.trim() !== '')) {
1454
+ childNode.hidden = true;
1455
+ break;
1456
+ }
1419
1457
  }
1420
1458
  }
1421
1459
  }
@@ -1456,8 +1494,15 @@ const markSlotContentForRelocation = (elm) => {
1456
1494
  node = hostContentNodes[j];
1457
1495
  // check that the node is not a content reference node or a node
1458
1496
  // reference and then check that the host name does not match that of
1459
- // childNode
1460
- if (!node['s-cn'] && !node['s-nr'] && node['s-hn'] !== childNode['s-hn']) {
1497
+ // childNode.
1498
+ // In addition, check that the slot either has not already been relocated, or
1499
+ // that its current location's host is not childNode's host. This is essentially
1500
+ // a check so that we don't try to relocate (and then hide) a node that is already
1501
+ // where it should be.
1502
+ if (!node['s-cn'] &&
1503
+ !node['s-nr'] &&
1504
+ node['s-hn'] !== childNode['s-hn'] &&
1505
+ (!BUILD.experimentalSlotFixes )) {
1461
1506
  // if `node` is located in the slot that `childNode` refers to (via the
1462
1507
  // `'s-sn'` property) then we need to relocate it from it's current spot
1463
1508
  // (under the host element parent) to the right slot location
@@ -1471,12 +1516,14 @@ const markSlotContentForRelocation = (elm) => {
1471
1516
  // ensure that the slot-name attr is correct
1472
1517
  node['s-sn'] = node['s-sn'] || slotName;
1473
1518
  if (relocateNodeData) {
1519
+ relocateNodeData.$nodeToRelocate$['s-sh'] = childNode['s-hn'];
1474
1520
  // we marked this node for relocation previously but didn't find
1475
1521
  // out the slot reference node to which it needs to be relocated
1476
1522
  // so write it down now!
1477
1523
  relocateNodeData.$slotRefNode$ = childNode;
1478
1524
  }
1479
1525
  else {
1526
+ node['s-sh'] = childNode['s-hn'];
1480
1527
  // add to our list of nodes to relocate
1481
1528
  relocateNodes.push({
1482
1529
  $slotRefNode$: childNode,
@@ -1564,6 +1611,7 @@ const nullifyVNodeRefs = (vNode) => {
1564
1611
  * @param isInitialLoad whether or not this is the first call after page load
1565
1612
  */
1566
1613
  const renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1614
+ var _a, _b;
1567
1615
  const hostElm = hostRef.$hostElement$;
1568
1616
  const cmpMeta = hostRef.$cmpMeta$;
1569
1617
  const oldVNode = hostRef.$vnode$ || newVNode(null, null);
@@ -1620,42 +1668,47 @@ const renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1620
1668
  plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
1621
1669
  if (checkSlotRelocate) {
1622
1670
  markSlotContentForRelocation(rootVnode.$elm$);
1623
- let relocateData;
1624
- let nodeToRelocate;
1625
- let orgLocationNode;
1626
- let parentNodeRef;
1627
- let insertBeforeNode;
1628
- let refNode;
1629
- let i = 0;
1630
- for (; i < relocateNodes.length; i++) {
1631
- relocateData = relocateNodes[i];
1632
- nodeToRelocate = relocateData.$nodeToRelocate$;
1671
+ for (const relocateData of relocateNodes) {
1672
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1633
1673
  if (!nodeToRelocate['s-ol']) {
1634
1674
  // add a reference node marking this node's original location
1635
1675
  // keep a reference to this node for later lookups
1636
- orgLocationNode =
1637
- doc.createTextNode('');
1676
+ const orgLocationNode = doc.createTextNode('');
1638
1677
  orgLocationNode['s-nr'] = nodeToRelocate;
1639
1678
  nodeToRelocate.parentNode.insertBefore((nodeToRelocate['s-ol'] = orgLocationNode), nodeToRelocate);
1640
1679
  }
1641
1680
  }
1642
- for (i = 0; i < relocateNodes.length; i++) {
1643
- relocateData = relocateNodes[i];
1644
- nodeToRelocate = relocateData.$nodeToRelocate$;
1645
- if (relocateData.$slotRefNode$) {
1646
- // by default we're just going to insert it directly
1647
- // after the slot reference node
1648
- parentNodeRef = relocateData.$slotRefNode$.parentNode;
1649
- insertBeforeNode = relocateData.$slotRefNode$.nextSibling;
1650
- orgLocationNode = nodeToRelocate['s-ol'];
1651
- while ((orgLocationNode = orgLocationNode.previousSibling)) {
1652
- refNode = orgLocationNode['s-nr'];
1653
- if (refNode && refNode['s-sn'] === nodeToRelocate['s-sn'] && parentNodeRef === refNode.parentNode) {
1654
- refNode = refNode.nextSibling;
1655
- if (!refNode || !refNode['s-nr']) {
1656
- insertBeforeNode = refNode;
1657
- break;
1681
+ for (const relocateData of relocateNodes) {
1682
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1683
+ const slotRefNode = relocateData.$slotRefNode$;
1684
+ if (slotRefNode) {
1685
+ const parentNodeRef = slotRefNode.parentNode;
1686
+ // When determining where to insert content, the most simple case would be
1687
+ // to relocate the node immediately following the slot reference node. We do this
1688
+ // by getting a reference to the node immediately following the slot reference node
1689
+ // since we will use `insertBefore` to manipulate the DOM.
1690
+ //
1691
+ // If there is no node immediately following the slot reference node, then we will just
1692
+ // end up appending the node as the last child of the parent.
1693
+ let insertBeforeNode = slotRefNode.nextSibling;
1694
+ // If the node we're currently planning on inserting the new node before is an element,
1695
+ // we need to do some additional checks to make sure we're inserting the node in the correct order.
1696
+ // The use case here would be that we have multiple nodes being relocated to the same slot. So, we want
1697
+ // to make sure they get inserted into their new how in the same order they were declared in their original location.
1698
+ //
1699
+ // TODO(STENCIL-914): Remove `experimentalSlotFixes` check
1700
+ {
1701
+ let orgLocationNode = (_a = nodeToRelocate['s-ol']) === null || _a === void 0 ? void 0 : _a.previousSibling;
1702
+ while (orgLocationNode) {
1703
+ let refNode = (_b = orgLocationNode['s-nr']) !== null && _b !== void 0 ? _b : null;
1704
+ if (refNode && refNode['s-sn'] === nodeToRelocate['s-sn'] && parentNodeRef === refNode.parentNode) {
1705
+ refNode = refNode.nextSibling;
1706
+ if (!refNode || !refNode['s-nr']) {
1707
+ insertBeforeNode = refNode;
1708
+ break;
1709
+ }
1658
1710
  }
1711
+ orgLocationNode = orgLocationNode.previousSibling;
1659
1712
  }
1660
1713
  }
1661
1714
  if ((!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode) ||
@@ -1668,7 +1721,10 @@ const renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1668
1721
  // probably a component in the index.html that doesn't have its hostname set
1669
1722
  nodeToRelocate['s-hn'] = nodeToRelocate['s-ol'].parentNode.nodeName;
1670
1723
  }
1671
- // add it back to the dom but in its new home
1724
+ // Add it back to the dom but in its new home
1725
+ // If we get to this point and `insertBeforeNode` is `null`, that means
1726
+ // we're just going to append the node as the last child of the parent. Passing
1727
+ // `null` as the second arg here will trigger that behavior.
1672
1728
  parentNodeRef.insertBefore(nodeToRelocate, insertBeforeNode);
1673
1729
  }
1674
1730
  }
@@ -2374,7 +2430,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2374
2430
  const customElements = win.customElements;
2375
2431
  const head = doc.head;
2376
2432
  const metaCharset = /*@__PURE__*/ head.querySelector('meta[charset]');
2377
- const visibilityStyle = /*@__PURE__*/ doc.createElement('style');
2433
+ const dataStyles = /*@__PURE__*/ doc.createElement('style');
2378
2434
  const deferredConnectedCallbacks = [];
2379
2435
  const styles = /*@__PURE__*/ doc.querySelectorAll(`[${HYDRATED_STYLE_ID}]`);
2380
2436
  let appLoadFallback;
@@ -2392,6 +2448,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2392
2448
  registerStyle(styles[i].getAttribute(HYDRATED_STYLE_ID), convertScopedToShadow(styles[i].innerHTML), true);
2393
2449
  }
2394
2450
  }
2451
+ let hasSlotRelocation = false;
2395
2452
  lazyBundles.map((lazyBundle) => {
2396
2453
  lazyBundle[1].map((compactMeta) => {
2397
2454
  var _a;
@@ -2401,6 +2458,11 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2401
2458
  $members$: compactMeta[2],
2402
2459
  $listeners$: compactMeta[3],
2403
2460
  };
2461
+ // Check if we are using slots outside the shadow DOM in this component.
2462
+ // We'll use this information later to add styles for `slot-fb` elements
2463
+ if (cmpMeta.$flags$ & 4 /* CMP_FLAGS.hasSlotRelocation */) {
2464
+ hasSlotRelocation = true;
2465
+ }
2404
2466
  {
2405
2467
  cmpMeta.$members$ = compactMeta[2];
2406
2468
  }
@@ -2463,15 +2525,23 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2463
2525
  }
2464
2526
  });
2465
2527
  });
2528
+ // Add styles for `slot-fb` elements if any of our components are using slots outside the Shadow DOM
2529
+ if (hasSlotRelocation) {
2530
+ dataStyles.innerHTML += SLOT_FB_CSS;
2531
+ }
2532
+ // Add hydration styles
2466
2533
  {
2467
- visibilityStyle.innerHTML = cmpTags + HYDRATED_CSS;
2468
- visibilityStyle.setAttribute('data-styles', '');
2534
+ dataStyles.innerHTML += cmpTags + HYDRATED_CSS;
2535
+ }
2536
+ // If we have styles, add them to the DOM
2537
+ if (dataStyles.innerHTML.length) {
2538
+ dataStyles.setAttribute('data-styles', '');
2539
+ head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);
2469
2540
  // Apply CSP nonce to the style tag if it exists
2470
2541
  const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
2471
2542
  if (nonce != null) {
2472
- visibilityStyle.setAttribute('nonce', nonce);
2543
+ dataStyles.setAttribute('nonce', nonce);
2473
2544
  }
2474
- head.insertBefore(visibilityStyle, metaCharset ? metaCharset.nextSibling : head.firstChild);
2475
2545
  }
2476
2546
  // Process deferred connectedCallbacks now all components have been registered
2477
2547
  isBootstrapping = false;
@@ -2672,7 +2742,7 @@ const flush = () => {
2672
2742
  }
2673
2743
  }
2674
2744
  };
2675
- const nextTick = /*@__PURE__*/ (cb) => promiseResolve().then(cb);
2745
+ const nextTick = (cb) => promiseResolve().then(cb);
2676
2746
  const readTask = /*@__PURE__*/ queueTask(queueDomReads, false);
2677
2747
  const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
2678
2748
 
@@ -6,8 +6,8 @@
6
6
  const index = require('./index-cc7dfb7c.js');
7
7
  const hardwareBackButton = require('./hardware-back-button-b67c8e75.js');
8
8
  const helpers = require('./helpers-ea4ccbcb.js');
9
- const ionicGlobal = require('./ionic-global-fb752503.js');
10
- const animation = require('./animation-c8bdd3c7.js');
9
+ const ionicGlobal = require('./ionic-global-ea2901a3.js');
10
+ const animation = require('./animation-1083855c.js');
11
11
 
12
12
  /**
13
13
  * baseAnimation
@@ -61,7 +61,6 @@ const findClosestIonContent = (el) => {
61
61
  * Scrolls to the top of the element. If an `ion-content` is found, it will scroll
62
62
  * using the public API `scrollToTop` with a duration.
63
63
  */
64
- // TODO(FW-2832): type
65
64
  const scrollToTop = (el, durationMs) => {
66
65
  if (isIonContent(el)) {
67
66
  const content = el;