@ionic/core 9.0.7-dev.11790887756.13f9320e → 9.0.7-nightly.20261002

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 (104) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-action-sheet.js +1 -1
  3. package/components/ion-alert.js +1 -1
  4. package/components/ion-app.js +1 -1
  5. package/components/ion-content.js +1 -1
  6. package/components/ion-datetime.js +1 -1
  7. package/components/ion-loading.js +1 -1
  8. package/components/ion-menu-button.js +1 -1
  9. package/components/ion-menu-toggle.js +1 -1
  10. package/components/ion-menu.js +1 -1
  11. package/components/ion-modal.js +1 -1
  12. package/components/ion-popover.js +1 -1
  13. package/components/ion-select-modal.js +1 -1
  14. package/components/ion-select-popover.js +1 -1
  15. package/components/ion-select.js +1 -1
  16. package/components/ion-toast.js +1 -1
  17. package/components/p-BNnmwjuy.js +4 -0
  18. package/components/{p-4QPSgC9s.js → p-BinR4_P7.js} +1 -1
  19. package/components/p-BsLM9eQu.js +4 -0
  20. package/components/{p-DjbwrsJd.js → p-CQjNc-Pz.js} +1 -1
  21. package/components/{p-BHFF2Rku.js → p-CiXOsJF2.js} +1 -1
  22. package/components/{p-CZlKzXag.js → p-CvzE7FFp.js} +1 -1
  23. package/components/p-DGLuPe1e.js +4 -0
  24. package/components/{p-BRCkmCrc.js → p-DPyjiKOq.js} +1 -1
  25. package/components/{p-CB2RQcuo.js → p-PPagT42x.js} +1 -1
  26. package/components/p-WMQuK_Tj.js +4 -0
  27. package/components/p-q2WJ5Igc.js +4 -0
  28. package/css/core.css.map +1 -1
  29. package/css/display.css.map +1 -1
  30. package/css/flex-utils.css.map +1 -1
  31. package/css/float-elements.css +1 -1
  32. package/css/float-elements.css.map +1 -1
  33. package/css/global.bundle.css.map +1 -1
  34. package/css/ionic.bundle.css +1 -1
  35. package/css/ionic.bundle.css.map +1 -1
  36. package/css/padding.css.map +1 -1
  37. package/css/structure.css.map +1 -1
  38. package/css/text-alignment.css.map +1 -1
  39. package/css/text-transformation.css.map +1 -1
  40. package/css/typography.css.map +1 -1
  41. package/css/utils.bundle.css +1 -1
  42. package/css/utils.bundle.css.map +1 -1
  43. package/dist/cjs/{index-fm08amr6.js → index-CElfU-dK.js} +1 -2
  44. package/dist/cjs/index.cjs.js +2 -2
  45. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  46. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  47. package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
  48. package/dist/cjs/ion-datetime.cjs.entry.js +1 -1
  49. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  50. package/dist/cjs/ion-menu_3.cjs.entry.js +4 -5
  51. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  52. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  53. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  54. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  55. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  56. package/dist/cjs/{overlays-CEt1Pxnd.js → overlays-C68wNDWY.js} +16 -75
  57. package/dist/collection/components/menu/menu.js +3 -4
  58. package/dist/collection/utils/hardware-back-button.js +12 -41
  59. package/dist/collection/utils/menu-controller/index.js +1 -2
  60. package/dist/collection/utils/overlays.js +4 -30
  61. package/dist/docs.json +1 -1
  62. package/dist/esm/{index-CzPyKjAQ.js → index-B9jhwvmO.js} +1 -2
  63. package/dist/esm/index.js +2 -2
  64. package/dist/esm/ion-action-sheet.entry.js +1 -1
  65. package/dist/esm/ion-alert.entry.js +1 -1
  66. package/dist/esm/ion-app_8.entry.js +2 -2
  67. package/dist/esm/ion-datetime.entry.js +1 -1
  68. package/dist/esm/ion-loading.entry.js +1 -1
  69. package/dist/esm/ion-menu_3.entry.js +4 -5
  70. package/dist/esm/ion-modal.entry.js +1 -1
  71. package/dist/esm/ion-popover.entry.js +1 -1
  72. package/dist/esm/ion-select-modal.entry.js +1 -1
  73. package/dist/esm/ion-select_3.entry.js +1 -1
  74. package/dist/esm/ion-toast.entry.js +1 -1
  75. package/dist/esm/{overlays-D5W_ly69.js → overlays-BQnV0HAU.js} +17 -74
  76. package/dist/ionic/index.esm.js +1 -1
  77. package/dist/ionic/ionic.esm.js +1 -1
  78. package/dist/ionic/{p-5112a8ba.entry.js → p-24b0a961.entry.js} +1 -1
  79. package/dist/ionic/{p-d0451c11.entry.js → p-30dcf43b.entry.js} +1 -1
  80. package/dist/ionic/{p-0111c108.entry.js → p-3a5faaa8.entry.js} +1 -1
  81. package/dist/ionic/{p-8a00d904.entry.js → p-3bd7e5df.entry.js} +1 -1
  82. package/dist/ionic/{p-22160ced.entry.js → p-636349e2.entry.js} +1 -1
  83. package/dist/ionic/{p-ffd45970.entry.js → p-7441ed2b.entry.js} +1 -1
  84. package/dist/ionic/{p-e063a7bf.entry.js → p-76309bab.entry.js} +1 -1
  85. package/dist/ionic/p-83448626.entry.js +4 -0
  86. package/dist/ionic/p-Ba6ZV-qU.js +4 -0
  87. package/dist/ionic/p-DZUqAr_6.js +4 -0
  88. package/dist/ionic/{p-ff664022.entry.js → p-b1164028.entry.js} +1 -1
  89. package/dist/ionic/{p-b798b4ec.entry.js → p-efa00ce5.entry.js} +1 -1
  90. package/dist/ionic/{p-5edc856b.entry.js → p-f9057f70.entry.js} +1 -1
  91. package/dist/types/utils/config.d.ts +1 -4
  92. package/dist/types/utils/hardware-back-button.d.ts +0 -11
  93. package/dist/types/utils/overlays.d.ts +2 -5
  94. package/hydrate/index.js +5 -13
  95. package/hydrate/index.mjs +5 -13
  96. package/package.json +1 -1
  97. package/components/p-BsOZAFNI.js +0 -4
  98. package/components/p-CArDvZQz.js +0 -4
  99. package/components/p-CKtw0kcb.js +0 -4
  100. package/components/p-CgwJ4NuD.js +0 -4
  101. package/components/p-vg8joG77.js +0 -4
  102. package/dist/ionic/p-C036rEeA.js +0 -4
  103. package/dist/ionic/p-OJpZr8fg.js +0 -4
  104. package/dist/ionic/p-b3346b86.entry.js +0 -4
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../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":"AAeA,gBACE,mBACA,iBACA,iBACA,oBCsTE,aDpTe,ECqTf,cDrTe,ECyUjB,YDzUiB,EC0UjB,eD1UiB,EAGnB,aACE,0CACA,wCACA,wCACA,2CCiTE,sBDpUM,yBCqUN,qBDrUM,yBCsUN,oBDtUM,yBCuUN,mBDvUM,yBCqVR,YDrVQ,yBCsVR,eDtVQ,yBAwBV,iBACE,wCC4TA,YDrVQ,yBA8BV,mBACE,0CCqSE,sBDpUM,yBCqUN,qBDrUM,yBAoCV,iBACE,wCCiSE,oBDtUM,yBCuUN,mBDvUM,yBA0CV,oBACE,2CC2SA,eDtVQ,yBAgDV,sBACE,wCACA,2CCmSA,YDrVQ,yBCsVR,eDtVQ,yBAuDV,wBACE,0CACA,wCC2QE,sBDpUM,yBCqUN,qBDrUM,yBCsUN,oBDtUM,yBCuUN,mBDvUM,yBAkEV,eACE,kBACA,gBACA,gBACA,mBC0PE,YDxPc,ECyPd,aDzPc,EC6QhB,WD7QgB,EC8QhB,cD9QgB,EAGlB,YACE,wCACA,sCACA,sCACA,yCCqPE,qBDnUK,wBCoUL,oBDpUK,wBCqUL,mBDrUK,wBCsUL,kBDtUK,wBCoVP,WDpVO,wBCqVP,cDrVO,wBAmFT,gBACE,sCCgQA,WDpVO,wBAyFT,kBACE,wCCyOE,qBDnUK,wBCoUL,oBDpUK,wBA+FT,gBACE,sCCqOE,mBDrUK,wBCsUL,kBDtUK,wBAqGT,mBACE,yCC+OA,cDrVO,wBA2GT,qBACE,sCACA,yCCuOA,WDpVO,wBCqVP,cDrVO,wBAkHT,uBACE,wCACA,sCC+ME,qBDnUK,wBCoUL,oBDpUK,wBCqUL,mBDrUK,wBCsUL,kBDtUK,wBEGL,gBD2dE,sBCvdF,iBDudE,uBCndF,iBDqcE,sBAzNO,0CA4NP,uBArNO,2BAqNP,uBA/MJ,8BAcW,0BAiMP,wBCpcF,eDwcE,uBAhOO,wCAmOP,sBA5NO,yBA4NP,sBAtNJ,8BAcW,wBAwMP,uBAnUF,yBCpJA,mBD2dE,sBCvdF,oBDudE,uBCndF,oBDqcE,sBAzNO,6CA4NP,uBArNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCpcF,kBDwcE,uBAhOO,2CAmOP,sBA5NO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBAnUF,yBCpJA,mBD2dE,sBCvdF,oBDudE,uBCndF,oBDqcE,sBAzNO,6CA4NP,uBArNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCpcF,kBDwcE,uBAhOO,2CAmOP,sBA5NO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBAnUF,yBCpJA,mBD2dE,sBCvdF,oBDudE,uBCndF,oBDqcE,sBAzNO,6CA4NP,uBArNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCpcF,kBDwcE,uBAhOO,2CAmOP,sBA5NO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBAnUF,0BCpJA,mBD2dE,sBCvdF,oBDudE,uBCndF,oBDqcE,sBAzNO,6CA4NP,uBArNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCpcF,kBDwcE,uBAhOO,2CAmOP,sBA5NO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBEvdF,iBACE,6BAGF,kBACE,8BAGF,gBACE,4BAGF,cACE,0BAGF,eACE,2BAGF,gBACE,4BAGF,iBACE,8BAGF,eACE,8BFuHF,yBEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BFuHF,yBEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BFuHF,yBEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BFuHF,0BEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BC7BF,oBAEE,oCAGF,oBAEE,oCAGF,qBAEE,qCHwIF,yBGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCHwIF,yBGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCHwIF,yBGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCHwIF,0BGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCCA,yBACE,oCADF,uBACE,kCADF,0BACE,gCADF,2BACE,uCADF,0BACE,sCADF,2BACE,iCJsIJ,yBIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCJsIJ,yBIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCJsIJ,yBIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCJsIJ,0BIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCAqBF,uBACE,6BADF,qBACE,2BADF,wBACE,8BADF,yBACE,+BADF,0BACE,gCJgHJ,yBIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCJgHJ,yBIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCJgHJ,yBIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCJgHJ,0BIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCAsBF,sBACE,4BADF,oBACE,0BADF,uBACE,6BADF,wBACE,8BADF,yBACE,+BADF,qBACE,2BJyFJ,yBI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BJyFJ,yBI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BJyFJ,yBI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BJyFJ,0BI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BAsBF,2BACE,sCADF,yBACE,oCADF,4BACE,kCADF,6BACE,yCADF,4BACE,wCADF,4BACE,wCJkEJ,yBInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCJkEJ,yBInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCJkEJ,yBInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCJkEJ,0BInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCAoBF,cACE,8BADF,sBACE,sCADF,iBACE,iCADF,yBACE,yCJ6CJ,yBI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CJ6CJ,yBI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CJ6CJ,yBI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CJ6CJ,0BI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CAmBN,UACE,0BADF,YACE,4BADF,kBACE,kCAQE,eACE,0BADF,iBACE,4BADF,uBACE,kCJgBJ,yBIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCJgBJ,yBIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCJgBJ,yBIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCJgBJ,0BIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCAoBF,YACE,kBADF,eACE,qBADF,kBACE,wBADF,eACE,qBJLJ,yBIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBJLJ,yBIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBJLJ,yBIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBJLJ,0BIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBAYJ,iBACE,uBAGF,iBACE,uBAGF,mBACE,yBAGF,mBACE,yBJ9BF,yBIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BJ9BF,yBIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BJ9BF,yBIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BJ9BF,0BIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BAWF,qCAGE,saAGF,oCJ/CA,yBIyCA,wCAGE,6cAGF,wCJ/CA,yBIyCA,wCAGE,6cAGF,wCJ/CA,yBIyCA,wCAGE,6cAGF,wCJ/CA,0BIyCA,wCAGE,6cAGF,wCCpMJ,UACE,wBAUE,aACE,wBAOF,eACE,wBLiIF,yBK1IA,gBACE,yBLkLF,4BK3KA,kBACE,yBLiIF,yBK1IA,gBACE,yBLkLF,4BK3KA,kBACE,yBLiIF,yBK1IA,gBACE,yBLkLF,4BK3KA,kBACE,yBLiIF,0BK1IA,gBACE,yBLkLF,6BK3KA,kBACE,yBAwBA,kBACE,wBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,0BKzGE,qBACE,yBADF,oBACE,0BLwGJ,yBKzGE,uBACE,2BLwGJ,yBKzGE,uBACE,2BLwGJ,yBKzGE,uBACE,2BLwGJ,0BKzGE,uBACE,2BADF,0BACE,gCLwGJ,yBKzGE,6BACE,iCLwGJ,yBKzGE,6BACE,iCLwGJ,yBKzGE,6BACE,iCLwGJ,0BKzGE,6BACE,iCADF,mBACE,yBLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,0BKzGE,sBACE,0BADF,kBACE,wBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,0BKzGE,qBACE,yBADF,yBACE,+BLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,0BKzGE,4BACE,gCADF,kBACE,wBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,0BKzGE,qBACE,yBADF,yBACE,+BLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,0BKzGE,4BACE,gCADF,mBACE,yBLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,0BKzGE,sBACE,0BADF,wBACE,8BLwGJ,yBKzGE,2BACE,+BLwGJ,yBKzGE,2BACE,+BLwGJ,yBKzGE,2BACE,+BLwGJ,0BKzGE,2BACE,+BADF,uBACE,6BLwGJ,yBKzGE,0BACE,8BLwGJ,yBKzGE,0BACE,8BLwGJ,yBKzGE,0BACE,8BLwGJ,0BKzGE,0BACE","file":"utils.bundle.css","sourcesContent":["@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","\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\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 & {\n inset-inline-start: $start;\n inset-inline-end: $end;\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 border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\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","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Flex Utilities\n// ------------------------------------------------------------------\n// Provides utility classes to control flexbox layout, alignment,\n// and sizing of elements. Includes responsive variants for managing\n// flex direction, alignment, justification, wrapping, growth,\n// shrinking, and ordering at different breakpoints.\n\n// Align Content\n// ------------------------------------------------------------------\n\n$align-content-values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n stretch: stretch\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $key, $value in $align-content-values {\n .ion-align-content#{$infix}-#{$key} {\n align-content: #{$value} !important;\n }\n }\n }\n}\n\n// Align Items\n// ------------------------------------------------------------------\n\n$align-items-values: (\n start,\n end,\n center,\n stretch,\n baseline\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $align-items-values {\n .ion-align-items#{$infix}-#{$value} {\n align-items: #{$value} !important;\n }\n }\n }\n}\n\n// Align Self\n// ------------------------------------------------------------------\n\n$align-self-values: (\n start,\n end,\n center,\n stretch,\n baseline,\n auto\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $align-self-values {\n .ion-align-self#{$infix}-#{$value} {\n align-self: #{$value} !important;\n }\n }\n }\n}\n\n// Justify Content\n// ------------------------------------------------------------------\n\n$justify-content-values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n evenly: space-evenly\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $key, $value in $justify-content-values {\n .ion-justify-content#{$infix}-#{$key} {\n justify-content: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Direction\n// ------------------------------------------------------------------\n\n$flex-direction-values: (\n row,\n row-reverse,\n column,\n column-reverse\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $flex-direction-values {\n .ion-flex#{$infix}-#{$value} {\n flex-direction: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Wrap\n// ------------------------------------------------------------------\n\n$flex-wrap-values: (\n wrap,\n nowrap,\n wrap-reverse\n);\n\n@each $value in $flex-wrap-values {\n // TODO(FW-6697): remove ion-wrap, ion-nowrap, ion-wrap-reverse\n // in favor of the new ion-flex-wrap, ion-flex-nowrap, and\n // ion-flex-wrap-reverse classes\n .ion-#{$value} {\n flex-wrap: #{$value} !important;\n }\n}\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $flex-wrap-values {\n .ion-flex#{$infix}-#{$value} {\n flex-wrap: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Fill\n// ------------------------------------------------------------------\n\n$flex-fill-values: (\n 1,\n auto,\n initial,\n none\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $flex-fill-values {\n .ion-flex#{$infix}-#{$value} {\n flex: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Grow and Shrink\n// ------------------------------------------------------------------\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n .ion-flex#{$infix}-grow-0 {\n flex-grow: 0 !important;\n }\n\n .ion-flex#{$infix}-grow-1 {\n flex-grow: 1 !important;\n }\n\n .ion-flex#{$infix}-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .ion-flex#{$infix}-shrink-1 {\n flex-shrink: 1 !important;\n }\n }\n}\n\n// Flex Order\n// ------------------------------------------------------------------\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n .ion-order#{$infix}-first { order: -1 !important; }\n\n @for $i from 0 through 12 {\n .ion-order#{$infix}-#{$i} { order: #{$i} !important; }\n }\n\n .ion-order#{$infix}-last { order: 13 !important; }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Display\n// ------------------------------------------------------------------\n// Provides utility classes to control the CSS display property\n// of elements. Includes responsive variants for toggling between\n// block, inline, flex, grid, and other display values at different\n// breakpoints.\n\n// TODO(FW-6697): remove ion-hide-* classes in favor of the new\n// ion-display-* classes\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\n$display-values: (\n none,\n inline,\n inline-block,\n block,\n flex,\n inline-flex,\n grid,\n inline-grid,\n table,\n table-cell,\n table-row\n);\n\n@each $display in $display-values {\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 .ion-display#{$infix}-#{$display} {\n display: #{$display} !important;\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../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":"AAeA,gBACE,mBACA,iBACA,iBACA,oBC2TE,aDzTe,EC0Tf,cD1Te,EC8UjB,YD9UiB,EC+UjB,eD/UiB,EAGnB,aACE,0CACA,wCACA,wCACA,2CCsTE,sBDzUM,yBC0UN,qBD1UM,yBC2UN,oBD3UM,yBC4UN,mBD5UM,yBC0VR,YD1VQ,yBC2VR,eD3VQ,yBAwBV,iBACE,wCCiUA,YD1VQ,yBA8BV,mBACE,0CC0SE,sBDzUM,yBC0UN,qBD1UM,yBAoCV,iBACE,wCCsSE,oBD3UM,yBC4UN,mBD5UM,yBA0CV,oBACE,2CCgTA,eD3VQ,yBAgDV,sBACE,wCACA,2CCwSA,YD1VQ,yBC2VR,eD3VQ,yBAuDV,wBACE,0CACA,wCCgRE,sBDzUM,yBC0UN,qBD1UM,yBC2UN,oBD3UM,yBC4UN,mBD5UM,yBAkEV,eACE,kBACA,gBACA,gBACA,mBC+PE,YD7Pc,EC8Pd,aD9Pc,ECkRhB,WDlRgB,ECmRhB,cDnRgB,EAGlB,YACE,wCACA,sCACA,sCACA,yCC0PE,qBDxUK,wBCyUL,oBDzUK,wBC0UL,mBD1UK,wBC2UL,kBD3UK,wBCyVP,WDzVO,wBC0VP,cD1VO,wBAmFT,gBACE,sCCqQA,WDzVO,wBAyFT,kBACE,wCC8OE,qBDxUK,wBCyUL,oBDzUK,wBA+FT,gBACE,sCC0OE,mBD1UK,wBC2UL,kBD3UK,wBAqGT,mBACE,yCCoPA,cD1VO,wBA2GT,qBACE,sCACA,yCC4OA,WDzVO,wBC0VP,cD1VO,wBAkHT,uBACE,wCACA,sCCoNE,qBDxUK,wBCyUL,oBDzUK,wBC0UL,mBD1UK,wBC2UL,kBD3UK,wBEML,gBD6dE,sBCzdF,iBDydE,uBCrdF,iBDucE,sBAlNO,2BAqNP,uBA/MJ,8BAcW,0BAiMP,wBCtcF,eD0cE,uBAzNO,yBA4NP,sBAtNJ,8BAcW,wBAwMP,uBAxUF,yBCjJA,mBD6dE,sBCzdF,oBDydE,uBCrdF,oBDucE,sBAlNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCtcF,kBD0cE,uBAzNO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBAxUF,yBCjJA,mBD6dE,sBCzdF,oBDydE,uBCrdF,oBDucE,sBAlNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCtcF,kBD0cE,uBAzNO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBAxUF,yBCjJA,mBD6dE,sBCzdF,oBDydE,uBCrdF,oBDucE,sBAlNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCtcF,kBD0cE,uBAzNO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBAxUF,0BCjJA,mBD6dE,sBCzdF,oBDydE,uBCrdF,oBDucE,sBAlNO,8BAqNP,uBA/MJ,8BAcW,6BAiMP,wBCtcF,kBD0cE,uBAzNO,4BA4NP,sBAtNJ,8BAcW,2BAwMP,wBE5dF,iBACE,6BAGF,kBACE,8BAGF,gBACE,4BAGF,cACE,0BAGF,eACE,2BAGF,gBACE,4BAGF,iBACE,8BAGF,eACE,8BFuHF,yBEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BFuHF,yBEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BFuHF,yBEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BFuHF,0BEpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BC7BF,oBAEE,oCAGF,oBAEE,oCAGF,qBAEE,qCHwIF,yBGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCHwIF,yBGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCHwIF,yBGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCHwIF,0BGpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCCA,yBACE,oCADF,uBACE,kCADF,0BACE,gCADF,2BACE,uCADF,0BACE,sCADF,2BACE,iCJsIJ,yBIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCJsIJ,yBIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCJsIJ,yBIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCJsIJ,0BIvIE,4BACE,oCADF,0BACE,kCADF,6BACE,gCADF,8BACE,uCADF,6BACE,sCADF,8BACE,kCAqBF,uBACE,6BADF,qBACE,2BADF,wBACE,8BADF,yBACE,+BADF,0BACE,gCJgHJ,yBIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCJgHJ,yBIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCJgHJ,yBIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCJgHJ,0BIjHE,0BACE,6BADF,wBACE,2BADF,2BACE,8BADF,4BACE,+BADF,6BACE,iCAsBF,sBACE,4BADF,oBACE,0BADF,uBACE,6BADF,wBACE,8BADF,yBACE,+BADF,qBACE,2BJyFJ,yBI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BJyFJ,yBI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BJyFJ,yBI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BJyFJ,0BI1FE,yBACE,4BADF,uBACE,0BADF,0BACE,6BADF,2BACE,8BADF,4BACE,+BADF,wBACE,4BAsBF,2BACE,sCADF,yBACE,oCADF,4BACE,kCADF,6BACE,yCADF,4BACE,wCADF,4BACE,wCJkEJ,yBInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCJkEJ,yBInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCJkEJ,yBInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCJkEJ,0BInEE,8BACE,sCADF,4BACE,oCADF,+BACE,kCADF,gCACE,yCADF,+BACE,wCADF,+BACE,yCAoBF,cACE,8BADF,sBACE,sCADF,iBACE,iCADF,yBACE,yCJ6CJ,yBI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CJ6CJ,yBI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CJ6CJ,yBI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CJ6CJ,0BI9CE,iBACE,8BADF,yBACE,sCADF,oBACE,iCADF,4BACE,0CAmBN,UACE,0BADF,YACE,4BADF,kBACE,kCAQE,eACE,0BADF,iBACE,4BADF,uBACE,kCJgBJ,yBIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCJgBJ,yBIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCJgBJ,yBIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCJgBJ,0BIjBE,kBACE,0BADF,oBACE,4BADF,0BACE,mCAoBF,YACE,kBADF,eACE,qBADF,kBACE,wBADF,eACE,qBJLJ,yBIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBJLJ,yBIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBJLJ,yBIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBJLJ,0BIIE,eACE,kBADF,kBACE,qBADF,qBACE,wBADF,kBACE,sBAYJ,iBACE,uBAGF,iBACE,uBAGF,mBACE,yBAGF,mBACE,yBJ9BF,yBIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BJ9BF,yBIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BJ9BF,yBIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BJ9BF,0BIiBA,oBACE,uBAGF,oBACE,uBAGF,sBACE,yBAGF,sBACE,0BAWF,qCAGE,saAGF,oCJ/CA,yBIyCA,wCAGE,6cAGF,wCJ/CA,yBIyCA,wCAGE,6cAGF,wCJ/CA,yBIyCA,wCAGE,6cAGF,wCJ/CA,0BIyCA,wCAGE,6cAGF,wCCpMJ,UACE,wBAUE,aACE,wBAOF,eACE,wBLiIF,yBK1IA,gBACE,yBLkLF,4BK3KA,kBACE,yBLiIF,yBK1IA,gBACE,yBLkLF,4BK3KA,kBACE,yBLiIF,yBK1IA,gBACE,yBLkLF,4BK3KA,kBACE,yBLiIF,0BK1IA,gBACE,yBLkLF,6BK3KA,kBACE,yBAwBA,kBACE,wBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,0BKzGE,qBACE,yBADF,oBACE,0BLwGJ,yBKzGE,uBACE,2BLwGJ,yBKzGE,uBACE,2BLwGJ,yBKzGE,uBACE,2BLwGJ,0BKzGE,uBACE,2BADF,0BACE,gCLwGJ,yBKzGE,6BACE,iCLwGJ,yBKzGE,6BACE,iCLwGJ,yBKzGE,6BACE,iCLwGJ,0BKzGE,6BACE,iCADF,mBACE,yBLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,0BKzGE,sBACE,0BADF,kBACE,wBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,0BKzGE,qBACE,yBADF,yBACE,+BLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,0BKzGE,4BACE,gCADF,kBACE,wBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,yBKzGE,qBACE,yBLwGJ,0BKzGE,qBACE,yBADF,yBACE,+BLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,yBKzGE,4BACE,gCLwGJ,0BKzGE,4BACE,gCADF,mBACE,yBLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,yBKzGE,sBACE,0BLwGJ,0BKzGE,sBACE,0BADF,wBACE,8BLwGJ,yBKzGE,2BACE,+BLwGJ,yBKzGE,2BACE,+BLwGJ,yBKzGE,2BACE,+BLwGJ,0BKzGE,2BACE,+BADF,uBACE,6BLwGJ,yBKzGE,0BACE,8BLwGJ,yBKzGE,0BACE,8BLwGJ,yBKzGE,0BACE,8BLwGJ,0BKzGE,0BACE","file":"utils.bundle.css","sourcesContent":["@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","\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\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// Whether `rtl()` emits `:host-context()` selectors. Global stylesheets\n// set this to false: they apply to the document, where `:host-context()`\n// never matches, and Lightning CSS warns about every occurrence.\n$rtl-use-host-context: true !default;\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 $rtl-use-host-context and 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 & {\n inset-inline-start: $start;\n inset-inline-end: $end;\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 border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\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","// Global stylesheet: `:host-context()` never matches outside a shadow root\n$rtl-use-host-context: false;\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","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Flex Utilities\n// ------------------------------------------------------------------\n// Provides utility classes to control flexbox layout, alignment,\n// and sizing of elements. Includes responsive variants for managing\n// flex direction, alignment, justification, wrapping, growth,\n// shrinking, and ordering at different breakpoints.\n\n// Align Content\n// ------------------------------------------------------------------\n\n$align-content-values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n stretch: stretch\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $key, $value in $align-content-values {\n .ion-align-content#{$infix}-#{$key} {\n align-content: #{$value} !important;\n }\n }\n }\n}\n\n// Align Items\n// ------------------------------------------------------------------\n\n$align-items-values: (\n start,\n end,\n center,\n stretch,\n baseline\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $align-items-values {\n .ion-align-items#{$infix}-#{$value} {\n align-items: #{$value} !important;\n }\n }\n }\n}\n\n// Align Self\n// ------------------------------------------------------------------\n\n$align-self-values: (\n start,\n end,\n center,\n stretch,\n baseline,\n auto\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $align-self-values {\n .ion-align-self#{$infix}-#{$value} {\n align-self: #{$value} !important;\n }\n }\n }\n}\n\n// Justify Content\n// ------------------------------------------------------------------\n\n$justify-content-values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n evenly: space-evenly\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $key, $value in $justify-content-values {\n .ion-justify-content#{$infix}-#{$key} {\n justify-content: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Direction\n// ------------------------------------------------------------------\n\n$flex-direction-values: (\n row,\n row-reverse,\n column,\n column-reverse\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $flex-direction-values {\n .ion-flex#{$infix}-#{$value} {\n flex-direction: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Wrap\n// ------------------------------------------------------------------\n\n$flex-wrap-values: (\n wrap,\n nowrap,\n wrap-reverse\n);\n\n@each $value in $flex-wrap-values {\n // TODO(FW-6697): remove ion-wrap, ion-nowrap, ion-wrap-reverse\n // in favor of the new ion-flex-wrap, ion-flex-nowrap, and\n // ion-flex-wrap-reverse classes\n .ion-#{$value} {\n flex-wrap: #{$value} !important;\n }\n}\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $flex-wrap-values {\n .ion-flex#{$infix}-#{$value} {\n flex-wrap: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Fill\n// ------------------------------------------------------------------\n\n$flex-fill-values: (\n 1,\n auto,\n initial,\n none\n);\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n @each $value in $flex-fill-values {\n .ion-flex#{$infix}-#{$value} {\n flex: #{$value} !important;\n }\n }\n }\n}\n\n// Flex Grow and Shrink\n// ------------------------------------------------------------------\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n .ion-flex#{$infix}-grow-0 {\n flex-grow: 0 !important;\n }\n\n .ion-flex#{$infix}-grow-1 {\n flex-grow: 1 !important;\n }\n\n .ion-flex#{$infix}-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .ion-flex#{$infix}-shrink-1 {\n flex-shrink: 1 !important;\n }\n }\n}\n\n// Flex Order\n// ------------------------------------------------------------------\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n .ion-order#{$infix}-first { order: -1 !important; }\n\n @for $i from 0 through 12 {\n .ion-order#{$infix}-#{$i} { order: #{$i} !important; }\n }\n\n .ion-order#{$infix}-last { order: 13 !important; }\n }\n}\n","@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Display\n// ------------------------------------------------------------------\n// Provides utility classes to control the CSS display property\n// of elements. Includes responsive variants for toggling between\n// block, inline, flex, grid, and other display values at different\n// breakpoints.\n\n// TODO(FW-6697): remove ion-hide-* classes in favor of the new\n// ion-display-* classes\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\n$display-values: (\n none,\n inline,\n inline-block,\n block,\n flex,\n inline-flex,\n grid,\n inline-grid,\n table,\n table-cell,\n table-row\n);\n\n@each $display in $display-values {\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 .ion-display#{$infix}-#{$display} {\n display: #{$display} !important;\n }\n }\n }\n}\n"]}
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var helpers = require('./helpers-Crluoxqu.js');
7
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
7
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
8
8
  var index = require('./index-SAR1xwtW.js');
9
9
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
10
10
  var animation = require('./animation-BFKyYY11.js');
@@ -273,7 +273,6 @@ const createMenuController = () => {
273
273
  registerAnimation('reveal', menuRevealAnimation);
274
274
  registerAnimation('push', menuPushAnimation);
275
275
  registerAnimation('overlay', menuOverlayAnimation);
276
- hardwareBackButton.addCloseWatcherCondition(() => _getOpenSync() !== undefined);
277
276
  helpers.doc?.addEventListener('ionBackButton', (ev) => {
278
277
  const openMenu = _getOpenSync();
279
278
  if (openMenu) {
@@ -15,8 +15,8 @@ var index$2 = require('./index-SAR1xwtW.js');
15
15
  var index$3 = require('./index-BSD7toMO.js');
16
16
  var config = require('./config-CjUbvdPW.js');
17
17
  var theme = require('./theme-Bw0rpaNN.js');
18
- var index$4 = require('./index-fm08amr6.js');
19
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
18
+ var index$4 = require('./index-CElfU-dK.js');
19
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
20
20
  require('./gesture-controller-CeJslptU.js');
21
21
  require('./dir-zwDPRE5K.js');
22
22
  require('./framework-delegate-DTLbqaaO.js');
@@ -7,7 +7,7 @@ var index = require('./index-SAR1xwtW.js');
7
7
  var buttonActive = require('./button-active-CEQaiV9N.js');
8
8
  var helpers = require('./helpers-Crluoxqu.js');
9
9
  var lockController = require('./lock-controller-aDB9wrEf.js');
10
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
10
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
11
11
  var selectOptionRender = require('./select-option-render-C-Yh9yZG.js');
12
12
  var theme = require('./theme-Bw0rpaNN.js');
13
13
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
@@ -9,7 +9,7 @@ var buttonActive = require('./button-active-CEQaiV9N.js');
9
9
  var helpers = require('./helpers-Crluoxqu.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
11
11
  var overlayControlLabel = require('./overlay-control-label-D2sdL2O8.js');
12
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
12
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
13
13
  var index$1 = require('./index-BSD7toMO.js');
14
14
  var selectOptionRender = require('./select-option-render-C-Yh9yZG.js');
15
15
  var theme = require('./theme-Bw0rpaNN.js');
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-SAR1xwtW.js');
7
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
7
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
8
8
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
9
9
  var helpers = require('./helpers-Crluoxqu.js');
10
10
  var dir = require('./dir-zwDPRE5K.js');
@@ -43,7 +43,7 @@ const App = class {
43
43
  const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
44
44
  Promise.resolve().then(function () { return require('./input-shims-CHghGZe-.js'); }).then((module) => module.startInputShims(index.config, platform));
45
45
  }
46
- const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./overlays-CEt1Pxnd.js'); }).then(function (n) { return n.hardwareBackButton; });
46
+ const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./overlays-C68wNDWY.js'); }).then(function (n) { return n.hardwareBackButton; });
47
47
  const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
48
48
  if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
49
49
  hardwareBackButtonModule.startHardwareBackButton();
@@ -6,7 +6,7 @@
6
6
  var index = require('./index-SAR1xwtW.js');
7
7
  var focusVisible = require('./focus-visible-CCvKiLh3.js');
8
8
  var helpers = require('./helpers-Crluoxqu.js');
9
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
9
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
10
10
  var dir = require('./dir-zwDPRE5K.js');
11
11
  var theme = require('./theme-Bw0rpaNN.js');
12
12
  var index$1 = require('./index-wOmugbdg.js');
@@ -7,7 +7,7 @@ var index = require('./index-SAR1xwtW.js');
7
7
  var config = require('./config-CjUbvdPW.js');
8
8
  var helpers = require('./helpers-Crluoxqu.js');
9
9
  var lockController = require('./lock-controller-aDB9wrEf.js');
10
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
10
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
11
11
  var index$1 = require('./index-BSD7toMO.js');
12
12
  var theme = require('./theme-Bw0rpaNN.js');
13
13
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
@@ -5,10 +5,10 @@
5
5
 
6
6
  var index = require('./index-SAR1xwtW.js');
7
7
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
8
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
8
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
9
9
  var gestureController = require('./gesture-controller-CeJslptU.js');
10
10
  var helpers = require('./helpers-Crluoxqu.js');
11
- var index$1 = require('./index-fm08amr6.js');
11
+ var index$1 = require('./index-CElfU-dK.js');
12
12
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
13
13
  var theme = require('./theme-Bw0rpaNN.js');
14
14
  var index$2 = require('./index-wOmugbdg.js');
@@ -565,7 +565,6 @@ const Menu = class {
565
565
  // emit opened/closed events
566
566
  this._isOpen = isOpen;
567
567
  this.isAnimating = false;
568
- hardwareBackButton.updateCloseWatcher();
569
568
  if (!this._isOpen) {
570
569
  this.blocker.unblock();
571
570
  }
@@ -662,14 +661,14 @@ const Menu = class {
662
661
  * the ionBackButton listener in the menu controller
663
662
  * will handle closing the menu when Escape is pressed.
664
663
  */
665
- return (index.h(index.Host, { key: '5cf26df26d4e539860cbeaea98ec621b98c3fcfc', onKeyDown: hardwareBackButton.shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
664
+ return (index.h(index.Host, { key: '1208ba437fa58680325408d3d4c8580950da1d68', onKeyDown: hardwareBackButton.shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
666
665
  [mode]: true,
667
666
  [`menu-type-${type}`]: true,
668
667
  'menu-enabled': !disabled,
669
668
  [`menu-side-${side}`]: true,
670
669
  'menu-pane-visible': isPaneVisible,
671
670
  'split-pane-side': theme.hostContext('ion-split-pane', el),
672
- } }, index.h("div", { key: 'f337016e293bb8665c99762e0c389dd6c372bb33', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, index.h("slot", { key: '4c3fe331aa42cd57d7ad9bd1f5910f8eeb62d7da' })), index.h("ion-backdrop", { key: '61af7ea876d81574841e1dd3e81e2352e555d096', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
671
+ } }, index.h("div", { key: 'c0ddc957b7a7956b41901d77ae02d91e73071c55', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, index.h("slot", { key: '6e44c56116431a024f114ab85ded1b822c942fac' })), index.h("ion-backdrop", { key: '5f4bbcf84444d96ec6b02bf567e1aaf95f59078d', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
673
672
  }
674
673
  get el() { return index.getElement(this); }
675
674
  static get watchers() { return {
@@ -9,7 +9,7 @@ var frameworkDelegate = require('./framework-delegate-DTLbqaaO.js');
9
9
  var helpers = require('./helpers-Crluoxqu.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
11
11
  var capacitor = require('./capacitor-BMzmHhwe.js');
12
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
12
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
13
13
  var theme = require('./theme-Bw0rpaNN.js');
14
14
  var index$3 = require('./index-CgXTRA_-.js');
15
15
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-SAR1xwtW.js');
7
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
7
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
8
8
  var frameworkDelegate = require('./framework-delegate-DTLbqaaO.js');
9
9
  var helpers = require('./helpers-Crluoxqu.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
@@ -6,7 +6,7 @@
6
6
  var index = require('./index-SAR1xwtW.js');
7
7
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
8
8
  var overlayControlLabel = require('./overlay-control-label-D2sdL2O8.js');
9
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
9
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
10
10
  var selectOptionRender = require('./select-option-render-C-Yh9yZG.js');
11
11
  var theme = require('./theme-Bw0rpaNN.js');
12
12
  require('./helpers-Crluoxqu.js');
@@ -9,7 +9,7 @@ var slotMutationController = require('./slot-mutation-controller-zixZ5LyH.js');
9
9
  var compareWithUtils = require('./compare-with-utils-DSicavqM.js');
10
10
  var validity = require('./validity-BpS37YFM.js');
11
11
  var helpers = require('./helpers-Crluoxqu.js');
12
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
12
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
13
13
  var dir = require('./dir-zwDPRE5K.js');
14
14
  var index$2 = require('./index-BSD7toMO.js');
15
15
  var theme = require('./theme-Bw0rpaNN.js');
@@ -7,7 +7,7 @@ var index = require('./index-SAR1xwtW.js');
7
7
  var config = require('./config-CjUbvdPW.js');
8
8
  var helpers = require('./helpers-Crluoxqu.js');
9
9
  var lockController = require('./lock-controller-aDB9wrEf.js');
10
- var hardwareBackButton = require('./overlays-CEt1Pxnd.js');
10
+ var hardwareBackButton = require('./overlays-C68wNDWY.js');
11
11
  var index$2 = require('./index-BSD7toMO.js');
12
12
  var theme = require('./theme-Bw0rpaNN.js');
13
13
  var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
@@ -35,23 +35,6 @@ const shouldUseCloseWatcher = () => index.config.get('experimentalCloseWatcher',
35
35
  const blockHardwareBackButton = () => {
36
36
  document.addEventListener('backbutton', () => { });
37
37
  };
38
- const closeWatcherConditions = [];
39
- let syncCloseWatcher;
40
- /**
41
- * Registers a check for whether the back button
42
- * has something to close. The CloseWatcher is only
43
- * active while one of these checks passes.
44
- */
45
- const addCloseWatcherCondition = (condition) => {
46
- closeWatcherConditions.push(condition);
47
- };
48
- /**
49
- * Call this whenever something the back button
50
- * can close opens or closes.
51
- */
52
- const updateCloseWatcher = () => {
53
- syncCloseWatcher?.();
54
- };
55
38
  const startHardwareBackButton = () => {
56
39
  const doc = document;
57
40
  let busy = false;
@@ -103,44 +86,32 @@ const startHardwareBackButton = () => {
103
86
  processHandlers();
104
87
  };
105
88
  /**
106
- * Android WebView never sends the hardware back
107
- * button to a CloseWatcher, so hybrid apps still
108
- * need this. Browsers never fire backbutton.
89
+ * If the CloseWatcher is defined then
90
+ * we don't want to also listen for the native
91
+ * backbutton event otherwise we may get duplicate
92
+ * events firing.
109
93
  */
110
- doc.addEventListener('backbutton', backButtonCallback);
111
94
  if (shouldUseCloseWatcher()) {
112
95
  let watcher;
113
- /**
114
- * An active CloseWatcher stops the back button from
115
- * navigating, so only keep one while there's something to close.
116
- */
117
- syncCloseWatcher = () => {
118
- const canClose = closeWatcherConditions.some((condition) => condition());
119
- if (!canClose) {
120
- watcher?.destroy();
121
- watcher = undefined;
122
- return;
123
- }
124
- if (watcher !== undefined) {
125
- return;
126
- }
96
+ const configureWatcher = () => {
97
+ watcher?.destroy();
127
98
  watcher = new helpers.win.CloseWatcher();
128
99
  /**
129
100
  * Once a close request happens
130
101
  * the watcher gets destroyed.
131
102
  * As a result, we need to re-configure
132
103
  * the watcher so we can respond to other
133
- * close requests, including after one that
134
- * closed nothing, like a modal whose canDismiss
135
- * returned false.
104
+ * close requests.
136
105
  */
137
106
  watcher.onclose = () => {
138
- watcher = undefined;
139
107
  backButtonCallback();
140
- syncCloseWatcher?.();
108
+ configureWatcher();
141
109
  };
142
110
  };
143
- syncCloseWatcher();
111
+ configureWatcher();
112
+ }
113
+ else {
114
+ doc.addEventListener('backbutton', backButtonCallback);
144
115
  }
145
116
  };
146
117
  const OVERLAY_BACK_BUTTON_PRIORITY = 100;
@@ -150,11 +121,9 @@ var hardwareBackButton = /*#__PURE__*/Object.freeze({
150
121
  __proto__: null,
151
122
  MENU_BACK_BUTTON_PRIORITY: MENU_BACK_BUTTON_PRIORITY,
152
123
  OVERLAY_BACK_BUTTON_PRIORITY: OVERLAY_BACK_BUTTON_PRIORITY,
153
- addCloseWatcherCondition: addCloseWatcherCondition,
154
124
  blockHardwareBackButton: blockHardwareBackButton,
155
125
  shouldUseCloseWatcher: shouldUseCloseWatcher,
156
- startHardwareBackButton: startHardwareBackButton,
157
- updateCloseWatcher: updateCloseWatcher
126
+ startHardwareBackButton: startHardwareBackButton
158
127
  });
159
128
 
160
129
  /**
@@ -240,11 +209,6 @@ const focusElementInContext = (hostToFocus, fallbackElement) => {
240
209
 
241
210
  let lastOverlayIndex = 0;
242
211
  let lastId = 0;
243
- /**
244
- * Every overlay except toast, which doesn't trap
245
- * focus or close on back.
246
- */
247
- const NON_TOAST_OVERLAYS = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover';
248
212
  const activeAnimations = new WeakMap();
249
213
  /**
250
214
  * Determines if the overlay's backdrop is always blocking (no background interaction).
@@ -371,7 +335,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
371
335
  * Should NOT include: Toast
372
336
  */
373
337
  const trapKeyboardFocus = (ev, doc) => {
374
- const lastOverlay = getPresentedOverlay(doc, NON_TOAST_OVERLAYS);
338
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover');
375
339
  const target = ev.target;
376
340
  /**
377
341
  * If no active overlay, ignore this event.
@@ -554,11 +518,6 @@ const connectListeners = (doc) => {
554
518
  doc.addEventListener('focus', (ev) => {
555
519
  trapKeyboardFocus(ev, doc);
556
520
  }, true);
557
- /**
558
- * Whether the overlay actually dismisses is checked at press time,
559
- * since `backdropDismiss` can change while it's open.
560
- */
561
- addCloseWatcherCondition(() => getPresentedOverlay(doc, NON_TOAST_OVERLAYS) !== undefined);
562
521
  // handle back-button click
563
522
  doc.addEventListener('ionBackButton', (ev) => {
564
523
  const lastOverlay = getPresentedOverlay(doc);
@@ -682,8 +641,7 @@ const setRootAriaHidden = (hidden = false) => {
682
641
  * Cleans up root `aria-hidden` and `backdrop-no-scroll` when
683
642
  * an overlay is removed from the DOM without going through
684
643
  * the `dismiss()` flow (e.g., when a framework unmounts the
685
- * overlay during a route change). Also releases the
686
- * CloseWatcher if nothing is left to close.
644
+ * overlay during a route change).
687
645
  *
688
646
  * Should be called from an overlay's `disconnectedCallback`
689
647
  * when the overlay was still presented at the time of removal.
@@ -692,7 +650,6 @@ const cleanupRootFocusTrapAccessibility = () => {
692
650
  if (typeof document === 'undefined') {
693
651
  return;
694
652
  }
695
- updateCloseWatcher();
696
653
  const remainingOverlays = getPresentedOverlays(document);
697
654
  const hasRemainingLocking = remainingOverlays.some((o) => locksAppRoot(o));
698
655
  if (!hasRemainingLocking) {
@@ -714,9 +671,7 @@ const applyRootLock = (el) => {
714
671
  };
715
672
  /**
716
673
  * Re-applies the root lock that `cleanupRootFocusTrapAccessibility()` released.
717
- * Call from `connectedCallback` when the overlay is still presented. Also
718
- * re-arms the CloseWatcher, which every overlay needs, so that happens
719
- * before the `locksAppRoot` check.
674
+ * Call from `connectedCallback` when the overlay is still presented.
720
675
  *
721
676
  * A synchronous move keeps the overlay connected, so the lock survives. A
722
677
  * detach with a re-insert in a later task releases it, which is the shape a
@@ -726,7 +681,6 @@ const restoreRootFocusTrapAccessibility = (overlayEl) => {
726
681
  if (typeof document === 'undefined') {
727
682
  return;
728
683
  }
729
- updateCloseWatcher();
730
684
  const el = overlayEl;
731
685
  if (!locksAppRoot(el)) {
732
686
  return;
@@ -940,11 +894,6 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
940
894
  index.printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
941
895
  }
942
896
  overlay.el.remove();
943
- /**
944
- * Release the back button if nothing
945
- * else is left to close.
946
- */
947
- updateCloseWatcher();
948
897
  return true;
949
898
  };
950
899
  const getAppRoot = (doc) => {
@@ -953,12 +902,6 @@ const getAppRoot = (doc) => {
953
902
  const overlayAnimation = async (overlay, animationBuilder, baseEl, opts) => {
954
903
  // Make overlay visible in case it's hidden
955
904
  baseEl.classList.remove('overlay-hidden');
956
- /**
957
- * Removing `overlay-hidden` makes the overlay count
958
- * as presented, so back can dismiss it while it
959
- * animates in.
960
- */
961
- updateCloseWatcher();
962
905
  const aniRoot = overlay.el;
963
906
  const animation = animationBuilder(aniRoot, opts);
964
907
  if (!overlay.animated || !index.config.getBoolean('animated', true)) {
@@ -1188,7 +1131,6 @@ exports.GESTURE = GESTURE;
1188
1131
  exports.MENU_BACK_BUTTON_PRIORITY = MENU_BACK_BUTTON_PRIORITY;
1189
1132
  exports.OVERLAY_GESTURE_PRIORITY = OVERLAY_GESTURE_PRIORITY;
1190
1133
  exports.actionSheetController = actionSheetController;
1191
- exports.addCloseWatcherCondition = addCloseWatcherCondition;
1192
1134
  exports.alertController = alertController;
1193
1135
  exports.cleanupRootFocusTrapAccessibility = cleanupRootFocusTrapAccessibility;
1194
1136
  exports.createDelegateController = createDelegateController;
@@ -1211,4 +1153,3 @@ exports.safeCall = safeCall;
1211
1153
  exports.setOverlayId = setOverlayId;
1212
1154
  exports.shouldUseCloseWatcher = shouldUseCloseWatcher;
1213
1155
  exports.toastController = toastController;
1214
- exports.updateCloseWatcher = updateCloseWatcher;
@@ -5,7 +5,7 @@ import { Build, Host, h } from "@stencil/core";
5
5
  import { getTimeGivenProgression } from "../../utils/animation/cubic-bezier";
6
6
  import { focusFirstDescendant, focusLastDescendant } from "../../utils/focus-trap";
7
7
  import { GESTURE_CONTROLLER } from "../../utils/gesture/index";
8
- import { shouldUseCloseWatcher, updateCloseWatcher } from "../../utils/hardware-back-button";
8
+ import { shouldUseCloseWatcher } from "../../utils/hardware-back-button";
9
9
  import { inheritAriaAttributes, assert, clamp, isEndSide as isEnd } from "../../utils/helpers";
10
10
  import { printIonError } from "../../utils/logging/index";
11
11
  import { menuController } from "../../utils/menu-controller/index";
@@ -560,7 +560,6 @@ export class Menu {
560
560
  // emit opened/closed events
561
561
  this._isOpen = isOpen;
562
562
  this.isAnimating = false;
563
- updateCloseWatcher();
564
563
  if (!this._isOpen) {
565
564
  this.blocker.unblock();
566
565
  }
@@ -657,14 +656,14 @@ export class Menu {
657
656
  * the ionBackButton listener in the menu controller
658
657
  * will handle closing the menu when Escape is pressed.
659
658
  */
660
- return (h(Host, { key: '5cf26df26d4e539860cbeaea98ec621b98c3fcfc', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
659
+ return (h(Host, { key: '1208ba437fa58680325408d3d4c8580950da1d68', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
661
660
  [mode]: true,
662
661
  [`menu-type-${type}`]: true,
663
662
  'menu-enabled': !disabled,
664
663
  [`menu-side-${side}`]: true,
665
664
  'menu-pane-visible': isPaneVisible,
666
665
  'split-pane-side': hostContext('ion-split-pane', el),
667
- } }, h("div", { key: 'f337016e293bb8665c99762e0c389dd6c372bb33', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '4c3fe331aa42cd57d7ad9bd1f5910f8eeb62d7da' })), h("ion-backdrop", { key: '61af7ea876d81574841e1dd3e81e2352e555d096', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
666
+ } }, h("div", { key: 'c0ddc957b7a7956b41901d77ae02d91e73071c55', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '6e44c56116431a024f114ab85ded1b822c942fac' })), h("ion-backdrop", { key: '5f4bbcf84444d96ec6b02bf567e1aaf95f59078d', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
668
667
  }
669
668
  static get is() { return "ion-menu"; }
670
669
  static get encapsulation() { return "shadow"; }