{"version":3,"file":"6439.0e281cf29b101b30e623.js","mappings":";0IAWA,MAAMA,EAA4BC,IAChC,IAAIC,EACAC,EACAC,EACJ,MAAMC,EAAO,KACXH,EAA0B,KACxBE,GAAkB,EACdH,GACFA,GAAuB,EAAK,EAEhCE,EAA0B,KACxBC,GAAkB,EACdH,GACFA,GAAuB,EAAM,EAEzB,OAAR,EAAAK,QAAwB,IAAR,EAAAA,GAA0B,EAAAA,EAAA,iBAAqB,mBAAoBJ,GAC3E,OAAR,EAAAI,QAAwB,IAAR,EAAAA,GAA0B,EAAAA,EAAA,iBAAqB,mBAAoBH,EAAwB,EAS7G,OADAE,IACO,CAAEA,OAAME,QAPC,KACN,OAAR,EAAAD,QAAwB,IAAR,EAAAA,GAA0B,EAAAA,EAAA,oBAAwB,mBAAoBJ,GAC9E,OAAR,EAAAI,QAAwB,IAAR,EAAAA,GAA0B,EAAAA,EAAA,oBAAwB,mBAAoBH,GACtFD,EAA0BC,OAA0BK,CAAS,EAIvCC,kBAFE,IAAML,EAEW,ydCjC7C,MAAMM,EAAoB,qBACpBC,EAAqB,qBAG3B,IAAIC,EAAyB,CAAC,EAC1BC,EAAwB,CAAC,EACzBC,GAAe,EAInB,MAAMC,EAAsB,KAC1BH,EAAyB,CAAC,EAC1BC,EAAwB,CAAC,EACzBC,GAAe,CAAK,EAEhBE,EAAuBC,IAC3BC,EAAqBD,GAChBA,EAAIE,iBAGTN,EAAwBO,EAAmBH,EAAIE,gBAC/CF,EAAIE,eAAeE,SAAW,KAC5BC,EAAqBL,GACjBM,KAAqBC,EAAkBP,GACzCQ,EAAgBR,GAETS,EAAiBT,IACxBU,EAAiBV,EACnB,EACD,EAOGC,EAAwBD,IAC5BA,EAAIW,iBAAiB,mBAAoBC,GAAOJ,EAAgBR,EAAKY,KACrEZ,EAAIW,iBAAiB,mBAAmB,IAAMD,EAAiBV,IAAK,EAEhEQ,EAAkB,CAACR,EAAKY,KAC5BC,EAAsBb,EAAKY,GAC3Bf,GAAe,CAAI,EAEfa,EAAoBV,IACxBc,EAAuBd,GACvBH,GAAe,CAAK,EAchBS,EAAkB,KACtB,MAAMS,GAA0BpB,EAAuBqB,OAASpB,EAAsBoB,QAAUpB,EAAsBqB,MACtH,OAASpB,GACPF,EAAuBuB,QAAUtB,EAAsBsB,OACvDH,EA9DuB,GA8DqB,EAM1CR,EAAqBP,GAClBH,IAAiBY,EAAiBT,GAQrCS,EAAoBT,GACjBH,GAAgBD,EAAsBoB,SAAWhB,EAAImB,YAKxDN,EAAwB,CAACb,EAAKoB,KAClC,MAAMC,EAAiBD,EAAWA,EAASC,eAAiBrB,EAAImB,YAAcvB,EAAsBoB,OAC9FJ,EAAK,IAAIU,YAAY7B,EAAmB,CAC5C8B,OAAQ,CAAEF,oBAEZrB,EAAIwB,cAAcZ,EAAG,EAKjBE,EAA0Bd,IAC9B,MAAMY,EAAK,IAAIU,YAAY5B,GAC3BM,EAAIwB,cAAcZ,EAAG,EAQjBP,EAAwBL,IAC5BL,EAAyB8B,OAAOC,OAAO,CAAC,EAAG9B,GAC3CA,EAAwBO,EAAmBH,EAAIE,eAAe,EAM1DC,EAAsBD,IACnB,CACLgB,MAAOS,KAAKC,MAAM1B,EAAegB,OACjCF,OAAQW,KAAKC,MAAM1B,EAAec,QAClCa,UAAW3B,EAAe2B,UAC1BC,WAAY5B,EAAe4B,WAC3BC,QAAS7B,EAAe6B,QACxBC,SAAU9B,EAAe8B,SACzBf,MAAOf,EAAee,oGCrH1B,MAIMgB,GAAsB,QAAmB,cAAc,KAC3DC,cACEC,QACAC,KAAKC,iBACLD,KAAKE,UAAW,QAAYF,KAAM,WAAY,GAC9CA,KAAKG,UAAW,QAAYH,KAAM,WAAY,GAC9CA,KAAKI,SAAU,EACfJ,KAAKK,WAAY,CACnB,CACAC,oBACEN,KAAKI,UAAYJ,KAAKO,GAAGC,QAAQ,aACjCR,KAAKK,UAA8B,aAAlBL,KAAKS,SACtBT,KAAKU,YACLV,KAAKW,WACP,CACAC,mBACMZ,KAAKK,WACPQ,YAAW,KACTb,KAAKK,WAAY,CAAK,GACrB,IAEP,CACAS,eACEd,KAAKW,WACP,CACAI,kBACEf,KAAKU,WACP,CACAC,YACE,MAAM,MAAEK,GAAUhB,KAClBA,KAAKE,SAASe,KAAK,CACjB,wBAA8B9D,IAAV6D,EACpB,CAAC,aAAaA,UAAoB7D,IAAV6D,GAE5B,CACAN,YACE,MAAM,QAAEN,EAAO,SAAEK,GAAaT,KAIzBI,GACHJ,KAAKG,SAASc,KAAK,CACjBC,OAAO,EACP,CAAC,SAAST,UAA0BtD,IAAbsD,GAG7B,CACAU,SACE,MAAMV,EAAWT,KAAKS,SAChBW,GAAO,OAAWpB,MACxB,OAAQ,IAAAqB,GAAE,KAAM,CAAEC,OAAO,IAAAC,GAAmBvB,KAAKgB,MAAO,CACpD,CAACI,IAAO,EACR,iBAAiB,IAAAC,GAAY,qBAAsBrB,KAAKO,IACxD,CAAC,SAASE,UAA0BtD,IAAbsD,EACvB,mBAAsBT,KAAKK,UAC3B,YAA8B,QAAjBmB,SAASC,OAE5B,CACIlB,SAAO,OAAOP,IAAM,CACb0B,sBAAa,MAAO,CAC7B,MAAS,CAAC,gBACV,SAAY,CAAC,mBACZ,CACQC,mBAAU,MAAO,CAC1BC,IApEgB,wsHAqEhBC,GAnEe,67XAoEd,GACF,CAAC,GAAI,YAAa,CACjB,MAAS,CAAC,KACV,SAAY,CAAC,GACb,UAAa,CAAC,OAElB,SAASC,IACP,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,aACTC,SAAQC,IAAa,GACzB,cADiCA,EAE/BF,eAAeG,IAAID,IACtBF,eAAeI,OAAOF,EAASpC,EAGrC,GACF,sRCxFA,IAAIuC,EAAS,EACb,MAAMC,EAAmB,IAAIC,QACvBC,EAAoBN,IACjB,CACLO,OAAOC,GACL,OAAOC,EAAcT,EAASQ,EAChC,EACAE,QAAQC,EAAMC,EAAMC,GAClB,OAAOC,EAAevB,SAAUoB,EAAMC,EAAMZ,EAASa,EACvD,EACAE,eACE,OAAOC,EAAWzB,SAAUS,EAC9B,IAIEiB,EAAsCX,EAAiB,oBAKvDY,EAAgCZ,EAAiB,aACjDa,EAAkB7C,IACE,oBAAbiB,UACT6B,EAAiB7B,UAEnB,MAAM8B,EAAelB,IACrB7B,EAAG+C,aAAeA,EACb/C,EAAGgD,aAAa,QACnBhD,EAAGuC,GAAK,eAAeQ,IACzB,EAEIZ,EAAgB,CAACT,EAASuB,IACR,oBAAXC,aAA2D,IAA1BA,OAAO1B,eAC1C0B,OAAO1B,eAAe2B,YAAYzB,GAAS0B,MAAK,KACrD,MAAMC,EAAUpC,SAASqC,cAAc5B,GASvC,OARA2B,EAAQE,UAAUC,IAAI,kBAKtB1E,OAAOC,OAAOsE,EAASvE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGkE,GAAO,CAAEQ,eAAe,KAE/EC,EAAWzC,UAAU0C,YAAYN,GAC1B,IAAIO,SAASC,IAAY,IAAA7C,GAAiBqC,EAASQ,IAAS,IAGhED,QAAQC,UAcXC,EAAuB,wcACvBC,EAAuB,CAACC,EAAKC,KACjC,IAAIC,EAAaF,EAAIG,cAAcL,GACnC,MAAMM,EAAaF,aAA+C,EAASA,EAAWE,WAClFA,IAEFF,EAAaE,EAAWD,cAAcL,IAAyBI,GAE7DA,GACF,IAAAG,GAAaH,GAIbD,EAAQK,OACV,EAGIC,EAAsB,CAACP,EAAKC,KAChC,MAAMO,EAASC,MAAMC,KAAKV,EAAIW,iBAAiBb,IAC/C,IAAIc,EAAYJ,EAAOK,OAAS,EAAIL,EAAOA,EAAOK,OAAS,GAAK,KAChE,MAAMT,EAAaQ,aAA6C,EAASA,EAAUR,WAC/EA,IAEFQ,EAAYR,EAAWD,cAAcL,IAAyBc,GAE5DA,EACFA,EAAUN,QAIVL,EAAQK,OACV,EASIQ,EAAoB,CAAC7G,EAAI8G,KAC7B,MAAMC,EAActC,EAAWqC,EAAK,2EAC9BE,EAAShH,EAAGgH,OAWlB,IAAKD,IAAgBC,EACnB,OAWF,GAAID,EAAYzB,UAAU2B,SAAS,0BACjC,OAgHEF,EAAYZ,WAxCQ,MAKtB,GAAIY,EAAYE,SAASD,GACvBD,EAAYG,UAAYF,MAErB,CAcH,MAAME,EAAYH,EAAYG,UAE9BpB,EAAqBiB,EAAaA,GAU9BG,IAAcJ,EAAIK,eACpBb,EAAoBS,EAAaA,GAEnCA,EAAYG,UAAYJ,EAAIK,aAC9B,GAGAC,GA/GsB,MAOtB,GAAIL,IAAgBC,EAClBD,EAAYG,eAAYvI,MAUrB,CAKH,MAAM0I,GAAc,IAAAC,GAAeP,GACnC,IAAKM,EAAYJ,SAASD,GACxB,OAEF,MAAMO,EAAiBF,EAAYnB,cAAc,wBACjD,IAAKqB,EACH,OAMF,GAAIA,EAAeN,SAASD,GAC1BD,EAAYG,UAAYF,MAErB,CAaH,MAAME,EAAYH,EAAYG,UAE9BpB,EAAqByB,EAAgBR,GAUjCG,IAAcJ,EAAIK,eACpBb,EAAoBiB,EAAgBR,GAEtCA,EAAYG,UAAYJ,EAAIK,aAC9B,CACF,GA8CAK,EACF,EAEI3C,EAAoBiC,IACT,IAAXlD,IACFA,EAAS,EACTkD,EAAI/G,iBAAiB,SAAUC,IAC7B6G,EAAkB7G,EAAI8G,EAAI,IACzB,GAEHA,EAAI/G,iBAAiB,iBAAkBC,IACrC,MAAM+G,EAActC,EAAWqC,IAC3BC,aAAiD,EAASA,EAAYU,kBACxEzH,EAAGW,OAAO+G,SAAS,EAAAC,8BAA8B,IACxCZ,EAAY5C,aAAQxF,EAAWiJ,IAE1C,IAGFd,EAAI/G,iBAAiB,SAAUC,IAC7B,GAAe,WAAXA,EAAG6H,IAAkB,CACvB,MAAMd,EAActC,EAAWqC,IAC3BC,aAAiD,EAASA,EAAYU,kBACxEV,EAAY5C,aAAQxF,EAAWiJ,EAEnC,KAEJ,EAEIrD,EAAiB,CAACuC,EAAK1C,EAAMC,EAAMyD,EAAYxD,KACnD,MAAM0B,EAAUvB,EAAWqC,EAAKgB,EAAYxD,GAC5C,OAAK0B,EAGEA,EAAQ7B,QAAQC,EAAMC,GAFpBsB,QAAQoC,OAAO,yBAEU,EAe9BtD,EAAa,CAACqC,EAAKgB,EAAYxD,KACnC,MAAM0D,EAdY,EAAClB,EAAKmB,UACPtJ,IAAbsJ,IACFA,EAAW,qFAENzB,MAAMC,KAAKK,EAAIJ,iBAAiBuB,IAAWC,QAAQnF,GAAMA,EAAE+B,aAAe,KAUhEqD,CAAYrB,EAAKgB,GAAYI,QAAQE,IAAuBA,EAxNlC9C,UAAU2B,SAAS,oBAyN9D,YAActI,IAAP2F,EAAmB0D,EAASA,EAASpB,OAAS,GAAKoB,EAASK,MAAMD,GAAMA,EAAE9D,KAAOA,GAAG,EAwBvFgE,EAAoB,CAACC,GAAS,KAClC,MACMC,EADO/C,EAAWzC,UACGkD,cAAc,wDACpCsC,IAGDD,EACFC,EAAcC,aAAa,cAAe,QAG1CD,EAAcE,gBAAgB,eAChC,EAEIC,EAAUnE,MAAOwB,EAAS4C,EAAMC,EAAmBC,EAAkB9D,KACzE,IAAI+D,EAAIC,EACR,GAAIhD,EAAQiD,UACV,OAEFX,GAAkB,GAClBtC,EAAQiD,WAAY,EACpBjD,EAAQkD,YAAYzG,OACoB,QAAvCsG,EAAK/C,EAAQmD,4BAAyC,IAAPJ,GAAyBA,EAAGtG,OAC5E,MAAMG,GAAO,OAAWoD,GAElBoD,EAAmBpD,EAAQqD,eAC7BrD,EAAQqD,eACR,EAAAtG,EAAA,IAAW6F,EAAe,QAAThG,EAAiBiG,EAAoBC,SAClCQ,EAAiBtD,EAASoD,EAAkBpD,EAAQjE,GAAIiD,KAE9EgB,EAAQuD,WAAW9G,OACoB,QAAtCuG,EAAKhD,EAAQwD,2BAAwC,IAAPR,GAAyBA,EAAGvG,QAUlD,cAAvBuD,EAAQjE,GAAG0B,SACbgG,EAA8BzD,EAAQjE,KAQpCiE,EAAQ0D,eAA6C,OAA3B1G,SAASmE,eAA2BnB,EAAQjE,GAAGkF,SAASjE,SAASmE,gBAC7FnB,EAAQjE,GAAGsE,OACb,EAYIoD,EAAgCjF,MAAOmF,IAC3C,IAAIC,EAAkB5G,SAASmE,cAC/B,IAAKyC,EACH,OAEF,MAAMzD,EAAayD,aAAyD,EAASA,EAAgBzD,WACjGA,IAEFyD,EAAkBzD,EAAWD,cAAcL,IAAyB+D,SAEhED,EAAUE,eAChBD,EAAgBvD,OAAO,EAEnBlC,EAAUK,MAAOwB,EAAS5B,EAAMC,EAAMuE,EAAMkB,EAAmBC,EAAkB/E,KACrF,IAAI+D,EAAIC,EACR,IAAKhD,EAAQiD,UACX,OAAO,EAETX,GAAkB,GAClBtC,EAAQiD,WAAY,EACpB,IAEEjD,EAAQjE,GAAGoB,MAAM6G,YAAY,iBAAkB,QAC/ChE,EAAQiE,YAAYxH,KAAK,CAAE2B,OAAMC,SACO,QAAvC0E,EAAK/C,EAAQkE,4BAAyC,IAAPnB,GAAyBA,EAAGtG,KAAK,CAAE2B,OAAMC,SACzF,MAAMzB,GAAO,OAAWoD,GAClBoD,EAAmBpD,EAAQmE,eAC7BnE,EAAQmE,eACR,EAAApH,EAAA,IAAW6F,EAAe,QAAThG,EAAiBkH,EAAoBC,GAEtD1F,IAAS+F,SACLd,EAAiBtD,EAASoD,EAAkBpD,EAAQjE,GAAIiD,GAEhEgB,EAAQqE,WAAW5H,KAAK,CAAE2B,OAAMC,SACO,QAAtC2E,EAAKhD,EAAQsE,2BAAwC,IAAPtB,GAAyBA,EAAGvG,KAAK,CAAE2B,OAAMC,SACxFR,EAAiB0G,OAAOvE,GAMxBA,EAAQjE,GAAGuD,UAAUC,IAAI,kBACzBS,EAAQjE,GAAGoB,MAAMqH,eAAe,uBAKH7L,IAAzBqH,EAAQjE,GAAGmF,YACblB,EAAQjE,GAAGmF,eAAYvI,EAE3B,CACA,MAAO8L,GACLC,QAAQC,MAAMF,EAChB,CAEA,OADAzE,EAAQjE,GAAG6I,UACJ,CAAI,EAEPnF,EAAcqB,GACXA,EAAIZ,cAAc,YAAcY,EAAI+D,KAEvCvB,EAAmB9E,MAAOwB,EAASoD,EAAkB0B,EAAQ9F,KAEjE8F,EAAOxF,UAAUsF,OAAO,kBACxB,MACMG,EAAY3B,EADFpD,EAAQjE,GACoBiD,GACvCgB,EAAQgF,UAAa,EAAAjI,EAAA,WAAkB,YAAY,IACtDgI,EAAUE,SAAS,GAEjBjF,EAAQ0D,eACVqB,EAAUG,gBAAe,KACvB,MAAM/D,EAAgB2D,EAAOK,cAAchE,eACvCA,aAAqD,EAASA,EAAciE,QAAQ,mCACtFjE,EAAckE,MAChB,IAGJ,MAAMC,EAAYzH,EAAiBH,IAAIsC,IAAY,GAGnD,OAFAnC,EAAiB0H,IAAIvF,EAAS,IAAIsF,EAAWP,UACvCA,EAAUS,QACT,CAAI,EAEPC,EAAc,CAACrG,EAASsG,KAC5B,IAAI9F,EACJ,MAAM+F,EAAU,IAAIhG,SAASiG,GAAOhG,EAAUgG,IAI9C,OAHAC,EAAUzG,EAASsG,GAAYI,IAC7BlG,EAAQkG,EAAMnL,OAAO,IAEhBgL,CAAO,EAEVE,EAAY,CAACzG,EAASsG,EAAWK,KACrC,MAAMC,EAAWhM,KACf,OAAoBoF,EAASsG,EAAWM,GACxCD,EAAS/L,EAAG,GAEd,IAAAiM,GAAiB7G,EAASsG,EAAWM,EAAQ,EA2BzCpE,EAAW,WACXwC,EAAU,2FCxfhB,MAEM8B,GAA6B,QAAmB,cAAc,KAClE5K,cACEC,QACAC,KAAKC,iBACLD,KAAK2K,iBAUL3K,KAAK4K,KAAO,SACd,CAOA5H,gBAAgB6H,EAAGC,GACjB,OAAO,IAAI3G,SAASC,KAClB,SAAS,KACP,MAAM2G,EAAO/K,KAAKO,GAAGyK,wBACflM,EAAQiM,EAAKjM,MACbF,EAASmM,EAAKnM,OACdqM,EAAa1L,KAAK2L,KAAKpM,EAAQA,EAAQF,EAASA,GAChDuM,EAAS5L,KAAK6L,IAAIxM,EAAQE,GAC1BuM,EAAYrL,KAAKsL,UAAYH,EAASF,EAAaM,EACnDC,EAAcjM,KAAKkM,MAAMN,EAASO,GAClCC,EAAaN,EAAYG,EAC/B,IAAII,EAAOf,EAAIE,EAAKc,KAChBC,EAAOhB,EAAIC,EAAKgB,IAChB/L,KAAKsL,YACPM,EAAe,GAAR9M,EACPgN,EAAgB,GAATlN,GAET,MAAMoN,EAASJ,EAAqB,GAAdJ,EAChBS,EAASH,EAAqB,GAAdN,EAChBU,EAAgB,GAARpN,EAAc8M,EACtBO,EAAiB,GAATvN,EAAekN,GAC7B,SAAU,KACR,MAAMM,EAAM5K,SAASqC,cAAc,OACnCuI,EAAItI,UAAUC,IAAI,iBAClB,MAAMpC,EAAQyK,EAAIzK,MAClBA,EAAMoK,IAAME,EAAS,KACrBtK,EAAMkK,KAAOG,EAAS,KACtBrK,EAAM7C,MAAQ6C,EAAM/C,OAAS4M,EAAc,KAC3C7J,EAAM6G,YAAY,gBAAiB,GAAGmD,KACtChK,EAAM6G,YAAY,kBAAmB,GAAG0D,QAAYC,QAClCnM,KAAKO,GAAGoE,YAAc3E,KAAKO,IACnC2D,YAAYkI,GACtBvL,YAAW,KACTuD,GAAQ,KACNiI,EAAaD,EAAI,GACjB,GACD,IAAU,GACb,GACF,GAEN,CACId,gBACF,MAAqB,cAAdtL,KAAK4K,IACd,CACAzJ,SACE,MAAMC,GAAO,OAAWpB,MACxB,OAAQ,IAAAqB,GAAE,KAAM,CAAEwB,KAAM,eAAgBvB,MAAO,CAC3C,CAACF,IAAO,EACRkK,UAAWtL,KAAKsL,YAEtB,CACI/K,SAAO,OAAOP,IAAM,CACb2B,mBAAU,MA5EC,g7DA4EuB,GAC5C,CAAC,EAAG,oBAAqB,CACxB,KAAQ,CAAC,GACT,UAAa,CAAC,OAEZ0K,EAAgBC,IACpBA,EAAOxI,UAAUC,IAAI,YACrBlD,YAAW,KACTyL,EAAOlD,QAAQ,GACd,IAAI,EAEHmC,EAAU,GACVG,EAAuB,GAC7B,SAAS5J,IACP,GAA8B,oBAAnBC,eACT,OAEiB,CAAC,qBACTC,SAAQC,IAAa,GACzB,sBADiCA,EAE/BF,eAAeG,IAAID,IACtBF,eAAeI,OAAOF,EAASyI,EAGrC,GACF,8HCxGA,MAAM6B,EAAc,CAAC9F,EAAUlG,IACG,OAAzBA,EAAGC,QAAQiG,GAKd+F,EAAqB,CAACxL,EAAOyL,IACT,iBAAVzL,GAAsBA,EAAMoE,OAAS,EAC/C/F,OAAOC,OAAO,CAAE,aAAa,EAAM,CAAC,aAAa0B,MAAU,GAAQyL,GAAeA,EAYlFC,EAAeC,IACnB,MAAMC,EAAM,CAAC,EAEb,MAbmB,CAACD,IACpB,QAAgBxP,IAAZwP,EAEF,OADc3H,MAAM6H,QAAQF,GAAWA,EAAUA,EAAQG,MAAM,MAE5DpG,QAAQnF,GAAW,MAALA,IACdqL,KAAKrL,GAAMA,EAAEwL,SACbrG,QAAQnF,GAAY,KAANA,IAEnB,MAAO,EAAE,EAITyL,CAAaL,GAAS3K,SAAST,GAAOqL,EAAIrL,IAAK,IACxCqL,CAAG,EAENK,EAAS,uBACTC,EAAUlK,MAAOmK,EAAK3O,EAAI4O,EAAW7D,KACzC,GAAW,MAAP4D,GAA0B,MAAXA,EAAI,KAAeF,EAAOI,KAAKF,GAAM,CACtD,MAAMG,EAAS9L,SAASkD,cAAc,cACtC,GAAI4I,EAIF,OAHU,MAAN9O,GACFA,EAAG+O,iBAEED,EAAOE,KAAKL,EAAKC,EAAW7D,EAEvC,CACA,OAAO,CAAK","sources":["webpack:///../node_modules/@ionic/core/components/keyboard-controller.js","webpack:///../node_modules/@ionic/core/components/keyboard.js","webpack:///../node_modules/@ionic/core/components/label.js","webpack:///../node_modules/@ionic/core/components/overlays.js","webpack:///../node_modules/@ionic/core/components/ripple-effect.js","webpack:///../node_modules/@ionic/core/components/theme.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { w as win } from './index5.js';\n\n/**\n * Creates a controller that tracks and reacts to opening or closing the keyboard.\n *\n * @internal\n * @param keyboardChangeCallback A function to call when the keyboard opens or closes.\n */\nconst createKeyboardController = (keyboardChangeCallback) => {\n let keyboardWillShowHandler;\n let keyboardWillHideHandler;\n let keyboardVisible;\n const init = () => {\n keyboardWillShowHandler = () => {\n keyboardVisible = true;\n if (keyboardChangeCallback)\n keyboardChangeCallback(true);\n };\n keyboardWillHideHandler = () => {\n keyboardVisible = false;\n if (keyboardChangeCallback)\n keyboardChangeCallback(false);\n };\n win === null || win === void 0 ? void 0 : win.addEventListener('keyboardWillShow', keyboardWillShowHandler);\n win === null || win === void 0 ? void 0 : win.addEventListener('keyboardWillHide', keyboardWillHideHandler);\n };\n const destroy = () => {\n win === null || win === void 0 ? void 0 : win.removeEventListener('keyboardWillShow', keyboardWillShowHandler);\n win === null || win === void 0 ? void 0 : win.removeEventListener('keyboardWillHide', keyboardWillHideHandler);\n keyboardWillShowHandler = keyboardWillHideHandler = undefined;\n };\n const isKeyboardVisible = () => keyboardVisible;\n init();\n return { init, destroy, isKeyboardVisible };\n};\n\nexport { createKeyboardController as c };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst KEYBOARD_DID_OPEN = 'ionKeyboardDidShow';\nconst KEYBOARD_DID_CLOSE = 'ionKeyboardDidHide';\nconst KEYBOARD_THRESHOLD = 150;\n// TODO(FW-2832): types\nlet previousVisualViewport = {};\nlet currentVisualViewport = {};\nlet keyboardOpen = false;\n/**\n * This is only used for tests\n */\nconst resetKeyboardAssist = () => {\n previousVisualViewport = {};\n currentVisualViewport = {};\n keyboardOpen = false;\n};\nconst startKeyboardAssist = (win) => {\n startNativeListeners(win);\n if (!win.visualViewport) {\n return;\n }\n currentVisualViewport = copyVisualViewport(win.visualViewport);\n win.visualViewport.onresize = () => {\n trackViewportChanges(win);\n if (keyboardDidOpen() || keyboardDidResize(win)) {\n setKeyboardOpen(win);\n }\n else if (keyboardDidClose(win)) {\n setKeyboardClose(win);\n }\n };\n};\n/**\n * Listen for events fired by native keyboard plugin\n * in Capacitor/Cordova so devs only need to listen\n * in one place.\n */\nconst startNativeListeners = (win) => {\n win.addEventListener('keyboardDidShow', (ev) => setKeyboardOpen(win, ev));\n win.addEventListener('keyboardDidHide', () => setKeyboardClose(win));\n};\nconst setKeyboardOpen = (win, ev) => {\n fireKeyboardOpenEvent(win, ev);\n keyboardOpen = true;\n};\nconst setKeyboardClose = (win) => {\n fireKeyboardCloseEvent(win);\n keyboardOpen = false;\n};\n/**\n * Returns `true` if the `keyboardOpen` flag is not\n * set, the previous visual viewport width equal the current\n * visual viewport width, and if the scaled difference\n * of the previous visual viewport height minus the current\n * visual viewport height is greater than KEYBOARD_THRESHOLD\n *\n * We need to be able to accommodate users who have zooming\n * enabled in their browser (or have zoomed in manually) which\n * is why we take into account the current visual viewport's\n * scale value.\n */\nconst keyboardDidOpen = () => {\n const scaledHeightDifference = (previousVisualViewport.height - currentVisualViewport.height) * currentVisualViewport.scale;\n return (!keyboardOpen &&\n previousVisualViewport.width === currentVisualViewport.width &&\n scaledHeightDifference > KEYBOARD_THRESHOLD);\n};\n/**\n * Returns `true` if the keyboard is open,\n * but the keyboard did not close\n */\nconst keyboardDidResize = (win) => {\n return keyboardOpen && !keyboardDidClose(win);\n};\n/**\n * Determine if the keyboard was closed\n * Returns `true` if the `keyboardOpen` flag is set and\n * the current visual viewport height equals the\n * layout viewport height.\n */\nconst keyboardDidClose = (win) => {\n return keyboardOpen && currentVisualViewport.height === win.innerHeight;\n};\n/**\n * Dispatch a keyboard open event\n */\nconst fireKeyboardOpenEvent = (win, nativeEv) => {\n const keyboardHeight = nativeEv ? nativeEv.keyboardHeight : win.innerHeight - currentVisualViewport.height;\n const ev = new CustomEvent(KEYBOARD_DID_OPEN, {\n detail: { keyboardHeight },\n });\n win.dispatchEvent(ev);\n};\n/**\n * Dispatch a keyboard close event\n */\nconst fireKeyboardCloseEvent = (win) => {\n const ev = new CustomEvent(KEYBOARD_DID_CLOSE);\n win.dispatchEvent(ev);\n};\n/**\n * Given a window object, create a copy of\n * the current visual and layout viewport states\n * while also preserving the previous visual and\n * layout viewport states\n */\nconst trackViewportChanges = (win) => {\n previousVisualViewport = Object.assign({}, currentVisualViewport);\n currentVisualViewport = copyVisualViewport(win.visualViewport);\n};\n/**\n * Creates a deep copy of the visual viewport\n * at a given state\n */\nconst copyVisualViewport = (visualViewport) => {\n return {\n width: Math.round(visualViewport.width),\n height: Math.round(visualViewport.height),\n offsetTop: visualViewport.offsetTop,\n offsetLeft: visualViewport.offsetLeft,\n pageTop: visualViewport.pageTop,\n pageLeft: visualViewport.pageLeft,\n scale: visualViewport.scale,\n };\n};\n\nexport { KEYBOARD_DID_CLOSE, KEYBOARD_DID_OPEN, copyVisualViewport, keyboardDidClose, keyboardDidOpen, keyboardDidResize, resetKeyboardAssist, setKeyboardClose, setKeyboardOpen, startKeyboardAssist, trackViewportChanges };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode } from './ionic-global.js';\nimport { c as createColorClasses, h as hostContext } from './theme.js';\n\nconst labelIosCss = \".item.sc-ion-label-ios-h,.item .sc-ion-label-ios-h{--color:initial;display:block;color:var(--color);font-family:var(--ion-font-family, inherit);font-size:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.ion-color.sc-ion-label-ios-h{color:var(--ion-color-base)}.ion-text-wrap.sc-ion-label-ios-h,[text-wrap].sc-ion-label-ios-h{white-space:normal}.item-interactive-disabled.sc-ion-label-ios-h:not(.item-multiple-inputs),.item-interactive-disabled:not(.item-multiple-inputs) .sc-ion-label-ios-h{cursor:default;opacity:0.3;pointer-events:none}.item-input.sc-ion-label-ios-h,.item-input .sc-ion-label-ios-h{-ms-flex:initial;flex:initial;max-width:200px;pointer-events:none}.item-textarea.sc-ion-label-ios-h,.item-textarea .sc-ion-label-ios-h{-ms-flex-item-align:baseline;align-self:baseline}.label-fixed.sc-ion-label-ios-h{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.label-stacked.sc-ion-label-ios-h,.label-floating.sc-ion-label-ios-h{margin-bottom:0;-ms-flex-item-align:stretch;align-self:stretch;width:auto;max-width:100%}.label-no-animate.label-floating.sc-ion-label-ios-h{-webkit-transition:none;transition:none}.sc-ion-label-ios-s h1,.sc-ion-label-ios-s h2,.sc-ion-label-ios-s h3,.sc-ion-label-ios-s h4,.sc-ion-label-ios-s h5,.sc-ion-label-ios-s h6{text-overflow:inherit;overflow:inherit}.ion-text-wrap.sc-ion-label-ios-h,[text-wrap].sc-ion-label-ios-h{font-size:14px;line-height:1.5}.label-stacked.sc-ion-label-ios-h{margin-bottom:4px;font-size:14px}.label-floating.sc-ion-label-ios-h{margin-bottom:0;-webkit-transform:translate(0, 29px);transform:translate(0, 29px);-webkit-transform-origin:left top;transform-origin:left top;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}[dir=rtl].sc-ion-label-ios-h -no-combinator.label-floating.sc-ion-label-ios-h,[dir=rtl] .sc-ion-label-ios-h -no-combinator.label-floating.sc-ion-label-ios-h,[dir=rtl].label-floating.sc-ion-label-ios-h,[dir=rtl] .label-floating.sc-ion-label-ios-h{-webkit-transform-origin:right top;transform-origin:right top}.item-textarea.label-floating.sc-ion-label-ios-h,.item-textarea .label-floating.sc-ion-label-ios-h{-webkit-transform:translate(0, 28px);transform:translate(0, 28px)}.item-has-focus.label-floating.sc-ion-label-ios-h,.item-has-focus .label-floating.sc-ion-label-ios-h,.item-has-placeholder.sc-ion-label-ios-h:not(.item-input).label-floating,.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-ios-h,.item-has-value.label-floating.sc-ion-label-ios-h,.item-has-value .label-floating.sc-ion-label-ios-h{-webkit-transform:scale(0.82);transform:scale(0.82)}.sc-ion-label-ios-s h1{margin-left:0;margin-right:0;margin-top:3px;margin-bottom:2px;font-size:22px;font-weight:normal}.sc-ion-label-ios-s h2{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:17px;font-weight:normal}.sc-ion-label-ios-s h3,.sc-ion-label-ios-s h4,.sc-ion-label-ios-s h5,.sc-ion-label-ios-s h6{margin-left:0;margin-right:0;margin-top:0;margin-bottom:3px;font-size:14px;font-weight:normal;line-height:normal}.sc-ion-label-ios-s p{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:14px;line-height:normal;text-overflow:inherit;overflow:inherit}.sc-ion-label-ios-s>p{color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.4)}.sc-ion-label-ios-h.in-item-color.sc-ion-label-ios-s>p{color:inherit}.sc-ion-label-ios-s h2:last-child,.sc-ion-label-ios-s h3:last-child,.sc-ion-label-ios-s h4:last-child,.sc-ion-label-ios-s h5:last-child,.sc-ion-label-ios-s h6:last-child,.sc-ion-label-ios-s p:last-child{margin-bottom:0}\";\n\nconst labelMdCss = \".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{--color:initial;display:block;color:var(--color);font-family:var(--ion-font-family, inherit);font-size:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.ion-color.sc-ion-label-md-h{color:var(--ion-color-base)}.ion-text-wrap.sc-ion-label-md-h,[text-wrap].sc-ion-label-md-h{white-space:normal}.item-interactive-disabled.sc-ion-label-md-h:not(.item-multiple-inputs),.item-interactive-disabled:not(.item-multiple-inputs) .sc-ion-label-md-h{cursor:default;opacity:0.3;pointer-events:none}.item-input.sc-ion-label-md-h,.item-input .sc-ion-label-md-h{-ms-flex:initial;flex:initial;max-width:200px;pointer-events:none}.item-textarea.sc-ion-label-md-h,.item-textarea .sc-ion-label-md-h{-ms-flex-item-align:baseline;align-self:baseline}.label-fixed.sc-ion-label-md-h{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.label-stacked.sc-ion-label-md-h,.label-floating.sc-ion-label-md-h{margin-bottom:0;-ms-flex-item-align:stretch;align-self:stretch;width:auto;max-width:100%}.label-no-animate.label-floating.sc-ion-label-md-h{-webkit-transition:none;transition:none}.sc-ion-label-md-s h1,.sc-ion-label-md-s h2,.sc-ion-label-md-s h3,.sc-ion-label-md-s h4,.sc-ion-label-md-s h5,.sc-ion-label-md-s h6{text-overflow:inherit;overflow:inherit}.ion-text-wrap.sc-ion-label-md-h,[text-wrap].sc-ion-label-md-h{line-height:1.5}.label-stacked.sc-ion-label-md-h,.label-floating.sc-ion-label-md-h{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:top left;transform-origin:top left}.label-stacked.label-rtl.sc-ion-label-md-h,.label-floating.label-rtl.sc-ion-label-md-h{-webkit-transform-origin:top right;transform-origin:top right}.label-stacked.sc-ion-label-md-h{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.label-floating.sc-ion-label-md-h{-webkit-transform:translateY(96%);transform:translateY(96%);-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1)}.ion-focused.label-floating.sc-ion-label-md-h,.ion-focused .label-floating.sc-ion-label-md-h,.item-has-focus.label-floating.sc-ion-label-md-h,.item-has-focus .label-floating.sc-ion-label-md-h,.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating,.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h,.item-has-value.label-floating.sc-ion-label-md-h,.item-has-value .label-floating.sc-ion-label-md-h{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75)}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h{-webkit-transform:translateY(-6px) scale(0.75);transform:translateY(-6px) scale(0.75);position:relative;max-width:-webkit-min-content;max-width:-moz-min-content;max-width:min-content;background-color:var(--ion-item-background, var(--ion-background-color, #fff));overflow:visible;z-index:3}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::after,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::before,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::after,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::after{position:absolute;width:4px;height:100%;background-color:var(--ion-item-background, var(--ion-background-color, #fff));content:\\\"\\\"}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::before,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::before{left:calc(-1 * 4px)}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::after,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::after,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::after{right:calc(-1 * 4px)}.item-fill-outline.ion-focused.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.ion-focused.item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).item-has-start-slot.label-floating,.item-fill-outline.item-has-placeholder:not(.item-input).item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot .label-floating.sc-ion-label-md-h{-webkit-transform:translateX(-32px) translateY(-6px) scale(0.75);transform:translateX(-32px) translateY(-6px) scale(0.75)}.item-fill-outline.ion-focused.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.ion-focused.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).item-has-start-slot.label-floating.label-rtl,.item-fill-outline.item-has-placeholder:not(.item-input).item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h{-webkit-transform:translateX(calc(-1 * -32px)) translateY(-6px) scale(0.75);transform:translateX(calc(-1 * -32px)) translateY(-6px) scale(0.75)}.ion-focused.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-focused .label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-primary, #3880ff)}.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-contrast)}.item-fill-solid.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-base)}.ion-invalid.ion-touched.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--highlight-color-invalid)}.sc-ion-label-md-s h1{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:24px;font-weight:normal}.sc-ion-label-md-s h2{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:16px;font-weight:normal}.sc-ion-label-md-s h3,.sc-ion-label-md-s h4,.sc-ion-label-md-s h5,.sc-ion-label-md-s h6{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:14px;font-weight:normal;line-height:normal}.sc-ion-label-md-s p{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:14px;line-height:20px;text-overflow:inherit;overflow:inherit}.sc-ion-label-md-s>p{color:var(--ion-color-step-600, #666666)}.sc-ion-label-md-h.in-item-color.sc-ion-label-md-s>p{color:inherit}\";\n\nconst Label = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.ionColor = createEvent(this, \"ionColor\", 7);\n this.ionStyle = createEvent(this, \"ionStyle\", 7);\n this.inRange = false;\n this.noAnimate = false;\n }\n componentWillLoad() {\n this.inRange = !!this.el.closest('ion-range');\n this.noAnimate = this.position === 'floating';\n this.emitStyle();\n this.emitColor();\n }\n componentDidLoad() {\n if (this.noAnimate) {\n setTimeout(() => {\n this.noAnimate = false;\n }, 1000);\n }\n }\n colorChanged() {\n this.emitColor();\n }\n positionChanged() {\n this.emitStyle();\n }\n emitColor() {\n const { color } = this;\n this.ionColor.emit({\n 'item-label-color': color !== undefined,\n [`ion-color-${color}`]: color !== undefined,\n });\n }\n emitStyle() {\n const { inRange, position } = this;\n // If the label is inside of a range we don't want\n // to override the classes added by the label that\n // is a direct child of the item\n if (!inRange) {\n this.ionStyle.emit({\n label: true,\n [`label-${position}`]: position !== undefined,\n });\n }\n }\n render() {\n const position = this.position;\n const mode = getIonMode(this);\n return (h(Host, { class: createColorClasses(this.color, {\n [mode]: true,\n 'in-item-color': hostContext('ion-item.ion-color', this.el),\n [`label-${position}`]: position !== undefined,\n [`label-no-animate`]: this.noAnimate,\n 'label-rtl': document.dir === 'rtl',\n }) }));\n }\n get el() { return this; }\n static get watchers() { return {\n \"color\": [\"colorChanged\"],\n \"position\": [\"positionChanged\"]\n }; }\n static get style() { return {\n ios: labelIosCss,\n md: labelMdCss\n }; }\n}, [34, \"ion-label\", {\n \"color\": [513],\n \"position\": [1],\n \"noAnimate\": [32]\n }]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-label\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-label\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Label);\n }\n break;\n } });\n}\n\nexport { Label as L, defineCustomElement as d };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { b as getIonMode, c as config } from './ionic-global.js';\nimport { OVERLAY_BACK_BUTTON_PRIORITY } from './hardware-back-button.js';\nimport { c as componentOnReady, f as focusElement, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers.js';\n\nlet lastId = 0;\nconst activeAnimations = new WeakMap();\nconst createController = (tagName) => {\n return {\n create(options) {\n return createOverlay(tagName, options);\n },\n dismiss(data, role, id) {\n return dismissOverlay(document, data, role, tagName, id);\n },\n async getTop() {\n return getOverlay(document, tagName);\n },\n };\n};\nconst alertController = /*@__PURE__*/ createController('ion-alert');\nconst actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');\nconst loadingController = /*@__PURE__*/ createController('ion-loading');\nconst modalController = /*@__PURE__*/ createController('ion-modal');\nconst pickerController = /*@__PURE__*/ createController('ion-picker');\nconst popoverController = /*@__PURE__*/ createController('ion-popover');\nconst toastController = /*@__PURE__*/ createController('ion-toast');\nconst prepareOverlay = (el) => {\n if (typeof document !== 'undefined') {\n connectListeners(document);\n }\n const overlayIndex = lastId++;\n el.overlayIndex = overlayIndex;\n if (!el.hasAttribute('id')) {\n el.id = `ion-overlay-${overlayIndex}`;\n }\n};\nconst createOverlay = (tagName, opts) => {\n if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined') {\n return window.customElements.whenDefined(tagName).then(() => {\n const element = document.createElement(tagName);\n element.classList.add('overlay-hidden');\n /**\n * Convert the passed in overlay options into props\n * that get passed down into the new overlay.\n */\n Object.assign(element, Object.assign(Object.assign({}, opts), { hasController: true }));\n // append the overlay element to the document body\n getAppRoot(document).appendChild(element);\n return new Promise((resolve) => componentOnReady(element, resolve));\n });\n }\n return Promise.resolve();\n};\n/**\n * This query string selects elements that\n * are eligible to receive focus. We select\n * interactive elements that meet the following\n * criteria:\n * 1. Element does not have a negative tabindex\n * 2. Element does not have `hidden`\n * 3. Element does not have `disabled` for non-Ionic components.\n * 4. Element does not have `disabled` or `disabled=\"true\"` for Ionic components.\n * Note: We need this distinction because `disabled=\"false\"` is\n * valid usage for the disabled property on ion-button.\n */\nconst focusableQueryString = '[tabindex]:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^=\"-\"]):not([hidden]):not([disabled]), textarea:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), button:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), select:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), .ion-focusable[disabled=\"false\"]:not([tabindex^=\"-\"]):not([hidden])';\nconst focusFirstDescendant = (ref, overlay) => {\n let firstInput = ref.querySelector(focusableQueryString);\n const shadowRoot = firstInput === null || firstInput === void 0 ? void 0 : firstInput.shadowRoot;\n if (shadowRoot) {\n // If there are no inner focusable elements, just focus the host element.\n firstInput = shadowRoot.querySelector(focusableQueryString) || firstInput;\n }\n if (firstInput) {\n focusElement(firstInput);\n }\n else {\n // Focus overlay instead of letting focus escape\n overlay.focus();\n }\n};\nconst isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden');\nconst focusLastDescendant = (ref, overlay) => {\n const inputs = Array.from(ref.querySelectorAll(focusableQueryString));\n let lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;\n const shadowRoot = lastInput === null || lastInput === void 0 ? void 0 : lastInput.shadowRoot;\n if (shadowRoot) {\n // If there are no inner focusable elements, just focus the host element.\n lastInput = shadowRoot.querySelector(focusableQueryString) || lastInput;\n }\n if (lastInput) {\n lastInput.focus();\n }\n else {\n // Focus overlay instead of letting focus escape\n overlay.focus();\n }\n};\n/**\n * Traps keyboard focus inside of overlay components.\n * Based on https://w3c.github.io/aria-practices/examples/dialog-modal/alertdialog.html\n * This includes the following components: Action Sheet, Alert, Loading, Modal,\n * Picker, and Popover.\n * Should NOT include: Toast\n */\nconst trapKeyboardFocus = (ev, doc) => {\n const lastOverlay = getOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');\n const target = ev.target;\n /**\n * If no active overlay, ignore this event.\n *\n * If this component uses the shadow dom,\n * this global listener is pointless\n * since it will not catch the focus\n * traps as they are inside the shadow root.\n * We need to add a listener to the shadow root\n * itself to ensure the focus trap works.\n */\n if (!lastOverlay || !target) {\n return;\n }\n /**\n * If the ion-disable-focus-trap class\n * is present on an overlay, then this component\n * instance has opted out of focus trapping.\n * An example of this is when the sheet modal\n * has a backdrop that is disabled. The content\n * behind the sheet should be focusable until\n * the backdrop is enabled.\n */\n if (lastOverlay.classList.contains('ion-disable-focus-trap')) {\n return;\n }\n const trapScopedFocus = () => {\n /**\n * If we are focusing the overlay, clear\n * the last focused element so that hitting\n * tab activates the first focusable element\n * in the overlay wrapper.\n */\n if (lastOverlay === target) {\n lastOverlay.lastFocus = undefined;\n /**\n * Otherwise, we must be focusing an element\n * inside of the overlay. The two possible options\n * here are an input/button/etc or the ion-focus-trap\n * element. The focus trap element is used to prevent\n * the keyboard focus from leaving the overlay when\n * using Tab or screen assistants.\n */\n }\n else {\n /**\n * We do not want to focus the traps, so get the overlay\n * wrapper element as the traps live outside of the wrapper.\n */\n const overlayRoot = getElementRoot(lastOverlay);\n if (!overlayRoot.contains(target)) {\n return;\n }\n const overlayWrapper = overlayRoot.querySelector('.ion-overlay-wrapper');\n if (!overlayWrapper) {\n return;\n }\n /**\n * If the target is inside the wrapper, let the browser\n * focus as normal and keep a log of the last focused element.\n */\n if (overlayWrapper.contains(target)) {\n lastOverlay.lastFocus = target;\n }\n else {\n /**\n * Otherwise, we must have focused one of the focus traps.\n * We need to wrap the focus to either the first element\n * or the last element.\n */\n /**\n * Once we call `focusFirstDescendant` and focus the first\n * descendant, another focus event will fire which will\n * cause `lastOverlay.lastFocus` to be updated before\n * we can run the code after that. We will cache the value\n * here to avoid that.\n */\n const lastFocus = lastOverlay.lastFocus;\n // Focus the first element in the overlay wrapper\n focusFirstDescendant(overlayWrapper, lastOverlay);\n /**\n * If the cached last focused element is the\n * same as the active element, then we need\n * to wrap focus to the last descendant. This happens\n * when the first descendant is focused, and the user\n * presses Shift + Tab. The previous line will focus\n * the same descendant again (the first one), causing\n * last focus to equal the active element.\n */\n if (lastFocus === doc.activeElement) {\n focusLastDescendant(overlayWrapper, lastOverlay);\n }\n lastOverlay.lastFocus = doc.activeElement;\n }\n }\n };\n const trapShadowFocus = () => {\n /**\n * If the target is inside the wrapper, let the browser\n * focus as normal and keep a log of the last focused element.\n */\n if (lastOverlay.contains(target)) {\n lastOverlay.lastFocus = target;\n }\n else {\n /**\n * Otherwise, we are about to have focus\n * go out of the overlay. We need to wrap\n * the focus to either the first element\n * or the last element.\n */\n /**\n * Once we call `focusFirstDescendant` and focus the first\n * descendant, another focus event will fire which will\n * cause `lastOverlay.lastFocus` to be updated before\n * we can run the code after that. We will cache the value\n * here to avoid that.\n */\n const lastFocus = lastOverlay.lastFocus;\n // Focus the first element in the overlay wrapper\n focusFirstDescendant(lastOverlay, lastOverlay);\n /**\n * If the cached last focused element is the\n * same as the active element, then we need\n * to wrap focus to the last descendant. This happens\n * when the first descendant is focused, and the user\n * presses Shift + Tab. The previous line will focus\n * the same descendant again (the first one), causing\n * last focus to equal the active element.\n */\n if (lastFocus === doc.activeElement) {\n focusLastDescendant(lastOverlay, lastOverlay);\n }\n lastOverlay.lastFocus = doc.activeElement;\n }\n };\n if (lastOverlay.shadowRoot) {\n trapShadowFocus();\n }\n else {\n trapScopedFocus();\n }\n};\nconst connectListeners = (doc) => {\n if (lastId === 0) {\n lastId = 1;\n doc.addEventListener('focus', (ev) => {\n trapKeyboardFocus(ev, doc);\n }, true);\n // handle back-button click\n doc.addEventListener('ionBackButton', (ev) => {\n const lastOverlay = getOverlay(doc);\n if (lastOverlay === null || lastOverlay === void 0 ? void 0 : lastOverlay.backdropDismiss) {\n ev.detail.register(OVERLAY_BACK_BUTTON_PRIORITY, () => {\n return lastOverlay.dismiss(undefined, BACKDROP);\n });\n }\n });\n // handle ESC to close overlay\n doc.addEventListener('keyup', (ev) => {\n if (ev.key === 'Escape') {\n const lastOverlay = getOverlay(doc);\n if (lastOverlay === null || lastOverlay === void 0 ? void 0 : lastOverlay.backdropDismiss) {\n lastOverlay.dismiss(undefined, BACKDROP);\n }\n }\n });\n }\n};\nconst dismissOverlay = (doc, data, role, overlayTag, id) => {\n const overlay = getOverlay(doc, overlayTag, id);\n if (!overlay) {\n return Promise.reject('overlay does not exist');\n }\n return overlay.dismiss(data, role);\n};\nconst getOverlays = (doc, selector) => {\n if (selector === undefined) {\n selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';\n }\n return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);\n};\n/**\n * Returns an overlay element\n * @param doc The document to find the element within.\n * @param overlayTag The selector for the overlay, defaults to Ionic overlay components.\n * @param id The unique identifier for the overlay instance.\n * @returns The overlay element or `undefined` if no overlay element is found.\n */\nconst getOverlay = (doc, overlayTag, id) => {\n const overlays = getOverlays(doc, overlayTag).filter((o) => !isOverlayHidden(o));\n return id === undefined ? overlays[overlays.length - 1] : overlays.find((o) => o.id === id);\n};\n/**\n * When an overlay is presented, the main\n * focus is the overlay not the page content.\n * We need to remove the page content from the\n * accessibility tree otherwise when\n * users use \"read screen from top\" gestures with\n * TalkBack and VoiceOver, the screen reader will begin\n * to read the content underneath the overlay.\n *\n * We need a container where all page components\n * exist that is separate from where the overlays\n * are added in the DOM. For most apps, this element\n * is the top most ion-router-outlet. In the event\n * that devs are not using a router,\n * they will need to add the \"ion-view-container-root\"\n * id to the element that contains all of their views.\n *\n * TODO: If Framework supports having multiple top\n * level router outlets we would need to update this.\n * Example: One outlet for side menu and one outlet\n * for main content.\n */\nconst setRootAriaHidden = (hidden = false) => {\n const root = getAppRoot(document);\n const viewContainer = root.querySelector('ion-router-outlet, ion-nav, #ion-view-container-root');\n if (!viewContainer) {\n return;\n }\n if (hidden) {\n viewContainer.setAttribute('aria-hidden', 'true');\n }\n else {\n viewContainer.removeAttribute('aria-hidden');\n }\n};\nconst present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {\n var _a, _b;\n if (overlay.presented) {\n return;\n }\n setRootAriaHidden(true);\n overlay.presented = true;\n overlay.willPresent.emit();\n (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();\n const mode = getIonMode(overlay);\n // get the user's animation fn if one was provided\n const animationBuilder = overlay.enterAnimation\n ? overlay.enterAnimation\n : config.get(name, mode === 'ios' ? iosEnterAnimation : mdEnterAnimation);\n const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);\n if (completed) {\n overlay.didPresent.emit();\n (_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();\n }\n /**\n * When an overlay that steals focus\n * is dismissed, focus should be returned\n * to the element that was focused\n * prior to the overlay opening. Toast\n * does not steal focus and is excluded\n * from returning focus as a result.\n */\n if (overlay.el.tagName !== 'ION-TOAST') {\n focusPreviousElementOnDismiss(overlay.el);\n }\n /**\n * If the focused element is already\n * inside the overlay component then\n * focus should not be moved from that\n * to the overlay container.\n */\n if (overlay.keyboardClose && (document.activeElement === null || !overlay.el.contains(document.activeElement))) {\n overlay.el.focus();\n }\n};\n/**\n * When an overlay component is dismissed,\n * focus should be returned to the element\n * that presented the overlay. Otherwise\n * focus will be set on the body which\n * means that people using screen readers\n * or tabbing will need to re-navigate\n * to where they were before they\n * opened the overlay.\n */\nconst focusPreviousElementOnDismiss = async (overlayEl) => {\n let previousElement = document.activeElement;\n if (!previousElement) {\n return;\n }\n const shadowRoot = previousElement === null || previousElement === void 0 ? void 0 : previousElement.shadowRoot;\n if (shadowRoot) {\n // If there are no inner focusable elements, just focus the host element.\n previousElement = shadowRoot.querySelector(focusableQueryString) || previousElement;\n }\n await overlayEl.onDidDismiss();\n previousElement.focus();\n};\nconst dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {\n var _a, _b;\n if (!overlay.presented) {\n return false;\n }\n setRootAriaHidden(false);\n overlay.presented = false;\n try {\n // Overlay contents should not be clickable during dismiss\n overlay.el.style.setProperty('pointer-events', 'none');\n overlay.willDismiss.emit({ data, role });\n (_a = overlay.willDismissShorthand) === null || _a === void 0 ? void 0 : _a.emit({ data, role });\n const mode = getIonMode(overlay);\n const animationBuilder = overlay.leaveAnimation\n ? overlay.leaveAnimation\n : config.get(name, mode === 'ios' ? iosLeaveAnimation : mdLeaveAnimation);\n // If dismissed via gesture, no need to play leaving animation again\n if (role !== GESTURE) {\n await overlayAnimation(overlay, animationBuilder, overlay.el, opts);\n }\n overlay.didDismiss.emit({ data, role });\n (_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });\n activeAnimations.delete(overlay);\n /**\n * Make overlay hidden again in case it is being reused.\n * We can safely remove pointer-events: none as\n * overlay-hidden will set display: none.\n */\n overlay.el.classList.add('overlay-hidden');\n overlay.el.style.removeProperty('pointer-events');\n /**\n * Clear any focus trapping references\n * when the overlay is dismissed.\n */\n if (overlay.el.lastFocus !== undefined) {\n overlay.el.lastFocus = undefined;\n }\n }\n catch (err) {\n console.error(err);\n }\n overlay.el.remove();\n return true;\n};\nconst getAppRoot = (doc) => {\n return doc.querySelector('ion-app') || doc.body;\n};\nconst overlayAnimation = async (overlay, animationBuilder, baseEl, opts) => {\n // Make overlay visible in case it's hidden\n baseEl.classList.remove('overlay-hidden');\n const aniRoot = overlay.el;\n const animation = animationBuilder(aniRoot, opts);\n if (!overlay.animated || !config.getBoolean('animated', true)) {\n animation.duration(0);\n }\n if (overlay.keyboardClose) {\n animation.beforeAddWrite(() => {\n const activeElement = baseEl.ownerDocument.activeElement;\n if (activeElement === null || activeElement === void 0 ? void 0 : activeElement.matches('input,ion-input, ion-textarea')) {\n activeElement.blur();\n }\n });\n }\n const activeAni = activeAnimations.get(overlay) || [];\n activeAnimations.set(overlay, [...activeAni, animation]);\n await animation.play();\n return true;\n};\nconst eventMethod = (element, eventName) => {\n let resolve;\n const promise = new Promise((r) => (resolve = r));\n onceEvent(element, eventName, (event) => {\n resolve(event.detail);\n });\n return promise;\n};\nconst onceEvent = (element, eventName, callback) => {\n const handler = (ev) => {\n removeEventListener(element, eventName, handler);\n callback(ev);\n };\n addEventListener(element, eventName, handler);\n};\nconst isCancel = (role) => {\n return role === 'cancel' || role === BACKDROP;\n};\nconst defaultGate = (h) => h();\n/**\n * Calls a developer provided method while avoiding\n * Angular Zones. Since the handler is provided by\n * the developer, we should throw any errors\n * received so that developer-provided bug\n * tracking software can log it.\n */\nconst safeCall = (handler, arg) => {\n if (typeof handler === 'function') {\n const jmp = config.get('_zoneGate', defaultGate);\n return jmp(() => {\n try {\n return handler(arg);\n }\n catch (e) {\n throw e;\n }\n });\n }\n return undefined;\n};\nconst BACKDROP = 'backdrop';\nconst GESTURE = 'gesture';\n\nexport { BACKDROP as B, GESTURE as G, alertController as a, actionSheetController as b, popoverController as c, prepareOverlay as d, present as e, dismiss as f, eventMethod as g, getOverlay as h, activeAnimations as i, isCancel as j, focusFirstDescendant as k, loadingController as l, modalController as m, pickerController as p, safeCall as s, toastController as t };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, readTask, writeTask, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode } from './ionic-global.js';\n\nconst rippleEffectCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:strict;pointer-events:none}:host(.unbounded){contain:layout size style}.ripple-effect{border-radius:50%;position:absolute;background-color:currentColor;color:inherit;contain:strict;opacity:0;-webkit-animation:225ms rippleAnimation forwards, 75ms fadeInAnimation forwards;animation:225ms rippleAnimation forwards, 75ms fadeInAnimation forwards;will-change:transform, opacity;pointer-events:none}.fade-out{-webkit-transform:translate(var(--translate-end)) scale(var(--final-scale, 1));transform:translate(var(--translate-end)) scale(var(--final-scale, 1));-webkit-animation:150ms fadeOutAnimation forwards;animation:150ms fadeOutAnimation forwards}@-webkit-keyframes rippleAnimation{from{-webkit-animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:translate(var(--translate-end)) scale(var(--final-scale, 1));transform:translate(var(--translate-end)) scale(var(--final-scale, 1))}}@keyframes rippleAnimation{from{-webkit-animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:translate(var(--translate-end)) scale(var(--final-scale, 1));transform:translate(var(--translate-end)) scale(var(--final-scale, 1))}}@-webkit-keyframes fadeInAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:0.16}}@keyframes fadeInAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:0.16}}@-webkit-keyframes fadeOutAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0.16}to{opacity:0}}@keyframes fadeOutAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0.16}to{opacity:0}}\";\n\nconst RippleEffect = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n /**\n * Sets the type of ripple-effect:\n *\n * - `bounded`: the ripple effect expands from the user's click position\n * - `unbounded`: the ripple effect expands from the center of the button and overflows the container.\n *\n * NOTE: Surfaces for bounded ripples should have the overflow property set to hidden,\n * while surfaces for unbounded ripples should have it set to visible.\n */\n this.type = 'bounded';\n }\n /**\n * Adds the ripple effect to the parent element.\n *\n * @param x The horizontal coordinate of where the ripple should start.\n * @param y The vertical coordinate of where the ripple should start.\n */\n async addRipple(x, y) {\n return new Promise((resolve) => {\n readTask(() => {\n const rect = this.el.getBoundingClientRect();\n const width = rect.width;\n const height = rect.height;\n const hypotenuse = Math.sqrt(width * width + height * height);\n const maxDim = Math.max(height, width);\n const maxRadius = this.unbounded ? maxDim : hypotenuse + PADDING;\n const initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE);\n const finalScale = maxRadius / initialSize;\n let posX = x - rect.left;\n let posY = y - rect.top;\n if (this.unbounded) {\n posX = width * 0.5;\n posY = height * 0.5;\n }\n const styleX = posX - initialSize * 0.5;\n const styleY = posY - initialSize * 0.5;\n const moveX = width * 0.5 - posX;\n const moveY = height * 0.5 - posY;\n writeTask(() => {\n const div = document.createElement('div');\n div.classList.add('ripple-effect');\n const style = div.style;\n style.top = styleY + 'px';\n style.left = styleX + 'px';\n style.width = style.height = initialSize + 'px';\n style.setProperty('--final-scale', `${finalScale}`);\n style.setProperty('--translate-end', `${moveX}px, ${moveY}px`);\n const container = this.el.shadowRoot || this.el;\n container.appendChild(div);\n setTimeout(() => {\n resolve(() => {\n removeRipple(div);\n });\n }, 225 + 100);\n });\n });\n });\n }\n get unbounded() {\n return this.type === 'unbounded';\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { role: \"presentation\", class: {\n [mode]: true,\n unbounded: this.unbounded,\n } }));\n }\n get el() { return this; }\n static get style() { return rippleEffectCss; }\n}, [1, \"ion-ripple-effect\", {\n \"type\": [1],\n \"addRipple\": [64]\n }]);\nconst removeRipple = (ripple) => {\n ripple.classList.add('fade-out');\n setTimeout(() => {\n ripple.remove();\n }, 200);\n};\nconst PADDING = 10;\nconst INITIAL_ORIGIN_SCALE = 0.5;\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-ripple-effect\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, RippleEffect);\n }\n break;\n } });\n}\n\nexport { RippleEffect as R, defineCustomElement as d };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst hostContext = (selector, el) => {\n return el.closest(selector) !== null;\n};\n/**\n * Create the mode and color classes for the component based on the classes passed in\n */\nconst createColorClasses = (color, cssClassMap) => {\n return typeof color === 'string' && color.length > 0\n ? Object.assign({ 'ion-color': true, [`ion-color-${color}`]: true }, cssClassMap) : cssClassMap;\n};\nconst getClassList = (classes) => {\n if (classes !== undefined) {\n const array = Array.isArray(classes) ? classes : classes.split(' ');\n return array\n .filter((c) => c != null)\n .map((c) => c.trim())\n .filter((c) => c !== '');\n }\n return [];\n};\nconst getClassMap = (classes) => {\n const map = {};\n getClassList(classes).forEach((c) => (map[c] = true));\n return map;\n};\nconst SCHEME = /^[a-z][a-z0-9+\\-.]*:/;\nconst openURL = async (url, ev, direction, animation) => {\n if (url != null && url[0] !== '#' && !SCHEME.test(url)) {\n const router = document.querySelector('ion-router');\n if (router) {\n if (ev != null) {\n ev.preventDefault();\n }\n return router.push(url, direction, animation);\n }\n }\n return false;\n};\n\nexport { createColorClasses as c, getClassMap as g, hostContext as h, openURL as o };\n"],"names":["createKeyboardController","keyboardChangeCallback","keyboardWillShowHandler","keyboardWillHideHandler","keyboardVisible","init","w","destroy","undefined","isKeyboardVisible","KEYBOARD_DID_OPEN","KEYBOARD_DID_CLOSE","previousVisualViewport","currentVisualViewport","keyboardOpen","resetKeyboardAssist","startKeyboardAssist","win","startNativeListeners","visualViewport","copyVisualViewport","onresize","trackViewportChanges","keyboardDidOpen","keyboardDidResize","setKeyboardOpen","keyboardDidClose","setKeyboardClose","addEventListener","ev","fireKeyboardOpenEvent","fireKeyboardCloseEvent","scaledHeightDifference","height","scale","width","innerHeight","nativeEv","keyboardHeight","CustomEvent","detail","dispatchEvent","Object","assign","Math","round","offsetTop","offsetLeft","pageTop","pageLeft","Label","constructor","super","this","__registerHost","ionColor","ionStyle","inRange","noAnimate","componentWillLoad","el","closest","position","emitStyle","emitColor","componentDidLoad","setTimeout","colorChanged","positionChanged","color","emit","label","render","mode","h","class","c","document","dir","watchers","style","ios","md","defineCustomElement","customElements","forEach","tagName","get","define","lastId","activeAnimations","WeakMap","createController","create","options","createOverlay","dismiss","data","role","id","dismissOverlay","async","getOverlay","actionSheetController","toastController","prepareOverlay","connectListeners","overlayIndex","hasAttribute","opts","window","whenDefined","then","element","createElement","classList","add","hasController","getAppRoot","appendChild","Promise","resolve","focusableQueryString","focusFirstDescendant","ref","overlay","firstInput","querySelector","shadowRoot","f","focus","focusLastDescendant","inputs","Array","from","querySelectorAll","lastInput","length","trapKeyboardFocus","doc","lastOverlay","target","contains","lastFocus","activeElement","trapShadowFocus","overlayRoot","g","overlayWrapper","trapScopedFocus","backdropDismiss","register","OVERLAY_BACK_BUTTON_PRIORITY","BACKDROP","key","overlayTag","reject","overlays","selector","filter","getOverlays","o","find","setRootAriaHidden","hidden","viewContainer","setAttribute","removeAttribute","present","name","iosEnterAnimation","mdEnterAnimation","_a","_b","presented","willPresent","willPresentShorthand","animationBuilder","enterAnimation","overlayAnimation","didPresent","didPresentShorthand","focusPreviousElementOnDismiss","keyboardClose","overlayEl","previousElement","onDidDismiss","iosLeaveAnimation","mdLeaveAnimation","setProperty","willDismiss","willDismissShorthand","leaveAnimation","GESTURE","didDismiss","didDismissShorthand","delete","removeProperty","err","console","error","remove","body","baseEl","animation","animated","duration","beforeAddWrite","ownerDocument","matches","blur","activeAni","set","play","eventMethod","eventName","promise","r","onceEvent","event","callback","handler","a","RippleEffect","__attachShadow","type","x","y","rect","getBoundingClientRect","hypotenuse","sqrt","maxDim","max","maxRadius","unbounded","PADDING","initialSize","floor","INITIAL_ORIGIN_SCALE","finalScale","posX","left","posY","top","styleX","styleY","moveX","moveY","div","removeRipple","ripple","hostContext","createColorClasses","cssClassMap","getClassMap","classes","map","isArray","split","trim","getClassList","SCHEME","openURL","url","direction","test","router","preventDefault","push"],"sourceRoot":""}