{"version":3,"file":"js/decidim_core-4cec4174771042bf91a5.js","mappings":"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,aAEA,SAEA,wBAEA,UAEA,qBACA,qBACA,EAAE,YACF,2BACA,EAGA,SAEA,YAEA,KAEA,aAEA,mBAEA,aAEA,iBAEA,KAEA,cASA,2DACA,0BACA,EAGA,cACA,4BACA,EAGA,aAIA,GACA,QACA,OACA,SACA,aAGA,kBAGA,QACA,GAHA,QAGA,wBAGA,GADA,SACA,EACA,YAYA,4CAEA,oBAIA,+CACA,CAGA,cACA,eACA,KAIA,2CACA,8BACA,CACA,CAOA,cAEA,WAGA,gBAIA,yBACA,EAkYA,cAMA,kCACA,OAEA,qBAIA,oBACA,mCACA,CAGA,gBAEA,6DAEA,CAtZA,kBAGA,SAEA,cAGA,SAEA,mBACA,mBACA,EAIA,gBAGA,eACA,aAIA,+BACA,EAIA,sBAGA,oCAMA,OAHA,kBAGA,CACA,EAGA,iBACA,qBACA,EAEA,gBACA,gDACA,oBACA,IACA,EAEA,iBACA,8CACA,EAEA,iBACA,iBACA,EAEA,gBACA,kBACA,EAEA,gBACA,iDACA,aACA,IACA,EAEA,eACA,iDACA,UACA,IACA,EAEA,eACA,kBACA,eACA,6CACA,EAEA,eACA,0CACA,EAIA,OACA,YACA,iBAGA,gCACA,gBACA,mBACA,IACA,mBACA,KAsBA,IAnBA,uBACA,IAGA,mBACA,KAIA,4BACA,MAIA,QACA,OACA,KAGS,IAAY,IAGrB,0BAGA,WACA,OAIA,yBAKA,4BACA,sBACA,OAIA,EADA,qBACA,GACO,sBAGP,EAFA,GAIA,KAGA,2BAGM,QACN,SAOA,QACA,EAEA,UAGA,qDAGA,WAEA,kBACA,kBACA,EAEA,kBAEA,0BACA,QAIA,+CAIA,SASA,oBADA,2CACA,cACA,EAEA,0BACA,MAEA,WACA,SAEA,QACA,EAIA,2BACA,KAAmB,kBAAiC,EACpD,EAEA,mBACA,UAEA,QAEA,IADA,WACW,MACX,wBADuB,UAMvB,WACA,4BACA,MAKA,QACA,EAIA,iBACA,MACA,KACA,IACA,aAEA,MAGA,eAGA,aAGA,qBACA,cAEA,MACA,8BAEA,aACA,YAKA,CACA,EAGA,wBACA,YAaA,OAXA,UACA,aACA,UACA,oBACA,OAGA,aAIA,CACA,EAEA,wBACA,+BACA,EAEA,qBACA,wBACA,0CAIA,uCACA,EAIA,oBAKA,IAJA,gBACA,IACA,WAEU,IAAS,IACnB,YAKA,OAFA,WAEA,CACA,EAEA,qBASA,IARA,IACA,KACA,IACA,WACA,KAIU,IAAY,KACtB,YACA,GACA,aAIA,QACA,EAGA,oBACA,QACA,IACA,KAGA,QAEA,IADA,WACW,IAAY,IAGvB,OAFA,gBAGA,eAMA,WAGA,OAFA,gBAGA,UAMA,WACA,EAGA,OAIA,YAGA,6BACA,0CAIA,0FACA,cACA,mCACA,IAyBA,YAGA,SAGA,WAGA,wBAGA,aACA,2CACA,KAOA,yBACA,sBAEA,sCAIA,WACA,cACA,4DAEA,EAOA,qDAEA,gBACA,SAGA,SACA,SAIA,6DAIA,MACA,CAEA,6BACA,yBACA,EAKA,QACA,KAEA,WAEA,MACA,EACA,EACA,EACA,EAIA,EACA,EACA,EACA,EACA,EAPA,IAUA,YACA,IACA,IACA,OACA,OACA,OACA,OACA,gBAIA,OAHA,QACA,MAEA,CACA,EAEA,+HAMA,4BAAsC,EACtC,0CAGA,0BAGA,kBAGA,oEACA,SAEA,iGAOA,EAPA,eAcA,wBAEA,+BACA,oCACA,OACA,qBAEA,gBACA,wBAEA,GACA,2BACA,gCACA,+BACA,uBACA,yBACA,iBACA,yDACA,iDACA,+BACA,mCAIA,8BACA,qDACA,8CAGA,wCACA,WAGA,qCAEA,SAIA,oCAA8C,EAC9C,4BACA,gBACA,4BAEA,WAUA,IACA,6BACA,8CACA,EAMA,aACA,IACA,EAEA,MACA,YACA,sCACA,GACA,CAAI,iCAaJ,IACA,QACA,uBACA,cAMA,+BACA,CAAE,UACF,GACA,oBACA,oBACA,EACA,iBACA,8BACA,EAEA,CAEA,oBACA,kBACA,qBAGA,iBAKA,GAHA,QAGA,yBACA,qBAEA,SAIA,QACA,MACA,OAEA,IAIA,yBAGA,WAGA,UACA,4BASA,SALA,YAEA,OADA,YACA,CAOA,MAIA,+BACA,iBACA,SAGA,OADA,YACA,MAKM,SAEN,OADA,qCACA,EAGM,sCAEN,OADA,uCACA,CACA,CAIA,gBACA,gBAYA,GAVA,IACA,IASA,QACA,uBAyBA,KAtBA,+BACA,IAQA,cAGA,wBACA,sBAEA,0BAMA,GADA,SACA,OACA,KACA,4BACA,SAEA,aACA,CAEA,IAIA,OAHA,UACA,uBAEA,CACA,CAAM,SACN,OACA,CAAM,QACN,OACA,uBAEA,CACA,CACA,CAIA,kCACA,CAQA,cACA,SAaA,OAXA,gBASA,OALA,oCAGA,aAEA,UACA,CAEA,CAMA,eAEA,OADA,QACA,CACA,CAMA,eACA,kCAEA,IACA,YACA,CAAG,UACH,QACA,CAAG,QAGH,cACA,4BAIA,MACA,CACA,CAMA,eACA,mBACA,+BACA,CACA,CAMA,eACA,mBACA,qCACA,UACA,CACA,CAMA,eAGA,mBAKA,iBASA,8BAGA,YACA,uBACA,0BAEA,eAMA,kBAGA,mBACA,SAGA,eAKI,aACJ,cAKA,CACA,CAMA,eACA,uBAEA,OADA,KACA,kBAMA,IALA,MACA,mBACA,WAGA,KACA,YACA,kBAGA,GACA,GACA,CAOA,eACA,wDACA,CAOA,eACA,MACA,yBAOA,gDAMA,GADA,KACA,gBACA,iBAIA,aACA,yBACA,oBAOA,qBAMA,OACA,6BAGA,+BAOA,0BAEA,OADA,+BACA,sBACA,qCACA,IAKA,oCACA,oBACA,IAIA,uBACA,mCACA,IAWA,wBACA,IAEA,OADA,oCACA,CACA,CAAI,UACJ,QACA,CACA,IAGA,WACA,wBACA,qBACA,mBACA,+BACA,CACA,EACA,wBACA,6CACA,0BACA,eACA,CACA,IAEA,wBACA,qBACA,mBACA,+CACA,yBACA,qBACA,CACA,EAIA,wBACA,6CACA,UACA,sBAEA,MAIA,IADA,6BACA,YACA,UAMA,IAFA,yBACA,IACA,UAEA,IADA,6BACA,YACA,SAGA,CAEA,QACA,CACA,GAIA,yBACA,kDACA,0BAIA,qBAEA,EAGA,2BACA,oDACA,kCAEA,EAOA,KAIA,gBAEA,MAEA,2BACA,6DACA,EADA,oEAMA,yCACA,mCAIA,2CACA,aAMA,wCACA,mBAOA,uCACA,oBAKA,4BACA,8BACA,0CAQA,6BACA,4CACA,gCAQA,4BACA,wBACA,iBACA,wCACA,8BACA,iBAEA,IAEA,UAQA,eAGA,oCAMA,gBAGA,SAEA,OADA,KACA,EAIA,4DACA,WAgBA,GAPA,6CACA,6BAGA,KAIA,iDAOA,2BACA,iBACA,EAOA,2BACA,gBACA,EAIA,EACA,wBACA,EAGA,SACA,EAEA,GAvSA,CAwSA,CAopBA,SAlpBA,wBACA,uBACA,EAEA,gCAGA,GAFA,MAEA,IACA,YACA,eAEA,IACA,kBAGA,2BAIA,qCACA,QAEA,CAAI,UACJ,OACA,CAGA,+BACA,EAEA,yBAUA,OAHA,wBACA,MAEA,eACA,EAGA,sBAOA,wBACA,MAGA,oCAGA,0CACA,eACA,EAEA,kBACA,EAGA,iBACA,EAEA,oBACA,4DACA,EAMA,yBACA,MACA,KACA,IACA,IAWA,GAJA,gBACA,6BACA,YAEA,GACA,eACA,WACA,aAGA,UACA,gBAEA,CAMA,OAFA,OAEA,CACA,EAEA,2BACA,kDACA,EAEA,UAGA,eAEA,gBAEA,QAEA,cAEA,QAEA,UACA,KAAS,2BACT,KAAS,kBACT,KAAS,gCACT,KAAS,wBAGT,WACA,iBAWA,OAVA,uBAGA,4BACA,aAEA,cACA,mBAGA,YACA,EAEA,kBAkCA,OAtBA,wBAEA,yBAGA,MACA,cAKA,YACA,eACA,iCAEA,iCAGK,MACL,cAGA,CACA,EAEA,mBACA,MACA,cAEA,0BACA,MAIA,KACA,oBAGK,eAGL,cAGA,wCAGA,qBACA,mBAIA,aACA,GAGA,QAEA,gBACA,mCACA,cACA,WACA,QACA,EACA,YACA,aACA,CACA,EAEA,kBACA,eAEA,WACA,2BACA,eACA,iBACA,cACA,4CACA,qCACA,yBACA,GAEA,GACA,EAEA,qBACA,mBACA,kBAEA,eACA,UAEA,IAIA,MAEA,QACA,MAEA,SACA,MAEA,SACA,oBAEA,SACA,mBAEA,SACA,0BAEA,UACA,0BACA,cAEA,WACA,sCAIA,CACA,EAEA,0BACA,2BACA,uBACA,gBAEA,oBAGA,YACA,oBACA,EAEA,gBACA,cACA,wCACA,eACA,8BACA,SACA,KAEA,MAGA,MACA,SAEA,IADA,IACA,QACA,KACA,OACA,eAEA,SAKA,iCACA,CACA,QACA,CAKA,GAHA,+BAGA,MASA,IAHA,GADA,GADA,GADA,mBACA,QACA,eACA,KACA,qBAEA,iBAGA,iBAGA,+BACA,aACA,KACA,OAeA,GATA,IAIA,EADA,GADA,GADA,mBACA,QACA,eAMA,MAGA,uBACA,qBAEA,EACA,OACA,oBACA,IAGA,KACA,SACA,UACA,UAGA,UAUA,OADA,QACA,kBACA,CACA,CACA,EAEA,qBAMA,MACA,+CACA,kCAKA,YACA,KAIA,YACA,aACA,6CACA,kBAIA,IAHA,MACA,SACA,WACA,KAEA,EADA,oBACA,UAEA,IACA,YACA,eACA,GAGA,CACA,GAGA,SAGA,oBAKA,SACA,KACA,wBAEA,YACA,sBAMA,IALA,MACA,iBACA,WAGA,MACA,UACA,eAGA,IACA,gBAOA,OANA,OACA,cAIA,WACA,OACA,CACA,IAEA,oBACA,mBACA,sBACA,CACA,IAEA,yBAEA,OADA,iBACA,YACA,8CACA,CACA,IASA,qBAOA,OAJA,eACA,gCAEA,+BACA,YACA,MACA,GACA,OACA,OACA,mDAGA,OADA,qBACA,+BAEM,iCACN,QACA,CACA,IAGA,mBACA,kCACA,2BACA,EAEA,iBACA,YACA,EAEA,kBACA,WA5oCA,WACA,IACA,sBACA,CAAG,UACH,CAwoCA,IACA,iBACA,4BACA,EAGA,eACA,gBAEA,oBAIA,kCACA,2BACA,EAEA,qBAWA,OALA,cAEA,4BAGA,cACA,EAGA,kBAMA,mBAAiC,EAAM,gBACvC,gBACA,SAGA,QACA,EAEA,mBACA,yBACA,EAGA,mBACA,yBACA,EAEA,kBACA,yBACA,EAEA,mBACA,wCACA,aACA,EAEA,iBACA,MACA,uCAKA,kCACA,yBACA,EAGA,qBACA,SACA,IAEA,uBACA,WACA,IAEA,uBACA,iBACA,IAEA,uBAEA,IADA,QACW,IAAY,KACvB,UAEA,QACA,IAEA,sBAEA,IADA,QACW,IAAY,KACvB,UAEA,QACA,IAEA,uBACA,MAUA,IAPA,EADA,IACA,IACK,IACL,EAEA,IAGW,MACX,UAEA,QACA,IAEA,uBAEA,IADA,kBACW,KACX,UAEA,QACA,MAIA,2BAGA,CAAa,mDACb,mBAEA,SAAa,oBACb,mBAIA,eAIA,iBACA,YACA,MACA,WAEA,KACA,sBAOA,IAJA,IACA,KACA,cAEA,IA2BA,SAxBA,oBACA,IAGA,2BAEA,cAGA,MAGA,eACA,YACA,QACA,QAGA,2BAEA,qBAIA,WACA,yBACA,aACA,YACA,QACA,QACA,OACA,YAEA,qBAIA,MACA,KAEA,CAKA,SACA,SAGA,EACA,WAGA,eACA,CAEA,eAIA,IAHA,QACA,WACA,KACS,IAAS,IAClB,cAEA,QACA,CAEA,mBACA,YACA,SACA,OACA,sBACA,MAEA,eAGA,gBACA,aACA,qBACA,gBAGA,QACA,EAGA,gBACA,QACA,QAGA,MACA,aACA,wBACA,SACA,cAKA,aACA,qBAGA,GAFA,kBAEA,UACA,cACQ,cACR,mBAGA,iBAOA,GAHA,OAGA,cACA,QAEA,CAIA,QACA,CACA,CAEA,eACA,kBACA,gBAEA,IADA,eACA,KACA,gBACA,SAGA,QACA,EACA,IACA,CAWA,uBAOA,IANA,MACA,KACA,IACA,WACA,UAES,IAAS,KAClB,UACA,eACA,UACA,GACA,YAMA,QACA,CAEA,yBAOA,OANA,WACA,SAEA,WACA,WAEA,sBACA,YACA,KACA,KACA,WAGA,KA5CA,gBAGA,IAFA,QACA,WACS,IAAS,IAClB,YAEA,QACA,CAsCA,QACA,qBAGA,YAEA,EADA,cAsBA,GAnBA,EAaA,IATA,gBAGA,GAGA,EAGA,KAEA,IAIA,EAMA,IALA,UACA,YAGA,WACA,MACA,UACA,sBAKA,MACA,SACA,MAKA,IAFA,KACA,WACA,MACA,SAGA,eAGA,gBACA,CAIA,IADA,WACA,MACA,UACA,2BAEA,eAGA,OAIA,KACA,MACA,qBACA,GAEA,EACA,cAEA,YAGA,GACA,CAEA,eA+BA,IA9BA,UACA,WACA,wBACA,qBACA,QAGA,kBACA,YACA,GAAG,MACH,kBACA,qBACA,GAAG,MACH,mBAMA,uBACA,cACA,SACA,UAKA,OADA,OACA,CACA,GAES,IAAS,IAClB,2BACA,oBACI,CAIJ,IAHA,gDAGA,IAIA,IADA,MACY,MACZ,sBADqB,KAKrB,UACA,WACA,QAGA,eACA,QAAkB,kCAClB,gBACA,EACA,sBACA,sBACA,WAEA,CACA,SACA,CAGA,YACA,CAgIA,iBACA,MACA,KACA,KACA,WAEA,OAOA,IAJA,IACA,SAEA,WACA,MACA,YACA,GACA,UAEA,UAKA,MArJA,cACA,iBACA,aACA,sBACA,UACA,IACA,MACA,QACA,KACA,IAGA,0BAGA,iCACA,WAeA,IAbA,IAMA,cAOW,sBAA4C,KACvD,SAWA,IAVA,IAMA,wBACA,MACA,MAEA,UACA,gBACA,YACA,KACA,CAEA,IACA,IAEA,CAGA,KAGA,UACA,IAIA,GACA,UAGA,CAaA,GATA,KASA,UAEA,IADA,IACA,UACA,WAGA,MAGA,OACA,UACA,aACA,gBAMA,OACA,CAGA,aAGA,mBACA,cAEA,eAEA,CAQA,OALA,IACA,IACA,KAGA,CACA,EAEA,SACA,MACA,CACA,CA0BA,OAGA,YACA,CACA,QACA,CAWA,qBACA,cACA,2BACA,0BAMA,GAJA,QAIA,cAIA,IADA,sBACA,gCACA,0CAMA,KAJA,aACA,0BACA,IACA,QAEA,SAGK,IACL,gBAGA,iCACA,CAIA,IADA,oCACA,MACA,QAGA,uBAGA,mBAGA,IACA,0BACA,mBACA,sBACA,CAKA,GAFA,gBACA,mBAGA,OADA,aACA,EAGA,KACA,CAGA,CAWA,OAPA,YACA,EACA,GACA,EACA,GACA,mCAEA,CACA,CAtlBA,iCACA,oBA2lBA,8CAGA,KAIA,+BAGA,+DACA,IAEA,SAGA,2BACA,sBAIA,aACA,YACA,iBACA,cAEA,0BACA,iBACA,mBACA,mBACA,oBACA,yBAIE,CAviEF,GA0iEA,sBAIA,IAHA,SACA,cAEA,yBACA,mBACA,iBACA,MAEA,SACA,CAEA,QACA,EAGA,gBAGA,IAFA,SAES,EAAG,gBACZ,uBACA,UAIA,QACA,EAGA,4BAEA,oEAKA,kBACA,YACA,wBACA,yBACA,IAIA,WACA,sBACA,gBACA,IAIA,oBACA,sBACA,yBACA,IAIA,eACA,CAEA,yBACA,WAMA,OAJA,IACA,iBAGA,6BACA,mCAGA,uCACA,qBACA,IACA,EAEA,aACA,iBACA,QACA,cACA,OAEA,uBACA,8CACA,QAAiB,IAAS,IAC1B,yBACA,QAGA,KAKA,IAFA,qBAEA,IAAe,IAAS,IACxB,iBAGA,4BACA,EACA,mBACA,uCACA,EACA,gBACA,uCACA,EACA,eACA,UACA,KAIA,+BACA,KACA,OACA,GACA,MACA,IAQA,MAMA,yCAEA,0BACA,QAGA,MACA,YAQA,GAHA,OAGA,qBAaA,KAPA,EALA,YACA,qBACA,YAGA,cAGA,aAIA,QA6CK,oBACL,cAKA,4BAhDA,SAYA,GAXA,wBAIA,yBACA,KACA,oCACA,IAIA,iCACA,WAGA,WACA,cAIA,kBAKA,WAGA,CASA,OARA,4BAKA,UACA,eAEA,IAcA,CAAI,mBACJ,UACA,cACA,MAII,UACJ,YACA,WAGA,KAGA,mBACA,GAGA,eAGA,OAGA,uCAGA,GACA,YACA,YACA,QACA,SAoFA,gBACA,gCACA,QACA,CApFA,aACA,gBACA,gBACA,WAEA,+BAEA,IADA,QACW,IAAO,IAClB,yBACA,QAGA,GACA,EAEA,sBACA,MACA,IACA,cACA,KACA,4BAGA,cACA,KAAW,IAAO,IAClB,cAA2B,SAAwB,eAGnD,qBACA,cAGA,gBACA,8BAEA,UACA,KACA,CAKA,mDACA,EAGA,kBAGA,SAKA,oBACA,qBAIA,YAGA,iBAZA,4DAcA,EAEA,kBACA,sBACA,aACA,4BAGA,EAEA,oBACA,wBACA,0CAEA,IAQA,QACA,mBACA,mBACA,gCACA,EACA,oBACA,wBACA,EACA,6BACA,0BACA,EACA,iBACA,yBACA,EACA,iBACA,6BACA,EACA,oBACA,yBACA,EACA,oBACA,6BACA,EACA,0BACA,2BACA,EACA,0BACA,+BACA,EACA,qBACA,4BAA2C,aAC3C,EACA,qBACA,sBACA,EACA,qBACA,gCAKA,qBAEA,mBAMA,kBACA,gBAGA,yBACA,IACC,cACD,sBACA,sBAuBA,MArBA,wBACA,KAGA,yBACA,iBAGA,gBAGA,MACA,gBAIA,WACA,aAIA,iBACA,CACA,IACA,0BAsOA,cACA,QACA,CACA,cACA,OACA,CAEA,oBACA,MAEA,IAGA,kBACA,0BAGI,eACJ,cAQA,4BAMA,CAAG,SAIH,mBACA,CACA,CAzOA,wBAIA,sBAlCA,YACA,SAIA,OAHA,qCACA,OACA,IACA,CACA,CA6BA,IACA,YAAmB,GAEnB,IACA,EAGA,EAGA,EAGA,EAGA,KAGA,KAGA,KAGA,aAQA,IALA,YAIA,OACW,SAAc,KAEzB,IADA,cACA,aAGA,2BACA,gBAGA,WACA,MAMA,WACA,MAGA,KAGA,IAIA,EADA,EACA,GAIA,GAGA,EAGA,GAGA,eA2BA,OA1BA,IAGA,QACA,aACA,WAGA,cACA,wBACA,KACA,oBACA,UAES,8BAGT,IAEA,GACO,CAZP,CAYO,WAEP,OACA,KAGA,IACA,EAGA,kBAYA,OAXA,gCAEA,IADA,OACA,wBACA,cAGA,MACA,GAGA,IACA,IACA,EAIA,gBACA,SACA,kBACA,UACA,EAGA,iBAIA,OAHA,IACA,MAEA,IACA,EAKA,mBAGA,OAFA,OACA,OACA,IACA,EACA,oBACA,QACA,EAKA,gBAKA,OAJA,OACA,OACA,QAEA,IACA,EACA,kBACA,SACA,EAGA,uBASA,OARA,IAEA,MADA,SACA,mBACA,UACA,GACA,KAGA,IACA,EAGA,gBAEA,OADA,2BACA,IACA,EAGA,iBACA,SACA,GAGA,QACA,EA2CA,UAEA,qBACA,OAIA,2CACA,yBACA,6CACA,yCACA,4CACA,0CAEA,YACA,GACA,iBACA,QACA,EACA,kBAEA,OADA,kCACA,IACA,EACA,kBACA,qBACA,EAGA,gBACA,gBAEA,+BACA,wBAGA,0BAKA,oBACA,iCACA,gBACA,YACA,mBACA,gBACA,eAEA,eACA,KACA,gBAGA,GACA,IACA,MACA,IAAO,SACP,EACA,qBACA,QACA,oBACA,kBACA,WACA,YACA,aACA,QAKA,WAQA,IAJA,kBAIA,YACA,gDAOA,MAKA,qBACA,wBACA,OAGA,KAGA,EACA,OACA,EACA,WACA,aAOA,IAEA,OACA,EACA,WACA,WACA,QACA,iBASA,QACA,SACA,QAKA,uBA7DA,CA+DA,EAGA,IACA,EACA,WACA,IACA,GACA,CAAY,SAEZ,0BACA,2BACA,SAMA,SAIA,QACA,SACA,OAGA,kBAEA,CACA,EAMA,EACA,KAKA,wBACA,kCAMU,0BACV,mCAEA,gBAEA,CACA,CAEA,+BAGA,YACA,EACA,EACA,EACA,KACA,EACA,EACA,eAKA,YACA,EACA,EACA,EACA,KACA,EACA,IAKA,YACA,EACA,EACA,EACA,KACA,EACA,GAGA,IAAO,SACP,EAIA,oBACA,8BACA,GAEA,KAkEA,OA/DA,wBACA,WACA,OAKA,cAGA,GACA,OACA,WAIA,GACA,GAIA,kBAIA,kBAGA,aAGA,cAOA,iBAKA,mBAEA,OADA,+CACA,IACA,EAKA,yBACA,IAGA,aAGA,GACA,YAIA,CACA,EAGA,iBACA,IAGA,mBAGA,IAGA,WACA,oBAGA,eAGA,cACA,mBACA,UACA,8CACA,GACA,kBAEA,CACA,EAGA,UACA,mCACA,GAGA,uBACA,oBAEA,gBAKA,UACA,sBAGA,kBACA,IAMA,+DAKA,uCAIA,8CACA,uDACA,UAEA,EAKA,6BACA,yBACA,OACA,GACA,EAMA,mBAkDA,aACA,4CACA,gCACA,SACA,CApDA,uBAYA,OAVA,EACA,QAKA,mBACA,mBACA,IAEA,IACA,EAEA,UAGA,WAIA,YAGA,oBAGA,iCAKA,cAGA,wBAKA,qBACA,IAGA,oBAaA,2BACA,sDAGA,uBAKA,yCAGA,8BAQA,+BACA,QACA,WACA,UAGA,mBAEA,SADA,KACA,EACA,2BAIG,gBACH,KAEA,OACA,MAGA,IAGA,GACA,YACA,SAIA,IACA,kBACA,qBACA,IAIA,GACA,KAAW,IAAS,IACpB,EACA,SACA,EACA,0BAMA,SACA,EAIA,EACA,UAGA,aACA,EAIA,WACA,eAGA,iBACA,sBACA,CAKA,eACA,yCACA,CACA,mBAQA,mDACA,EAKA,cACA,+BACA,CAEA,SAEA,cAEA,kBAGA,sBA4BA,OAzBA,IACA,KAKA,QAIA,WACA,kBAMA,sCACA,QACA,oBAMA,CACA,EACA,oBACA,MACA,gBAIA,uBACA,gBAMA,WACA,cAGA,QACA,EACA,kBACA,kBACA,cAGA,uCACA,EACA,uBAaA,mBACA,mCAEA,eASA,qBAIA,UACA,EACA,qBACA,MACA,kBAEA,eAIA,eAkBA,GAXA,EAJA,iBAIA,WAEA,WAIA,EACA,IACA,gBAGA,OAEA,iBACA,OAEA,OAGA,6BAMA,WACA,8BAEA,gBArCA,CAwCA,EACA,oBACA,sBACA,sCACA,GAEA,cAEA,UAcA,mCACA,YA2BA,mBACA,MAIA,8BAIA,GAHA,4CAGA,kBAFA,qBAEA,CACA,IACA,EApCA,YACA,kBAIA,cAIA,WACA,KAIA,WACA,EAGA,WACA,cAGA,EACA,CAaA,GACA,CAAK,UAGL,aACA,MACA,SAGA,QACA,CAEA,UACA,oBACA,mCACA,EAEA,qBACA,uBACA,EAEA,yBACA,cACA,EAIA,sBACA,uBACA,EAEA,0BACA,cACA,IAGA,aACA,mBACA,UACA,UACA,kBAGA,eACA,iBACA,YAEA,4CAEA,IADA,WACA,KAIA,MAEA,KADA,aACA,mBACA,iBACA,cAIA,2BACA,CAGA,QACA,CAGA,0BACA,sBACA,cACA,IAGA,qBACA,MAOA,iBAKA,iBADA,qBAQA,KADA,WALA,OAWA,EAIA,sBAGA,gBACA,GACA,GAAG,kCACH,EAEA,uBACA,6BACA,iBACA,GACA,IAIA,UACA,sBACA,MAEA,KAYA,OAXA,oBACA,cAGA,KACA,oBACA,gCAEA,WAGA,KAEA,EAEA,sBACA,UAEA,mBACA,WACA,YACA,qBAMA,mBACA,YACA,KAGA,IAIA,UACA,+BAIA,OACA,UApBA,WACA,cACA,GAkBA,KAGA,MACA,cAEA,EAGA,0BACA,qBACA,mCACA,iDACA,0BACA,KAEA,IAGA,aACA,oBACA,QAQA,MANA,sBACA,IACA,OACA,KAGA,mBACA,wBAGA,MACA,KACA,sBACA,wBAGA,sBAEA,+BACA,iBAEA,GACA,EACA,oBACA,6BACA,iBACA,GACA,EACA,uBACA,6BACA,EAIA,sBACA,MACA,IACA,eACA,OACA,cACA,eACA,GACA,oBAEA,EAQA,IANA,sBACA,IACA,UAEA,UAEA,MACA,gCACA,UACA,IACA,gBAIA,OADA,IACA,YACA,IAEA,oDAEA,qDAGA,mCAEA,qBAIA,eACA,oCACA,EACA,IAAe,aAOf,iBACA,eACA,sCACA,mCACA,GAEA,qBAOA,gBAHA,QAGA,eACA,sBAMA,OAEA,2BACA,EAIA,qBACA,QACA,KACA,IACA,WACA,cACA,EACA,WACA,oBACA,EACA,MACA,oCAGA,eACA,+BACA,oBAEA,gBAYA,IARA,KAGA,UAGA,QAEA,KAIA,kBACA,4BACA,KAEA,KAIA,KACA,iBAGA,OACA,CAeA,OAbA,IACA,YAGA,OACA,iBACA,KACA,IACA,SACA,UACA,UAGA,CACA,CAGA,UAEA,eACA,MACA,kBACA,aACA,QAEA,WAIA,yCACA,qBAEA,4BAEA,aACA,WAEA,QAEA,EACA,CAEA,iBAOA,IANA,QACA,KACA,IACA,WAGS,IAAgB,KACzB,QACA,QAIA,kBACA,GAKA,aACA,+BACA,OACA,qBAGA,8BACA,aAGA,aACA,YAGA,wBAMA,QAAkB,IAAgB,IAClC,aACA,yBAIA,QACA,CAEA,aACA,gBACA,kBACA,EACA,gBACA,eACA,EACA,mBACA,2BACA,0BAGA,sBACA,SACA,eAEA,cAEA,GACA,IAEA,IAUA,GACA,GAXA,2BAEA,oCAEA,wCAMA,GADA,2BACA,qCACA,6BAMA,6BACA,qCACA,4BAEA,mBAIA,8DAIA,sCACA,2DAKA,iCACA,wBAKA,QAKA,+BACA,kDACA,2CACA,oDAEA,oBAYA,iBAIA,MAYA,OATA,EADA,4CACA,+BAEG,wCACH,2BAGA,QAGA,iBACA,eAGA,CACA,CAIA,iBAIA,IAHA,QACA,WAES,IAAO,IAChB,OACA,KACA,cACA,6BAGA,CA7CA,kDACA,YAGA,WACA,sEA2CA,mBAEA,uBAOA,IANA,gBACA,6BACA,KACA,IACA,WAES,IAAO,IAGhB,IAFA,SAEA,MAGA,mBAIA,iCAGK,cAIA,CAUL,IATA,2CAGA,yCACA,qBACA,yCAGA,OACA,KACA,cAKA,yBAGA,gBAGA,cACA,MA1BA,4BAkCA,IAHA,iBAEA,IACA,UAGA,wBACA,GACA,eAgBA,GAXA,QAGA,gCAGA,GACA,MAIA,EAEA,IADA,IACA,UACA,qBACA,UAMA,QACA,CAGA,6BAEA,cACA,QACA,CAEA,cACA,QACA,CAEA,yBACA,QAGA,wBASA,QANA,sBAGA,OACA,UAEA,EACA,mBAEA,QACA,CAqBA,GAnBA,kBAGA,IACA,YACG,UACH,qBAGA,IACA,WAIA,IACA,IACA,YAGA,MACA,UACG,MACH,SAeA,OAZA,QACA,IACA,cAIA,OADA,WACA,uBACA,EAGA,kCAEA,mBACA,yBACA,GACA,CA6aA,mBAGA,GAQA,eACA,iBACA,aACA,oBACA,MACA,iBAEA,2BAGA,MA4BM,wBAA+C,cACrD,yBAhBA,GARA,oBACA,iBAGA,UACA,iBACA,kBAEA,MAMA,OAHA,6BACA,mBAEA,OAeK,IAGL,8BACA,KACA,WACA,OAWA,oBACA,mCAEA,UAvEA,iBACA,mBAwEA,CApfA,SAEA,UAEA,wBAEA,UACA,MACA,UACA,YAGA,SAuCA,IAlCA,YAEA,GADA,KACA,QACA,cAKA,GACA,6BAIA,SACA,kBAIA,cACA,iCAEA,cACA,uBAIA,yDACA,0CACA,GAKA,GADA,0BACA,OACA,KAEA,KADA,qBACA,GACA,+BAGA,IAKA,yBAGA,mCAGA,yBAGA,YACA,OACA,WACA,OACA,UACA,YACA,WACA,kDACA,uBACI,IAGJ,WACA,WACA,gBAGA,UACA,2BAEA,oBACA,yBAKA,QACA,gBAEA,iBACA,wBAKA,EACA,gCAEA,UAIA,qBAGA,EAGA,2BAEA,UACA,MACA,UACA,2BAEA,oBAOA,IADA,GADA,0BACA,OACA,KAMA,GAJA,KADA,qBACA,GACA,+BAGA,GAeA,IARA,yBAEA,IADA,qCACA,GACA,QACA,wDAGA,aACA,KACA,QAEA,mBACA,oBACA,yBACA,oBACA,yBACA,cAEA,YACA,kBAEA,UACA,oBAOA,eACA,aACA,mCAEA,mCAGA,KAtCA,MAJA,WACA,gCA8CA,oBACA,4BA5DA,CA8DA,EAEA,qBAEA,gBACA,8BAGA,iBAEA,GACA,4CACA,YACA,8BAKA,IAFA,OAEA,IAAe,mBAAsB,IACrC,kBAMA,GAHA,uBAGA,gDASA,IAJA,kCAGA,KACA,sCAIA,IAHA,uBAEA,KACA,qBACA,mCAIA,iCACA,iCAEA,cACA,mBAKA,KAHA,qCAAgE,QAChE,8BAGA,mBACA,mBACA,sBAYA,OAJA,gBACA,4BAGA,QAxCA,CAyCA,EAEA,uBACA,cACA,KACA,kBACA,WAGA,MAIA,cAOA,+BAEA,KAAW,SAAc,qBAIzB,wDAGA,IAFA,KACA,KACA,IAAkB,IAAmB,SAMrC,MAFA,GAHA,QAGA,gBAGA,oBACA,sBACA,gCAEA,MACA,UAGA,UACA,QAA2B,mBAE3B,CAUA,OALA,OACA,YACA,QAAwB,6BAGxB,CACA,EAEA,sBACA,2CACA,cACA,gBAEA,SACA,WACA,sBACA,4BAEA,EACA,WACA,sBACA,4BAEA,EAEA,gBACA,8BACA,cACA,gBACA,YACA,SAEA,GAEA,EAEA,gBACA,oBACA,EACA,cACA,EAEA,SACA,MAGA,aAEA,OAGA,kBAIA,cAWA,OARA,iBACA,uBAGA,kBAIA,CACA,EACA,oBAIA,cAUA,OAPA,iBACA,uBAEA,eAIA,CACA,EAIA,qBACA,eACA,wBACA,uBACA,mBACA,QACA,GAGA,cACA,8BAIA,gCACA,qCAEA,KAwFA,8BAGA,uBACA,0BAEA,EAEA,sBAGA,8BACA,wBAIA,WACA,qBACA,iBAIA,iDACA,yBAGA,kBACA,GACA,GAKA,4CACA,oBACA,SAEA,mCACA,oCAIA,YAIA,GACA,iBAIA,0CAGA,kBACA,EAIA,mBACA,oBACA,sBACA,wBACA,iCACA,eAEA,0BACA,yBAEA,2BAEA,sBACA,kBAEA,EACA,2BACA,yBAEA,6BAEA,sBACA,mBAEA,EACA,oCACA,yBAEA,sCAEA,sBACA,6BAGA,sBACA,GAIA,QACA,UACA,WACA,cACA,kBACA,WACA,UACA,cACA,WACA,SACA,SACA,YACA,QACA,QACA,QACA,YACA,OACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,aACA,eACA,WACA,WACA,iBACA,aACA,WACA,UACC,iBAED,QAAe,kCAAoC,cAEnD,cACA,mBASA,4BACA,iBACA,yCACA,iBAGA,KAMA,4BAKA,IAEA,MAIA,4BACA,eAEA,CAEA,oBAGA,iBAEA,MAOA,GAFA,eAEA,eAcA,UARA,mBAEA,2BAEA,uBAMA,EACA,mBAMA,OAHA,YAGA,CACA,EAEA,oBACA,MAEA,mBAWA,UAVA,oBAKA,kBAHA,8BACA,kBASA,EAIA,qBACA,yBACA,EAEA,gBAeA,oBACA,iBAIA,8CACA,wBACA,cAMA,IACA,eACA,2BAEA,4BAGA,oBACA,EACA,oBACA,8CACA,wBACA,gBAEA,EAQA,eAPA,eACA,8BAEA,8BAEA,eAIA,EAEA,IAUA,QACA,uBACA,sBACA,2BACA,4BACC,cACD,oBACA,eACA,WAEA,mBACA,MAEA,kBACA,cASA,OALA,QANA,MAMA,WANA,KAMA,MACA,kBACA,kCACA,UAEA,CACA,EAEA,IAEA,aAEA,qBACA,uBACA,EACA,sBACA,yBACA,EACA,oBACA,QACA,oCAWA,OARA,cACA,wBACA,YACA,2BACA,WACA,WACA,WAEA,KAEA,wBAGA,WACA,mBAEA,WACA,CAUA,OATA,+BAGA,IACA,WAEA,QACA,MAEA,sBACA,0BACA,GACA,IAIA,IAKA,2BAGA,uCAEA,gCAGA,iBACA,qBACA,wCAEA,2BAGA,CACA,CAGA,eAEA,OADA,kDACA,CACA,CACA,eAOA,MANA,kCACA,uBAEA,0BAGA,CACA,CAEA,iBACA,gBAEA,mBAKA,mBAEA,EADA,UACA,QAKA,SAFA,6BAEA,EACA,sBAA4C,IAAO,IACnD,yBAOA,gBACA,eACA,cAA8B,GAE9B,YAvBA,CAyBA,CAGA,iBACA,+BAGA,6BACA,oBAGG,8BACH,8BAEA,CAEA,qBAGA,OAEA,gBACA,IACA,WACA,MACA,OACA,OAGA,MACA,2BACA,yBACA,2BACA,cACA,IACA,8BAEA,WACA,IAGA,OAEA,GADA,mCACA,WAEA,0BACA,KAIA,OAOA,IALA,GADA,4BACA,OAKW,IAAO,IAClB,IAEA,QACA,mBAGA,GAIA,2BAIA,iBAGA,KAOA,IANA,8BAGA,YAGA,IAAiB,IAAgB,IACjC,OACA,sBACA,2BACA,kBAEA,6CAGA,yBACA,kBACA,wCACS,GAST,oCAKA,CAGA,QACA,CAEA,mBAKA,IAJA,MACA,oBACA,IAES,eAA+B,IACxC,mBACA,mBAGA,eACA,UACA,mBAEA,6BAIA,QACA,CAEA,UACA,0BACA,QACA,EAEA,sBACA,YACA,kBACA,QAGA,0DACA,cAOA,IAHA,QAGA,OAFA,SAEA,OAAwC,IAAO,IAC/C,cAKA,KACA,KAIA,IAHA,WACA,WAEA,eAAyC,IAAO,IAChD,mBAGA,QAWA,OANA,kBACA,UACA,yBAIA,CACA,EAEA,sBAKA,IAJA,UACA,kBACA,SAEU,aAAqC,IAC/C,UACA,oBACA,YACA,kBACA,KACA,oBAIA,4BAOA,oBACA,CACA,gBAIA,qBAEA,CAEA,IAGA,aACA,mBACA,oBACA,EAEA,mBACA,iBACA,EAEA,iBACA,4BACA,kBACA,aACA,8BACA,2DACA,mBAEA,GACA,GAAG,wBACH,EAEA,kBACA,sCACA,0DACA,WACA,cAEA,GACA,EAEA,mBACA,sCACA,6DACA,iBACA,8BACA,CACA,GACA,EAEA,kBACA,sCACA,iBACA,oCAEA,GACA,EAEA,iBACA,sCACA,iBACA,gDAEA,GACA,EAEA,iBAIA,IAHA,MACA,IAEU,kBAA8B,IACxC,iBAGA,sBAGA,kBAIA,WACA,EAEA,oBAIA,OAHA,aACA,cAEA,qBACA,wBACA,GACA,EAEA,iBACA,4BACA,kBACA,IACA,cAEA,8BACA,mBAIA,sCACA,4CAEA,qBAEA,IACA,KAAa,IAAO,IAIpB,KAHA,eAGA,WACA,sBACA,eAIA,GAGA,CAAM,UACN,CAEA,GACA,sBAEA,GAAG,wBACH,EAEA,uBACA,SAGA,sCACA,sBAEA,sBACA,sBACA,GACA,uBAKA,GAAG,EACH,IAGA,QACA,kBACA,oBACA,sBACA,oBACA,2BACC,cACD,oBAOA,IANA,MACA,KACA,OACA,aACA,IAEU,KAAW,IACrB,4BACA,cAIA,mBAGA,wBACA,CACA,IACA,iDAEA,SAGA,eAKA,kCAMA,OAJA,cACA,KAGA,qBACA,EAEA,mBACA,QACA,KAGA,WACA,gBACA,gBAMA,SAHA,YAGA,EACA,gBAGA,QACA,EAGA,gCAiJA,mBACA,YACA,aAMA,UAoEA,OAlEA,cAgBA,8BAEA,OAkBA,6BAGA,gBACA,iBAQA,6CAGA,UACA,aACA,aAGA,gCACA,UAGA,UACA,aACA,oBAIA,MAIA,KACA,CACA,CAGA,iBAGA,OACA,eACA,QASA,gDALA,QAMA,EAEA,EAnPA,WAIA,aAGA,MAIA,+FAEA,gBACA,4HAGA,iCAEA,4BACA,eAGA,uBAIA,oBACA,kBAIA,kBAMA,4BACA,0BAEA,kBAIA,MApCA,CAqCA,CAEA,cACA,gCACA,CAEA,YACA,IACA,yBACA,yBAGA,UAMA,qCACA,wCACA,yDAEA,YACA,6BAEA,OADA,IACA,CACA,EACA,0BAEA,OADA,IACA,CACA,EACA,yBAEA,OADA,IACA,CACA,EACA,8BAEA,OADA,IACA,CACA,EACA,yBAEA,OADA,IACA,CACA,EAWA,gCACA,YAmCA,OAlCA,UACA,2BACA,wBACA,yBAEA,2EACA,0DAKA,qBACA,qBAQA,wBAEA,GACA,eACA,eACA,eAEA,wBACA,wBACA,8BACA,kDAEA,mBAEA,CACA,IAEE,CA1IF,GAsPA,6BACA,gCACA,MAkBA,eACA,2BAEA,WAGA,QACA,EAEA,MAxBA,YAMA,IAHA,oCACA,YAEA,KAEA,IADA,aACA,GACA,QAGA,CAYA,OACA,CAGA,IAKA,+BACA,IAAa,yDACb,IACA,kBACA,kBAGA,mBAIA,iBACA,SAGA,qCACA,CACA,CAEA,yBACA,sBACA,IACA,IACA,IAGA,8BACA,SAGA,KAAS,IAAO,KAKhB,eACA,0BAIA,GAmBA,gBACA,kCAIA,eACA,2CAtBA,iCAGA,cACA,wCAIA,yCAoCA,OAhBA,UAIA,wBACA,0CACA,EACA,EACA,EACA,MAIA,GAGA,GACA,CAEA,mBAGA,YAKA,IADA,2BAEA,yCACA,IAEA,YACA,yCAIA,eACA,MACA,SAEA,QACA,CAwCA,QAlCA,2BAMA,qCAIA,aAIA,oDAGA,4BAEA,4CAKA,YAEA,UAKA,oBAIA,GACA,EACA,EACA,0BACA,EACA,EAGA,GAEA,IACA,CAuTA,uBACA,uCACA,CAvTA,UAIA,UACA,SACA,kBACA,MAGA,sBACA,kBACA,CACA,IAKA,WACA,2BACA,eACA,oBACA,eACA,YACA,cACA,cACA,YACA,cACA,iBACA,mBACA,WACA,cACA,gBACA,cACA,WACA,SACA,WACA,SACA,UACA,UACA,QAGA,eACA,gBACA,eACA,oBACA,kBAKA,YAGA,wBAGA,+CAKA,UACA,QACA,aACA,UAaA,GARA,IACA,SAIA,oCAGA,MA0CA,0BACA,sBAEA,EAIA,KA7CA,YAHA,cAGA,sBACA,YAGA,YAIA,iBAOA,kBACA,sCAIA,yDACA,gBAIA,mBACA,uBAEA,EACA,mBAEA,QAtDA,CAsEA,EAEA,sBACA,UACA,QA6BA,OA5BA,aAMA,UAIA,iCAGA,YACA,sBAIA,QACA,aAIA,wBACA,SAIA,WACA,iBACA,2BAGA,CACA,IAGA,yCACA,eACA,oBACA,KAIA,oCAQA,2DAIA,UAHA,oBACA,gBACA,GAGA,EAEA,oBACA,MACA,QAIA,sBACA,wBAIA,GADA,OAEA,yCACA,IACA,GACA,EACA,EACA,EACA,EACA,GAEA,EAqBA,OAjBA,OACA,aACA,0CACA,iBACA,sBACA,KAKA,mBACA,sBAEA,aACA,cAGA,SACA,EAEA,IAEA,+CACA,cACA,KACA,uCACA,+BACA,MAAmB,eAAe,WAClC,qCACA,KACA,IAEA,IAIA,QACA,UACA,WACA,iBACC,cACD,iBACA,mBAOA,IANA,QACA,KAGA,uCAEW,IAAO,IAClB,aACA,mBAGA,QACA,GAGA,eACA,uBAEA,IAEA,aACA,kBACA,gCACA,QACA,KACA,IAEA,qBAIA,IAHA,QACA,WAEY,IAAS,IACrB,2BAGA,QACA,CAEA,kBACA,eACA,UACA,GAAG,uBACH,IAOA,WAEA,cACA,eACA,2BACA,YACA,YACA,iCACA,eACA,+BACA,WACA,qCACA,EACA,eACA,8BAEA,gBACA,YACA,+BACA,EACA,gBACA,MACA,0BAoBA,OAlBA,sBACA,iCACA,qDAGA,aAEA,4CAEA,mBACA,gDAGA,SACA,YAEA,gCAEA,IACA,GAGA,yCAEA,cACA,UACA,gBACA,MAIA,4BACA,iDACA,gBAOA,4BAGA,cACA,EACA,gBAKA,kBACA,qBACK,sBACL,oBACA,+BAGA,qBAFA,mCAIA,IAMA,gDACA,gBACA,qCACA,qBAEA,GAGA,UACA,mBACA,QACA,EACA,kBACA,8BACA,EACA,kBAGA,uBAGA,aAKA,IACA,MACA,4BACA,iBAEA,cACA,MACA,sCACA,4BAEA,+BAGA,YAEA,CAGA,cAIA,OAHA,yBACA,SACA,IACA,aACA,CAGA,iBACA,MACA,IACA,GAAY,UAKZ,IADA,QACS,IAAO,OAEhB,YADA,UACA,iBAOA,OAJA,IACA,qBAGA,CACA,CAEA,mBAKA,IAJA,MACA,gDACA,IACA,WACS,IAAgB,IACzB,sBAGA,QAGA,CAmNA,mBACA,MACA,EACA,IACA,uBACA,yCAGA,MACA,IACA,aACA,KACA,SAYA,IAVA,eACA,uCAKA,KADA,iBAEA,IACA,kBAEW,IAAgB,IAC3B,mBAMA,OAHA,wBAGA,OACA,GAIA,GACA,wBAIA,sBACA,EACA,EACA,aACA,OACA,kBAA2B,GAC3B,kBACA,iBACA,0BACI,GACJ,qBACA,kBACA,mBACA,oBACA,UACA,0BACA,2BACA,wCAEA,OADA,iBACA,CACA,EACA,iBACA,QAIA,sBACA,KACA,YAGA,IADA,KACY,IAAgB,IAC5B,mBAUA,OANA,GACA,wBACA,wBAEA,sBAEA,IACA,IAEA,UAIA,KA/HA,cACA,cAGA,WAeA,GAbA,IADA,SAEA,OACA,mBACA,OACA,aAGA,QACA,cACA,OAGA,kBACA,aAMA,SALA,qBACA,KAIA,EACA,SACA,UACA,aAIA,MAGA,CA0FA,yBAES,IAAgB,IAEzB,GADA,sCAMA,OAJA,YACA,wCACA,gBAEA,EAyBA,OArBA,cAEA,iBACA,uBAIA,EACA,0BACA,kCACA,kBACA,sBAEA,WACA,YACA,OACA,OACA,sBAIA,CACA,CAEA,yBAEA,UACA,mBACA,4BAEA,OADA,0BACA,CACA,IAGA,sBACA,MACA,IACA,SAEA,aAOA,IAJA,MACA,IACA,WAEU,IAAgB,IAC1B,OACA,kCACA,yBAEA,EAEA,YA3WA,gBACA,oBACA,4BACA,OACA,KACA,UACA,oBACA,qBA6BA,SA1BA,UAEA,OADA,yBACA,WACA,aACA,eACA,wBACA,YACA,GAEA,GAEA,aAEA,qBAGA,qBACA,aACA,wBACA,cAEA,GACA,KAIA,EAEA,GADA,OACA,YAGA,UAFA,KACA,kBACA,uBAIA,iCAKA,SAJA,IAMA,CACA,0BACA,CAKA,IADA,yBACA,mBA8DA,SAzDA,oBAMA,gDAIA,OADA,kBAEA,uBAGA,UADA,wBAEA,EACA,KAIA,WACA,qBACA,qBACA,WAKA,4CACA,4BAGA,IACA,mBACA,WACA,IACA,UACA,YACA,oBAGA,2BAKA,aACA,oBACA,qBACA,yBACA,0BACA,yBACA,KAIA,KACA,EAGA,IACA,EACA,eACA,YAGA,wBAAkD,YAIlD,IACA,aAIA,GACA,WAKA,mBASA,SAJA,GACA,QAEA,sBACA,EACA,iBAEA,KAIA,mBACA,SACA,aACA,IACA,cACA,WAIA,GAmMA,wBACA,EACA,yBAEA,qBAEA,IAGA,wBACA,yCAAiE,IACjE,mBACA,QACA,WACA,0BAoCA,OAhCA,SACA,aAGA,+BACA,0BACA,mCAGA,iCAMA,8BACA,cAIA,iBAEA,sBACA,UACA,iBAGA,SACA,uBAEA,EAEA,CACA,EAEA,aACA,yBAGA,+CAGA,eAAqB,WAAa,MAClC,EACA,0BACA,yBACA,iBACA,aAGA,0BAAiD,OAGjD,2BACA,UAEA,EAIA,OAFA,WAEA,gBACA,aACA,qBACA,EACA,qBACA,kBACA,oBACA,OACA,IACA,EAWA,MATA,sBACA,IACA,IACA,UAEA,GACA,uBAGA,sBACA,SACA,0BACA,WACA,eAEA,KACA,iBACA,aAGA,WACA,6BACA,QAKA,eAAgC,KAChC,kBACA,0BAEA,kBACA,KACA,gBAOA,MACA,iBAEA,GACA,EACA,mBAIA,OAHA,QACA,WAEA,sBACA,MACA,eACA,eACA,oBACA,WACA,eAaA,IAVA,YAGA,mBAEA,WACA,qBAIA,WAAgC,KAChC,mCACA,mBACA,eAKA,QAAoB,IAAgB,IACpC,mBACA,8BAKA,QACA,GACA,IAGA,+CACA,cACA,wBACA,qCACA,wBACA,4BACA,CACA,IAGA,QACA,qBACA,mBACA,yBACA,QAAW,gBACX,SAAY,gBACZ,YAAe,oBACd,cACD,wBACA,4BACA,CACA,IAEA,YACA,qBACA,MACA,IACA,WAIA,IAFA,cAES,WAAmB,KAC5B,WAGA,UACA,gBAIA,UACA,YAEA,SACA,EAEA,uBACA,iBACA,YACA,EAEA,iBACA,sBACA,KAIA,MACA,KACA,EAEA,qBACA,OACA,EAEA,aACA,SACA,SAGA,cAKA,yBAIA,OAHA,0BACA,UAEA,4BACA,wBACA,kBACA,iBACA,CACA,GACA,EAGA,WACA,+BAEA,EADA,0BACA,uCAEA,kBAIA,uBAIA,0BAIA,4BACA,UACA,eACA,0BACE,CArBF,GAwBA,OACA,qBAEA,aACA,mBACA,6CACA,EAEA,uBACA,6BACA,oBACA,GACA,IAGA,UACA,qBACA,QACA,aAGA,uBAKA,0CACA,eAKA,uBACA,iCACA,2CAGA,MACA,cACA,kBAIA,mBACA,qBACA,GAGA,uBACA,GAGA,oCACA,EAMA,OAHA,yBAGA,IACA,EAEA,WACA,MACA,kBACA,+BACA,cACA,cAKA,OAJA,yBACA,IACA,WAEA,CACA,CACA,IAIA,yBACA,MACA,IAIA,gBAEA,qBACA,eACA,oBAGA,IAIA,IACA,oBAQA,OAPA,MAGA,kBAEA,oBAEA,CACA,GAGA,6DACA,yBAEA,sBACA,QACA,kBAYA,OAVA,IAGA,QACA,QACA,iBACA,EACA,KACA,SAEA,CACA,CACA,IAKA,6CACA,mBAwIA,eAEA,OADA,gBACA,SACA,CAGA,eACA,kDACA,CAEA,eACA,wBACA,EAEA,qBACA,YAEA,EACA,CAxJA,aACA,mBACA,6CACA,EAEA,uBACA,oCACA,qBACA,GACA,IAGA,UACA,qBACA,QACA,aAGA,uBAWA,OAPA,uBAGA,kBACA,uBAGA,MACA,mBACA,qBACA,EAGA,OAGA,oCACA,EAGA,IACA,EAEA,WACA,UACA,gBAMA,gCAEA,SACA,eAIA,qBACA,qBACA,OAEA,GAGA,CACA,IAIA,SACA,cACA,qBAYA,gBACA,sBACA,gBAIA,mBAIA,OAHA,iBACA,2BAEA,IACA,EACA,gBAIA,mBACA,IACA,gBAEA,cACA,2BAGA,IAIA,QACA,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACA,WACA,kCACA,IA2BA,aACA,qBACA,gBAEA,YACA,uBACA,yCACA,KAGA,SAEA,OACA,sBAIA,GAHA,WACA,mCAEA,CACA,QAAkB,WAAuB,IACzC,OACA,yBACA,UAKA,QACA,OACA,4BAEA,CACA,IAGA,IACA,EAEA,wBACA,gBAEA,YACA,uBACA,4CACA,IAGA,kBAIA,SAEA,OACA,sBAMA,GALA,WAGA,mCAEA,CACA,QAAkB,WAAuB,IAIzC,IAHA,OAGA,yBACA,2BAKA,QACA,OACA,4BAEA,CACA,IAGA,KA/BA,qBAgCA,EAEA,0BACA,YACA,WACA,iCAEA,YACA,uBACA,oBACA,0BACA,EAEA,IAGA,wBACA,wCAGA,QAEA,sBACA,KAKA,IAFA,UAEA,IAAiB,WAAuB,IACxC,OAGA,cACA,iBAEA,wBAKK,wBACL,aAIA,+BAOA,mBACA,0BACA,UACA,GACA,kCAIA,IACA,EAEA,qBACA,QACA,IAGA,IADA,YACA,aACA,oBACA,iCACA,SAIA,QACA,IAMA,aAEA,aACA,gBACA,UACA,UAEA,yBA0BA,OAEA,uBACA,MAEA,oBAWA,OANA,EADA,EACA,6BAEA,GAKA,KAEK,oBACL,MAEK,mBACL,uBACA,sBACA,MAGA,mEAGA,4CACA,cAEA,KA3DA,GACA,sBACA,uCAGA,gBACA,yBAEA,EAMA,kBAHA,WAIA,iBAIA,kBAGA,CAsCA,IAGA,UACA,UACA,QACA,gBAEA,6BACA,eACA,EAMA,aACA,GAEA,QACA,gBACA,UACA,YACA,kBACA,wBACA,YACA,iBAUA,IAPA,EADA,IACA,EAGA,MAIY,IAAS,IAKrB,KAJA,QAIA,mBAGA,cACA,wBACA,6BAMA,GAHA,aAGA,EACA,SAIA,SACA,CAGA,QACA,EAEA,kBAMA,IALA,QACA,YACA,iBACA,WAEA,OACA,QAIA,SACA,4CAEA,MAUA,OAHA,IACA,oBAEA,CACA,MAMA,wCACA,kBACA,kBACA,oBACA,2CAEA,GAEA,YACA,iCACA,kDACA,EAEA,IAMA,kBAEA,IAAc,iBAEd,QAKA,uBACA,QACA,2BACA,YAKA,IACA,iDACA,CAAG,UAYH,OAVA,8CACA,OACA,yBACA,EACA,gCACA,oBACA,IAAM,WACN,IAGA,CACA,EAGA,yCACA,eACA,mBACA,EAEA,kBAEA,0BAEA,oBACA,SACA,4BACA,kDAKA,GAHA,aAGA,iCAKA,+BAIA,oBAGA,eACA,YACA,UAEA,4BAGA,eACA,EACA,uCAGA,gBACA,wBACA,yBACA,wDACA,KAGA,gBACA,WACA,YAIA,UACA,IACA,mBAGA,yBACA,2CAMA,2BAMA,IAJA,oBACA,eACA,gBAEW,EAAK,eAChB,UACA,IAIA,0BACA,wCAEA,CAIA,IADA,KACA,sCACA,IACA,WACA,EACA,eAGA,qDACA,qBAEA,cAIA,YACA,iBACA,uBACA,cACA,oBA8CA,OA1CA,SAGA,2BAEA,aACA,kCACA,OAIA,qBAGA,UAGA,WAIA,oBAEA,0BACA,yBAGA,OAEA,0BACA,4BAGA,yBAEA,IACA,SAMA,QAvFA,CAwFA,EAIA,yBACA,eACA,YACA,EACA,CACA,OACA,iBAIA,yBACA,IAIA,aAEA,sBACA,6BACA,yBACA,GACA,EACA,6BACA,cACA,KACA,gCAEA,IAIA,IACA,WACA,YACA,2CACA,wCAEA,qBACA,MAEA,oBAGA,wBACA,cAGA,OAKA,GACA,8CACA,EACA,EACA,EAGA,SAEG,sBAUH,YAPA,WACA,wBAQA,CAIA,sBACA,MACA,KACA,gBAGA,WACA,IACA,EAEA,sCACA,gCACA,EAEA,WACA,SAIA,mDAGA,qBACA,uBACA,SAMA,WACA,eAKA,kBACA,EAEA,aACA,qBACA,qCACA,EACA,0BACA,4BAGA,8BACA,4BACA,IAAI,mBACJ,gBAGA,4CACA,sCACA,0BACA,IAAI,mBACJ,oBAEA,eACA,KAGA,iBACA,qBACA,OAAc,uCACd,IAGA,CAAY,uCACZ,IAAI,KACJ,IAIA,IACA,UACA,UACA,mBACA,gCAIA,oBACA,WAWA,MAOA,MAGA,oBAGA,wBAKA,eAGA,qBAEA,sBACA,IACA,OAGA,MACA,IACA,+BAEA,QAGA,eAGA,YACA,mBACA,4BAIA,sBAIA,CACA,CAGA,qBAEA,SACA,SAEA,cACA,MAcA,OAbA,QACA,+BACA,eACA,2BACA,QAKK,IACL,UADK,GAHL,uBACA,MACA,EAIA,IACA,CACA,CAEA,yCACA,CAKA,iBACA,QACA,iCAEA,gBACA,YACA,kBAAyD,SAOzD,OAJA,GACA,iBAGA,CACA,CAhFA,gBAgPA,UAGA,SAGA,gBACA,QAEA,cACA,YACA,WACA,QAxRA,4DAwRA,kBACA,UACA,eACA,SACA,+DAcA,SACA,OACA,kBACA,iBACA,gCACA,0CAGA,UACA,cACA,cACA,iBAGA,gBACA,kBACA,oBACA,qBAKA,YAGA,gBAGA,eAGA,uBAGA,uBAOA,aACA,OACA,aAOA,wBACA,SAGA,2BAGA,oBACA,EAEA,qBACA,qBAGA,mBAGA,sBACA,IACA,UAIA,QAEA,MAGA,EAGA,EACA,EAGA,EAGA,EAGA,EAGA,EAGA,EAGA,EAGA,iBAA2B,GAG3B,eAGA,cACA,sBACA,KACA,QAGA,eACA,6BAGA,mBAGA,KACA,KAGA,aAGA,GACA,aAGA,8BACA,MACA,MACA,MAEA,IADA,KACA,cACA,2BACA,+BACA,aAGA,wBACA,CACA,gCACA,EAGA,iCACA,eACA,EAGA,+BAMA,OALA,UACA,qBACA,sBACA,QAEA,IACA,EAGA,6BAIA,OAHA,UACA,cAEA,IACA,EAGA,uBACA,MACA,KACA,KAGA,2BAIA,WACA,iBAIA,WACA,EAGA,kBACA,WAKA,OAJA,GACA,WAEA,OACA,IACA,GAmBA,GAfA,aAKA,+BACA,6BAGA,0CAGA,2DAGA,qBACA,uBAKA,IACA,aAIA,cACA,yCACA,sBACA,CAAK,SAIL,gBACA,CACA,CAWA,GARA,kDACA,sCAIA,aAGA,EACA,SA8EA,SAzEA,sBAGA,gBACA,6BAIA,4BAGA,8BAKA,uBAGA,aAwBI,uBACJ,uEACA,gCAvBA,wBAGA,oDACA,sCAGA,SAIA,cACA,qBACA,sCACA,GAIA,WASA,eACA,mBACA,0DAEA,WACA,gDAKA,0DACA,iDAIA,mBACA,SACA,0CACA,2BACA,wCAAuD,IACvD,gBAIA,UACA,mCAIA,mBACA,iCAGA,iBAeA,GAXA,UAGA,kBACA,kBACA,gBAGA,eAKI,CASJ,GARA,eAGA,GACA,4BAIA,EACA,SAIA,uBACA,2BACA,kBACA,GAAK,YAGL,IACA,KACA,WACA,CAAK,SAGL,KACA,QAIA,OACA,CACA,MAlCA,qBAqCA,oBACA,cACA,IAGA,IAIA,KAGA,GACA,kBAKA,SAGA,QAGA,qBAGA,yBAGA,IACA,EA7lBA,gBAOA,IALA,YACA,aACA,cAGA,YACA,eACA,QACA,mDAKA,KACA,WACA,uBACA,aACA,KACA,CAKA,YACA,WACG,CAGH,YACA,oCACA,IACA,KACA,CACA,IACA,IAEA,CAGA,MACA,CAKA,KAIA,OAHA,UACA,aAEA,IAEA,CAwiBA,UAIA,GACA,oCACA,kCACA,0CAIA,EA9iBA,kBACA,cACA,KAGA,sBAGA,QACA,sBACA,mCAOA,IAHA,YAGA,GAcA,GAZA,sBACA,2BAIA,qBACA,8BAGA,IACA,YAKA,WAEA,SAGK,mBAML,KAHA,yBAIA,WAIA,IADA,gBACA,SAGA,iBACA,cACA,EAGA,MACA,QAGU,WACV,OACA,iBAEA,KACA,CAMA,UAGA,eACA,YAEA,IACA,MACA,CAAQ,SACR,OACA,oBACA,2CAEA,CAGA,CAIA,OAAU,uBACV,CAgdA,UAGA,GAGA,gBACA,0CAEA,sBAEA,iCAEA,cAKA,yBACA,cAGM,QACN,iBAIA,UACA,SAEA,IADA,cAMA,KACA,OACA,UACA,MACA,OAMA,WACA,uBAGA,EACA,yBAEA,wBAIA,gBACA,SAEA,GACA,sCACA,aAIA,oBAEA,IACA,kCAGA,UACA,6BAGA,CAEA,QACA,EAEA,wBACA,0BACA,EAEA,wBACA,iCACA,IAGA,qCACA,uBAUA,OAPA,OACA,OACA,IACA,UAIA,iBACA,MACA,OACA,WACA,OACA,WACG,uBACH,CACA,IAEA,6BACA,MACA,mBACA,mCACA,+BAGA,IAGA,2BACA,eACA,MAGA,WACA,kBACA,SACA,SACA,UAKA,YACA,4BAEA,uBACA,mBACA,GAEA,EAGA,aACA,oBACA,MAyBA,OAvBA,UACA,OACA,mBAIA,6CAEA,oBACA,wBAGA,kBAGA,IAFA,WAEA,qBACA,sBAGA,QACA,IAAK,cAGL,IACA,EAEA,sBACA,YACA,uBACA,iCACA,IAGA,sBACA,cACA,eAEA,SACA,aAGA,WAEA,GACA,EAEA,iBACA,WAEA,8BACA,mCACA,GACA,EAEA,mBAIA,OAHA,4CACA,oCACA,IACA,IACA,IAIA,kCACA,gCACA,EACA,mCACA,kEACA,EAKA,8BACA,IACA,2BACA,CAAG,UACH,EAEA,QAGA,MAIA,UAEA,wBAEA,oCACA,eAEA,6BACA,QAGA,8BACA,OACA,mBACA,MACA,UAWA,GATA,OACA,OACA,MACA,QACA,WACA,YAIA,YACA,qBACA,oBAmBA,SAdA,gCACA,+BAQA,uCACA,wCAIA,EACA,2BAIA,cACA,kBACA,IACA,aACA,gCACA,0BAEA,YACA,UACS,YAKT,2BACA,aAEA,EAGA,SACA,cAIA,EACA,uBACA,aAKA,mCACA,iCACA,CAAY,mBACZ,CAAY,qBACZ,2BAIA,CACA,EAGA,aACA,wCAKA,cACA,YAEA,gCAGA,kBAMA,yBACA,GACA,GAEA,GAEA,EAIA,aAEA,IAGA,kCACA,CAAM,SAGN,KACA,OAEA,CACA,EAEA,iBACA,GACA,GAEA,EAGA,IAMA,6BACA,gBACA,qBAEA,IAGA,aACA,SACA,oGAGA,UACA,kCAEA,YACA,0BAEA,OADA,gBACA,CACA,KAKA,2CACA,cACA,YAEA,gBACA,aAEA,IAGA,sCAIA,QADA,gCAEA,OACA,mBACA,gBACA,wBACA,MAAc,oCACd,8BACA,WACA,OACA,GACA,kCAEA,GAGA,wBACA,EACA,iBACA,GACA,GAEA,EAGA,IAKA,IAqGA,GArGA,MACA,uBAGA,aACA,iBACA,yBACA,wCAEA,OADA,WACA,CACA,IAIA,8CAEA,UACA,gCACA,MACA,0BAEA,KADA,mBACA,8CACA,yBAIA,+BA8DA,OA3DA,qCACA,kBACA,gBAGA,EACA,8BACI,cACJ,+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","sources":["webpack://app/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://app/./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack://app/./node_modules/@tarekraafat/autocomplete.js/dist/autoComplete.min.js","webpack://app/./node_modules/@zeitiger/appendaround/appendAround.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/abide_form_validator_fixer.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/append_redirect_url_to_modals.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/callout.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/form_attachments.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/gallery.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/input_autojump.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/responsive_horizontal_tabs.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/security/selfxss_warning.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/sw/a2hs.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/sw/loader.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/sw/push-permissions.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/vendor/modernizr.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/vendor/tribute.js","webpack://app/./node_modules/dayjs/dayjs.min.js","webpack://app/./node_modules/jquery/dist/jquery.js","webpack://app/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://app/./node_modules/regenerator-runtime/runtime.js","webpack://app/./node_modules/select/src/select.js","webpack://app/./node_modules/svg4everybody/dist/svg4everybody.js","webpack://app/./node_modules/tailwindcss/defaultTheme.js","webpack://app/./node_modules/tailwindcss/lib/public/default-theme.js","webpack://app/./node_modules/tailwindcss/lib/util/cloneDeep.js","webpack://app/./node_modules/tailwindcss/stubs/config.full.js","webpack://app/../../src/contrib/microevent.ts","webpack://app/../../node_modules/@orchidjs/unicode-variants/dist/esm/index.js","webpack://app/../../node_modules/@orchidjs/unicode-variants/dist/esm/regex.js","webpack://app/../../node_modules/@orchidjs/unicode-variants/dist/esm/strings.js","webpack://app/../../node_modules/@orchidjs/sifter/dist/esm/utils.js","webpack://app/../../node_modules/@orchidjs/sifter/dist/esm/sifter.js","webpack://app/../../node_modules/@orchidjs/sifter/lib/utils.ts","webpack://app/../../src/vanilla.ts","webpack://app/../../src/contrib/highlight.ts","webpack://app/../../src/constants.ts","webpack://app/../../src/defaults.ts","webpack://app/../../src/utils.ts","webpack://app/../../src/getSettings.ts","webpack://app/../../src/tom-select.ts","webpack://app/../../src/contrib/microplugin.ts","webpack://app/../../src/tom-select.popular.ts","webpack://app/../../src/plugins/caret_position/plugin.ts","webpack://app/../../src/plugins/dropdown_input/plugin.ts","webpack://app/../../src/plugins/no_backspace_delete/plugin.ts","webpack://app/../../src/plugins/remove_button/plugin.ts","webpack://app/../../src/plugins/restore_on_backspace/plugin.ts","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/images/ sync ^\\.\\/.*$","webpack://app/./node_modules/core-js/internals/a-callable.js","webpack://app/./node_modules/core-js/internals/an-object.js","webpack://app/./node_modules/core-js/internals/array-includes.js","webpack://app/./node_modules/core-js/internals/array-slice.js","webpack://app/./node_modules/core-js/internals/classof-raw.js","webpack://app/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://app/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://app/./node_modules/core-js/internals/create-property-descriptor.js","webpack://app/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://app/./node_modules/core-js/internals/define-built-in.js","webpack://app/./node_modules/core-js/internals/define-global-property.js","webpack://app/./node_modules/core-js/internals/descriptors.js","webpack://app/./node_modules/core-js/internals/document-all.js","webpack://app/./node_modules/core-js/internals/document-create-element.js","webpack://app/./node_modules/core-js/internals/engine-is-bun.js","webpack://app/./node_modules/core-js/internals/engine-is-ios.js","webpack://app/./node_modules/core-js/internals/engine-is-node.js","webpack://app/./node_modules/core-js/internals/engine-user-agent.js","webpack://app/./node_modules/core-js/internals/engine-v8-version.js","webpack://app/./node_modules/core-js/internals/enum-bug-keys.js","webpack://app/./node_modules/core-js/internals/export.js","webpack://app/./node_modules/core-js/internals/fails.js","webpack://app/./node_modules/core-js/internals/function-apply.js","webpack://app/./node_modules/core-js/internals/function-bind-context.js","webpack://app/./node_modules/core-js/internals/function-bind-native.js","webpack://app/./node_modules/core-js/internals/function-call.js","webpack://app/./node_modules/core-js/internals/function-name.js","webpack://app/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://app/./node_modules/core-js/internals/function-uncurry-this.js","webpack://app/./node_modules/core-js/internals/get-built-in.js","webpack://app/./node_modules/core-js/internals/get-method.js","webpack://app/./node_modules/core-js/internals/global.js","webpack://app/./node_modules/core-js/internals/has-own-property.js","webpack://app/./node_modules/core-js/internals/hidden-keys.js","webpack://app/./node_modules/core-js/internals/html.js","webpack://app/./node_modules/core-js/internals/ie8-dom-define.js","webpack://app/./node_modules/core-js/internals/indexed-object.js","webpack://app/./node_modules/core-js/internals/inspect-source.js","webpack://app/./node_modules/core-js/internals/internal-state.js","webpack://app/./node_modules/core-js/internals/is-callable.js","webpack://app/./node_modules/core-js/internals/is-forced.js","webpack://app/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://app/./node_modules/core-js/internals/is-object.js","webpack://app/./node_modules/core-js/internals/is-pure.js","webpack://app/./node_modules/core-js/internals/is-symbol.js","webpack://app/./node_modules/core-js/internals/length-of-array-like.js","webpack://app/./node_modules/core-js/internals/make-built-in.js","webpack://app/./node_modules/core-js/internals/math-trunc.js","webpack://app/./node_modules/core-js/internals/object-define-property.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://app/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://app/./node_modules/core-js/internals/object-keys-internal.js","webpack://app/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://app/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://app/./node_modules/core-js/internals/own-keys.js","webpack://app/./node_modules/core-js/internals/regexp-flags.js","webpack://app/./node_modules/core-js/internals/require-object-coercible.js","webpack://app/./node_modules/core-js/internals/schedulers-fix.js","webpack://app/./node_modules/core-js/internals/shared-key.js","webpack://app/./node_modules/core-js/internals/shared-store.js","webpack://app/./node_modules/core-js/internals/shared.js","webpack://app/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://app/./node_modules/core-js/internals/task.js","webpack://app/./node_modules/core-js/internals/to-absolute-index.js","webpack://app/./node_modules/core-js/internals/to-indexed-object.js","webpack://app/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://app/./node_modules/core-js/internals/to-length.js","webpack://app/./node_modules/core-js/internals/to-object.js","webpack://app/./node_modules/core-js/internals/to-primitive.js","webpack://app/./node_modules/core-js/internals/to-property-key.js","webpack://app/./node_modules/core-js/internals/try-to-string.js","webpack://app/./node_modules/core-js/internals/uid.js","webpack://app/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://app/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://app/./node_modules/core-js/internals/validate-arguments-length.js","webpack://app/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://app/./node_modules/core-js/internals/well-known-symbol.js","webpack://app/./node_modules/core-js/modules/es.regexp.flags.js","webpack://app/./node_modules/core-js/modules/web.clear-immediate.js","webpack://app/./node_modules/core-js/modules/web.immediate.js","webpack://app/./node_modules/core-js/modules/web.set-immediate.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/compat get default export","webpack://app/webpack/runtime/define property getters","webpack://app/webpack/runtime/global","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/node module decorator","webpack://app/webpack/runtime/publicPath","webpack://app/../../js/foundation.core.utils.js","webpack://app/../../js/foundation.util.mediaQuery.js","webpack://app/../../js/foundation.core.js","webpack://app/../../js/foundation.util.box.js","webpack://app/../../js/foundation.util.imageLoader.js","webpack://app/../../js/foundation.util.keyboard.js","webpack://app/../../js/foundation.util.motion.js","webpack://app/../../js/foundation.util.nest.js","webpack://app/../../js/foundation.util.timer.js","webpack://app/../../js/foundation.util.touch.js","webpack://app/../../js/foundation.util.triggers.js","webpack://app/../../js/foundation.core.plugin.js","webpack://app/../../js/foundation.abide.js","webpack://app/../../js/foundation.accordion.js","webpack://app/../../js/foundation.accordionMenu.js","webpack://app/../../js/foundation.drilldown.js","webpack://app/../../js/foundation.positionable.js","webpack://app/../../js/foundation.dropdown.js","webpack://app/../../js/foundation.dropdownMenu.js","webpack://app/../../js/foundation.equalizer.js","webpack://app/../../js/foundation.interchange.js","webpack://app/../../js/foundation.smoothScroll.js","webpack://app/../../js/foundation.magellan.js","webpack://app/../../js/foundation.offcanvas.js","webpack://app/../../js/foundation.orbit.js","webpack://app/../../js/foundation.responsiveMenu.js","webpack://app/../../js/foundation.responsiveToggle.js","webpack://app/../../js/foundation.reveal.js","webpack://app/../../js/foundation.slider.js","webpack://app/../../js/foundation.sticky.js","webpack://app/../../js/foundation.tabs.js","webpack://app/../../js/foundation.toggler.js","webpack://app/../../js/foundation.tooltip.js","webpack://app/../../js/foundation.responsiveAccordionTabs.js","webpack://app/../../js/entries/foundation.js","webpack://app/./node_modules/morphdom/dist/morphdom-esm.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/input_tags.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/input_hashtags.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/input_mentions.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/autocomplete.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/icon.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/input_multiple_mentions.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/history.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/clipboard.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/append_elements.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/password_toggler.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/user_registrations.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/account_form.js","webpack://app/./node_modules/d3-selection/src/selector.js","webpack://app/./node_modules/d3-selection/src/selectorAll.js","webpack://app/./node_modules/d3-selection/src/selection/selectAll.js","webpack://app/./node_modules/d3-selection/src/array.js","webpack://app/./node_modules/d3-selection/src/matcher.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/form_remote.js","webpack://app/./node_modules/d3-selection/src/selection/selectChild.js","webpack://app/./node_modules/d3-selection/src/selection/selectChildren.js","webpack://app/./node_modules/d3-selection/src/selection/sparse.js","webpack://app/./node_modules/d3-selection/src/selection/enter.js","webpack://app/./node_modules/d3-selection/src/selection/data.js","webpack://app/./node_modules/d3-selection/src/selection/sort.js","webpack://app/./node_modules/d3-selection/src/namespaces.js","webpack://app/./node_modules/d3-selection/src/namespace.js","webpack://app/./node_modules/d3-selection/src/selection/attr.js","webpack://app/./node_modules/d3-selection/src/window.js","webpack://app/./node_modules/d3-selection/src/selection/style.js","webpack://app/./node_modules/d3-selection/src/selection/property.js","webpack://app/./node_modules/d3-selection/src/selection/classed.js","webpack://app/./node_modules/d3-selection/src/selection/text.js","webpack://app/./node_modules/d3-selection/src/selection/html.js","webpack://app/./node_modules/d3-selection/src/selection/raise.js","webpack://app/./node_modules/d3-selection/src/selection/lower.js","webpack://app/./node_modules/d3-selection/src/creator.js","webpack://app/./node_modules/d3-selection/src/selection/insert.js","webpack://app/./node_modules/d3-selection/src/selection/remove.js","webpack://app/./node_modules/d3-selection/src/selection/clone.js","webpack://app/./node_modules/d3-selection/src/selection/on.js","webpack://app/./node_modules/d3-selection/src/selection/dispatch.js","webpack://app/./node_modules/d3-selection/src/selection/iterator.js","webpack://app/./node_modules/d3-selection/src/selection/index.js","webpack://app/./node_modules/d3-selection/src/selection/select.js","webpack://app/./node_modules/d3-selection/src/selection/filter.js","webpack://app/./node_modules/d3-selection/src/constant.js","webpack://app/./node_modules/d3-selection/src/selection/exit.js","webpack://app/./node_modules/d3-selection/src/selection/join.js","webpack://app/./node_modules/d3-selection/src/selection/merge.js","webpack://app/./node_modules/d3-selection/src/selection/order.js","webpack://app/./node_modules/d3-selection/src/selection/call.js","webpack://app/./node_modules/d3-selection/src/selection/nodes.js","webpack://app/./node_modules/d3-selection/src/selection/node.js","webpack://app/./node_modules/d3-selection/src/selection/size.js","webpack://app/./node_modules/d3-selection/src/selection/empty.js","webpack://app/./node_modules/d3-selection/src/selection/each.js","webpack://app/./node_modules/d3-selection/src/selection/append.js","webpack://app/./node_modules/d3-selection/src/selection/datum.js","webpack://app/./node_modules/d3-selection/src/select.js","webpack://app/./node_modules/d3-array/src/ascending.js","webpack://app/./node_modules/d3-array/src/max.js","webpack://app/./node_modules/d3-array/src/descending.js","webpack://app/./node_modules/d3-array/src/bisector.js","webpack://app/./node_modules/d3-array/src/ticks.js","webpack://app/./node_modules/d3-time/src/duration.js","webpack://app/./node_modules/d3-time/src/interval.js","webpack://app/./node_modules/d3-time/src/millisecond.js","webpack://app/./node_modules/d3-time/src/second.js","webpack://app/./node_modules/d3-time/src/minute.js","webpack://app/./node_modules/d3-time/src/hour.js","webpack://app/./node_modules/d3-time/src/day.js","webpack://app/./node_modules/d3-time/src/week.js","webpack://app/./node_modules/d3-time/src/month.js","webpack://app/./node_modules/d3-time/src/year.js","webpack://app/./node_modules/d3-time/src/ticks.js","webpack://app/./node_modules/d3-time-format/src/locale.js","webpack://app/./node_modules/d3-time-format/src/defaultLocale.js","webpack://app/./node_modules/d3-array/src/bisect.js","webpack://app/./node_modules/d3-array/src/number.js","webpack://app/./node_modules/d3-color/src/define.js","webpack://app/./node_modules/d3-color/src/color.js","webpack://app/./node_modules/d3-interpolate/src/basis.js","webpack://app/./node_modules/d3-interpolate/src/constant.js","webpack://app/./node_modules/d3-interpolate/src/color.js","webpack://app/./node_modules/d3-interpolate/src/rgb.js","webpack://app/./node_modules/d3-interpolate/src/basisClosed.js","webpack://app/./node_modules/d3-interpolate/src/array.js","webpack://app/./node_modules/d3-interpolate/src/date.js","webpack://app/./node_modules/d3-interpolate/src/number.js","webpack://app/./node_modules/d3-interpolate/src/object.js","webpack://app/./node_modules/d3-interpolate/src/string.js","webpack://app/./node_modules/d3-interpolate/src/numberArray.js","webpack://app/./node_modules/d3-interpolate/src/value.js","webpack://app/./node_modules/d3-interpolate/src/round.js","webpack://app/./node_modules/d3-scale/src/number.js","webpack://app/./node_modules/d3-scale/src/continuous.js","webpack://app/./node_modules/d3-scale/src/constant.js","webpack://app/./node_modules/d3-scale/src/init.js","webpack://app/./node_modules/d3-scale/src/time.js","webpack://app/./node_modules/d3-scale/src/nice.js","webpack://app/./node_modules/d3-format/src/formatSpecifier.js","webpack://app/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://app/./node_modules/d3-format/src/formatDecimal.js","webpack://app/./node_modules/d3-format/src/exponent.js","webpack://app/./node_modules/d3-format/src/formatRounded.js","webpack://app/./node_modules/d3-format/src/formatTypes.js","webpack://app/./node_modules/d3-format/src/identity.js","webpack://app/./node_modules/d3-format/src/locale.js","webpack://app/./node_modules/d3-format/src/defaultLocale.js","webpack://app/./node_modules/d3-format/src/formatGroup.js","webpack://app/./node_modules/d3-format/src/formatNumerals.js","webpack://app/./node_modules/d3-format/src/formatTrim.js","webpack://app/./node_modules/d3-scale/src/tickFormat.js","webpack://app/./node_modules/d3-format/src/precisionPrefix.js","webpack://app/./node_modules/d3-format/src/precisionRound.js","webpack://app/./node_modules/d3-format/src/precisionFixed.js","webpack://app/./node_modules/d3-scale/src/linear.js","webpack://app/./node_modules/d3-axis/src/identity.js","webpack://app/./node_modules/d3-axis/src/axis.js","webpack://app/./node_modules/d3-time-format/src/isoFormat.js","webpack://app/./node_modules/d3-time-format/src/isoParse.js","webpack://app/./node_modules/d3-shape/src/array.js","webpack://app/./node_modules/d3-shape/src/constant.js","webpack://app/./node_modules/d3-shape/src/curve/linear.js","webpack://app/./node_modules/d3-path/src/path.js","webpack://app/./node_modules/d3-shape/src/path.js","webpack://app/./node_modules/d3-shape/src/point.js","webpack://app/./node_modules/d3-shape/src/line.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/vizzs/areachart.js","webpack://app/./node_modules/d3-array/src/min.js","webpack://app/./node_modules/d3-shape/src/area.js","webpack://app/./node_modules/d3-array/src/extent.js","webpack://app/./node_modules/d3-selection/src/pointer.js","webpack://app/./node_modules/d3-selection/src/sourceEvent.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/vizzs/index.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/session_timeouter.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/confirm.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/results_listing.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/impersonation.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/direct_uploads/uploader.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/direct_uploads/upload_utility.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/utilities/text.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/direct_uploads/upload_modal.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/direct_uploads/upload_field.js","webpack://app/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/data_consent/consent_manager.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/data_consent/index.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/configuration.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/external_link.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/input_character_counter.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/form_validator.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/check_boxes_tree.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/form_filter.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/delayed.js","webpack://app/../../node_modules/emojibase/esm/index.js","webpack://app/../src/util.ts","webpack://app/../src/data/DataStore.ts","webpack://app/../src/rules.ts","webpack://app/../src/data/InMemoryStore.ts","webpack://app/../src/data/emojiData.ts","webpack://app/../src/focusTrap.ts","webpack://app/../src/themes.ts","webpack://app/../src/views/view.ts","webpack://app/../src/icons/index.ts","webpack://app/../src/icons/clock-solid.svg","webpack://app/../src/icons/flag-solid.svg","webpack://app/../src/icons/face-frown-open-solid.svg","webpack://app/../src/icons/gamepad-solid.svg","webpack://app/../src/icons/lightbulb-solid.svg","webpack://app/../src/icons/mug-saucer-solid.svg","webpack://app/../src/icons/plane-solid.svg","webpack://app/../src/icons/robot-solid.svg","webpack://app/../src/icons/face-sad-tear-solid.svg","webpack://app/../src/icons/magnifying-glass-solid.svg","webpack://app/../src/icons/face-grin-solid.svg","webpack://app/../src/icons/icons-solid.svg","webpack://app/../src/icons/tree-solid.svg","webpack://app/../src/icons/user-group-solid.svg","webpack://app/../src/icons/triangle-exclamation-solid.svg","webpack://app/../src/icons/xmark-solid.svg","webpack://app/../src/Template.ts","webpack://app/../src/views/Image.ts","webpack://app/../src/renderers/renderer.ts","webpack://app/../src/renderers/native.ts","webpack://app/../src/i18n/lang-en.ts","webpack://app/../src/data/IndexedDbStore.ts","webpack://app/../src/webStorageShim.ts","webpack://app/../src/recents/RecentsProvider.ts","webpack://app/../src/recents/WebStorageProvider.ts","webpack://app/../src/recents/LocalStorageProvider.ts","webpack://app/../src/options.ts","webpack://app/../src/events.ts","webpack://app/../src/globalConfig.ts","webpack://app/../src/AppEvents.ts","webpack://app/../src/ExternalEvents.ts","webpack://app/../src/views/BaseEmojiCategory.ts","webpack://app/../src/views/Emoji.template.ts","webpack://app/../src/views/Emoji.ts","webpack://app/../src/focusGrid.ts","webpack://app/../src/views/EmojiContainer.template.ts","webpack://app/../src/views/EmojiContainer.ts","webpack://app/../src/views/EmojiCategory.template.ts","webpack://app/../src/views/EmojiCategory.ts","webpack://app/../src/views/RecentEmojiContainer.ts","webpack://app/../src/views/RecentEmojiCategory.template.ts","webpack://app/../src/views/RecentEmojiCategory.ts","webpack://app/../src/views/CustomEmojiCategory.template.ts","webpack://app/../src/views/CustomEmojiCategory.ts","webpack://app/../src/LazyLoader.ts","webpack://app/../src/views/EmojiArea.ts","webpack://app/../src/views/ErrorMessage.template.ts","webpack://app/../src/views/ErrorMessage.ts","webpack://app/../src/views/DataError.template.ts","webpack://app/../src/views/DataError.ts","webpack://app/../src/views/Preview.ts","webpack://app/../src/views/Search.template.ts","webpack://app/../src/views/Search.ts","webpack://app/../src/views/VariantPopup.template.ts","webpack://app/../src/views/VariantPopup.ts","webpack://app/../src/views/CategoryTab.template.ts","webpack://app/../src/views/CategoryTab.ts","webpack://app/../src/views/CategoryTabs.template.ts","webpack://app/../src/views/CategoryTabs.ts","webpack://app/../src/emojiSupport.ts","webpack://app/../src/views/EmojiPicker.template.ts","webpack://app/../src/views/EmojiPicker.ts","webpack://app/../src/viewFactory.ts","webpack://app/../src/i18n/bundle.ts","webpack://app/../src/injectStyles.ts","webpack://app/../../node_modules/style-inject/dist/style-inject.es.js","webpack://app/../src/createPicker.ts","webpack://app/../src/i18n/lang-sv.ts","webpack://app/../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack://app/../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack://app/../src/positioning.ts","webpack://app/../src/icons/close.svg","webpack://app/../src/popupPicker.ts","webpack://app/../src/index.ts","webpack://app/../src/appendSkinToneIndex.ts","webpack://app/../src/constants.ts","webpack://app/../src/stripHexcode.ts","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/i18n.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/input_emoji.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/focus_guard.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/notifications.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/remote_modal.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/tooltips.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/remote_tooltips.js","webpack://app/./node_modules/a11y-accordion-component/dist/a11y-accordion-component.es.js","webpack://app/./node_modules/a11y-dropdown-component/dist/a11y-dropdown-component.es.js","webpack://app/./node_modules/a11y-dialog-component/dist/a11y-dialog-component.esm.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/a11y.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/change_report_form_behavior.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/index.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/external_domain_warning.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/back_to_list.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/scroll_to_last_child.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/identity_selector_dialog.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/src/decidim/toggle.js","webpack://app/./vendor/bundle/ruby/3.1.0/bundler/gems/decidim-1151fee5366e/decidim-core/app/packs/entrypoints/decidim_core.js"],"sourcesContent":["/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n","(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n \"use strict\";\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n var sparkMd5 = createCommonjsModule(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })(function(undefined) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n });\n });\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n var FileChecksum = function() {\n createClass(FileChecksum, null, [ {\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n } ]);\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n createClass(FileChecksum, [ {\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function(event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function(event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n } ]);\n return FileChecksum;\n }();\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n var BlobRecord = function() {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", function(event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function(event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobRecord, [ {\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n } ]);\n return BlobRecord;\n }();\n var BlobUpload = function() {\n function BlobUpload(blob) {\n var _this = this;\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", function(event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function(event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobUpload, [ {\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n } ]);\n return BlobUpload;\n }();\n var id = 0;\n var DirectUpload = function() {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n createClass(DirectUpload, [ {\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n FileChecksum.create(this.file, function(error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function(error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function(error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n } ]);\n return DirectUpload;\n }();\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n return object[methodName].apply(object, messages);\n }\n }\n var DirectUploadController = function() {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n createClass(DirectUploadController, [ {\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function(error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n _this.dispatch(\"end\");\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function(event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n } ]);\n return DirectUploadController;\n }();\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n var DirectUploadsController = function() {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function(input) {\n return input.files.length;\n });\n }\n createClass(DirectUploadsController, [ {\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var controllers = this.createDirectUploadControllers();\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n if (controller) {\n controller.start(function(error) {\n if (error) {\n callback(error);\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n _this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function(input) {\n toArray$1(input.files).forEach(function(file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n } ]);\n return DirectUploadsController;\n }();\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n var target = event.target;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function(error) {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n var _button = button, disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n","var e,t;e=this,t=function(){\"use strict\";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?e(Object(i),!0).forEach((function(e){r(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function n(e){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(e)}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function o(e,t){if(e){if(\"string\"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u=function(e){return\"string\"==typeof e?document.querySelector(e):e()},a=function(e,t){var n=\"string\"==typeof e?document.createElement(e):e;for(var r in t){var i=t[r];if(\"inside\"===r)i.append(n);else if(\"dest\"===r)u(i[0]).insertAdjacentElement(i[1],n);else if(\"around\"===r){var o=i;o.parentNode.insertBefore(n,o),n.append(o),null!=o.getAttribute(\"autofocus\")&&o.focus()}else r in n?n[r]=i:n.setAttribute(r,i)}return n},c=function(e,t){return e=String(e).toLowerCase(),t?e.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g,\"\").normalize(\"NFC\"):e},l=function(e,n){return a(\"mark\",t({innerHTML:e},\"string\"==typeof n&&{class:n})).outerHTML},f=function(e,t){t.input.dispatchEvent(new CustomEvent(e,{bubbles:!0,detail:t.feedback,cancelable:!0}))},p=function(e,t,n){var r=n||{},i=r.mode,o=r.diacritics,s=r.highlight,u=c(t,o);if(t=String(t),e=c(e,o),\"loose\"===i){var a=(e=e.replace(/ /g,\"\")).length,f=0,p=Array.from(t).map((function(t,n){return f<a&&u[n]===e[f]&&(t=s?l(t,s):t,f++),t})).join(\"\");if(f===a)return p}else{var d=u.indexOf(e);if(~d)return e=t.substring(d,d+e.length),d=s?t.replace(e,l(e,s)):t}},d=function(e,t){return new Promise((function(n,r){var i;return(i=e.data).cache&&i.store?n():new Promise((function(e,n){return\"function\"==typeof i.src?i.src(t).then(e,n):e(i.src)})).then((function(t){try{return e.feedback=i.store=t,f(\"response\",e),n()}catch(e){return r(e)}}),r)}))},h=function(e,t){var n=t.data,r=t.searchEngine,i=[];n.store.forEach((function(s,u){var a=function(n){var o=n?s[n]:s,u=\"function\"==typeof r?r(e,o):p(e,o,{mode:r,diacritics:t.diacritics,highlight:t.resultItem.highlight});if(u){var a={match:u,value:s};n&&(a.key=n),i.push(a)}};if(n.keys){var c,l=function(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,s=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw s}}}}(n.keys);try{for(l.s();!(c=l.n()).done;)a(c.value)}catch(e){l.e(e)}finally{l.f()}}else a()})),n.filter&&(i=n.filter(i));var s=i.slice(0,t.resultsList.maxResults);t.feedback={query:e,matches:i,results:s},f(\"results\",t)},m=\"aria-expanded\",b=\"aria-activedescendant\",y=\"aria-selected\",v=function(e,n){e.feedback.selection=t({index:n},e.feedback.results[n])},g=function(e){e.isOpen||((e.wrapper||e.input).setAttribute(m,!0),e.list.removeAttribute(\"hidden\"),e.isOpen=!0,f(\"open\",e))},w=function(e){e.isOpen&&((e.wrapper||e.input).setAttribute(m,!1),e.input.setAttribute(b,\"\"),e.list.setAttribute(\"hidden\",\"\"),e.isOpen=!1,f(\"close\",e))},O=function(e,t){var n=t.resultItem,r=t.list.getElementsByTagName(n.tag),o=!!n.selected&&n.selected.split(\" \");if(t.isOpen&&r.length){var s,u,a=t.cursor;e>=r.length&&(e=0),e<0&&(e=r.length-1),t.cursor=e,a>-1&&(r[a].removeAttribute(y),o&&(u=r[a].classList).remove.apply(u,i(o))),r[e].setAttribute(y,!0),o&&(s=r[e].classList).add.apply(s,i(o)),t.input.setAttribute(b,r[t.cursor].id),t.list.scrollTop=r[e].offsetTop-t.list.clientHeight+r[e].clientHeight+5,t.feedback.cursor=t.cursor,v(t,e),f(\"navigate\",t)}},A=function(e){O(e.cursor+1,e)},k=function(e){O(e.cursor-1,e)},L=function(e,t,n){(n=n>=0?n:e.cursor)<0||(e.feedback.event=t,v(e,n),f(\"selection\",e),w(e))};function j(e,n){var r=this;return new Promise((function(i,o){var s,u;return s=n||((u=e.input)instanceof HTMLInputElement||u instanceof HTMLTextAreaElement?u.value:u.innerHTML),function(e,t,n){return t?t(e):e.length>=n}(s=e.query?e.query(s):s,e.trigger,e.threshold)?d(e,s).then((function(n){try{return e.feedback instanceof Error?i():(h(s,e),e.resultsList&&function(e){var n=e.resultsList,r=e.list,i=e.resultItem,o=e.feedback,s=o.matches,u=o.results;if(e.cursor=-1,r.innerHTML=\"\",s.length||n.noResults){var c=new DocumentFragment;u.forEach((function(e,n){var r=a(i.tag,t({id:\"\".concat(i.id,\"_\").concat(n),role:\"option\",innerHTML:e.match,inside:c},i.class&&{class:i.class}));i.element&&i.element(r,e)})),r.append(c),n.element&&n.element(r,o),g(e)}else w(e)}(e),c.call(r))}catch(e){return o(e)}}),o):(w(e),c.call(r));function c(){return i()}}))}var S=function(e,t){for(var n in e)for(var r in e[n])t(n,r)},T=function(e){var n,r,i,o=e.events,s=(n=function(){return j(e)},r=e.debounce,function(){clearTimeout(i),i=setTimeout((function(){return n()}),r)}),u=e.events=t({input:t({},o&&o.input)},e.resultsList&&{list:o?t({},o.list):{}}),a={input:{input:function(){s()},keydown:function(t){!function(e,t){switch(e.keyCode){case 40:case 38:e.preventDefault(),40===e.keyCode?A(t):k(t);break;case 13:t.submit||e.preventDefault(),t.cursor>=0&&L(t,e);break;case 9:t.resultsList.tabSelect&&t.cursor>=0&&L(t,e);break;case 27:t.input.value=\"\",w(t)}}(t,e)},blur:function(){w(e)}},list:{mousedown:function(e){e.preventDefault()},click:function(t){!function(e,t){var n=t.resultItem.tag.toUpperCase(),r=Array.from(t.list.querySelectorAll(n)),i=e.target.closest(n);i&&i.nodeName===n&&L(t,e,r.indexOf(i))}(t,e)}}};S(a,(function(t,n){(e.resultsList||\"input\"===n)&&(u[t][n]||(u[t][n]=a[t][n]))})),S(u,(function(t,n){e[t].addEventListener(n,u[t][n])}))};function E(e){var n=this;return new Promise((function(r,i){var o,s,u;if(o=e.placeHolder,u={role:\"combobox\",\"aria-owns\":(s=e.resultsList).id,\"aria-haspopup\":!0,\"aria-expanded\":!1},a(e.input,t(t({\"aria-controls\":s.id,\"aria-autocomplete\":\"both\"},o&&{placeholder:o}),!e.wrapper&&t({},u))),e.wrapper&&(e.wrapper=a(\"div\",t({around:e.input,class:e.name+\"_wrapper\"},u))),s&&(e.list=a(s.tag,t({dest:[s.destination,s.position],id:s.id,role:\"listbox\",hidden:\"hidden\"},s.class&&{class:s.class}))),T(e),e.data.cache)return d(e).then((function(e){try{return c.call(n)}catch(e){return i(e)}}),i);function c(){return f(\"init\",e),r()}return c.call(n)}))}function x(e){var t=e.prototype;t.init=function(){E(this)},t.start=function(e){j(this,e)},t.unInit=function(){if(this.wrapper){var e=this.wrapper.parentNode;e.insertBefore(this.input,this.wrapper),e.removeChild(this.wrapper)}var t;S((t=this).events,(function(e,n){t[e].removeEventListener(n,t.events[e][n])}))},t.open=function(){g(this)},t.close=function(){w(this)},t.goTo=function(e){O(e,this)},t.next=function(){A(this)},t.previous=function(){k(this)},t.select=function(e){L(this,null,e)},t.search=function(e,t,n){return p(e,t,n)}}return function e(t){this.options=t,this.id=e.instances=(e.instances||0)+1,this.name=\"autoComplete\",this.wrapper=1,this.threshold=1,this.debounce=0,this.resultsList={position:\"afterend\",tag:\"ul\",maxResults:5},this.resultItem={tag:\"li\"},function(e){var t=e.name,r=e.options,i=e.resultsList,o=e.resultItem;for(var s in r)if(\"object\"===n(r[s]))for(var a in e[s]||(e[s]={}),r[s])e[s][a]=r[s][a];else e[s]=r[s];e.selector=e.selector||\"#\"+t,i.destination=i.destination||e.selector,i.id=i.id||t+\"_list_\"+e.id,o.id=o.id||t+\"_result\",e.input=u(e.selector)}(this),x.call(this,e),E(this)}},\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).autoComplete=t();\n","/*! appendAround markup pattern. [c]2012, @scottjehl, Filament Group, Inc. MIT/GPL \nhow-to:\n\t1. Insert potential element containers throughout the DOM\n\t2. give each container a data-set attribute with a value that matches all other containers' values\n\t3. Place your appendAround content in one of the potential containers\n\t4. Call appendAround() on that element when the DOM is ready\n*/\n(function( $ ){\n\t$.fn.appendAround = function(){\n\t return this.each(function(){\n \n\t var $self = $( this ),\n\t att = \"data-set\",\n\t $parent = $self.parent(), \n\t parent = $parent[ 0 ],\n\t attval = $parent.attr( att ),\n\t $set = $( \"[\"+ att +\"='\" + attval + \"']\" );\n\n\t\tfunction isHidden( elem ){\n\t\t\treturn $(elem).css( \"display\" ) === \"none\";\n\t\t}\n\n\t\tfunction appendToVisibleContainer(){\n\t\t\tif( isHidden( parent ) ){\n\t\t\t\tvar found = 0;\n\t\t\t\t$set.each(function(){\n\t\t\t\t\tif( !isHidden( this ) && !found ){\n\t\t\t\t\t\t$self.appendTo( this );\n\t\t\t\t\t\tfound++;\n\t\t\t\t\t\tparent = this;\n\t\t\t\t\t}\n\t\t\t\t});\n\t \t}\n\t }\n \n\t appendToVisibleContainer();\n \n\t $(window).bind( \"resize\", appendToVisibleContainer );\n \n\t });\n\t};\n}( jQuery ));\n","/**\n * This script modifies the behavior of Abide form validation to address the issue of form validation errors\n * appearing prematurely in input fields.\n *\n * The primary goal is to hide error messages until the input field loses focus.\n */\n\nclass AbideFormValidatorFixer {\n initialize() {\n const forms = document.querySelectorAll(\"main [data-live-validate='true']\");\n\n forms.forEach((form) => {\n if (this.isElementVisible(form)) {\n this.setupForm(form);\n }\n });\n }\n\n isElementVisible(element) {\n return element.offsetParent !== null && getComputedStyle(element).display !== \"none\";\n }\n\n setupForm(form) {\n const inputs = form.querySelectorAll(\"input\");\n\n inputs.forEach((input) => {\n const errorElement = input.closest(\"label\")?.querySelector(\".form-error\") || input.parentElement.querySelector(\".form-error\");\n if (!errorElement) {\n return;\n }\n form.removeAttribute(\"data-live-validate\");\n input.addEventListener(\"input\", this.hideErrorElement.bind(this, errorElement));\n });\n }\n\n hideErrorElement(errorElement) {\n errorElement.classList.remove(\"is-visible\");\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const validatorFixer = new AbideFormValidatorFixer();\n validatorFixer.initialize();\n});\n","/* eslint-disable multiline-ternary */\n\n/*\n *\n * This is used to make sure users are redirected to\n * the expected URL after sign in.\n *\n * When a button or link trigger a login modal we capture\n * the event and inject the URL where the user should\n * be redirected after sign in (the redirect_url param).\n *\n * The code is injected to any form or link in the modal\n * and when the modal is closed we remove the injected\n * code.\n *\n * In order for this to work the button or link must have\n * a data-open attribute with the ID of the modal to open\n * and a data-redirect-url attribute with the URL to redirect\n * the user. If any of this is missing no code will be\n * injected.\n *\n */\n$(() => {\n const removeUrlParameter = (url, parameter) => {\n const urlParts = url.split(\"?\");\n\n if (urlParts.length >= 2) {\n // Get first part, and remove from array\n const urlBase = urlParts.shift();\n\n // Join it back up\n const queryString = urlParts.join(\"?\");\n\n const prefix = `${encodeURIComponent(parameter)}=`;\n const parts = queryString.split(/[&;]/g);\n\n // Reverse iteration as may be destructive\n for (let index = parts.length - 1; index >= 0; index -= 1) {\n // Idiom for string.startsWith\n if (parts[index].lastIndexOf(prefix, 0) !== -1) {\n parts.splice(index, 1);\n }\n }\n\n if (parts.length === 0) {\n return urlBase;\n }\n\n return `${urlBase}?${parts.join(\"&\")}`;\n }\n\n return url;\n }\n\n $(document).on(\"click.zf.trigger\", (event) => {\n // Try to get the <a> directly or find the closest parent <a>\n const $target = $(event.target).closest(\"a\");\n\n // Check if an <a> was found\n if (!$target) {\n return;\n }\n\n const dialogTarget = `#${$target.data(\"dialog-open\")}`;\n const redirectUrl = $target.data(\"redirectUrl\");\n\n if (!dialogTarget || !redirectUrl) {\n return;\n }\n\n $(\"<input type='hidden' />\").\n attr(\"id\", \"redirect_url\").\n attr(\"name\", \"redirect_url\").\n attr(\"value\", redirectUrl).\n appendTo(`${dialogTarget} form`);\n\n $(`${dialogTarget} a`).attr(\"href\", (index, href) => {\n const querystring = jQuery.param({\"redirect_url\": redirectUrl});\n return href + (href.match(/\\?/) ? \"&\" : \"?\") + querystring;\n });\n });\n\n $(document).on(\"closed.zf.reveal\", (event) => {\n $(\"#redirect_url\", event.target).remove();\n $(\"a\", event.target).attr(\"href\", (index, href) => {\n if (href && href.indexOf(\"redirect_url\") !== -1) {\n return removeUrlParameter(href, \"redirect_url\");\n }\n\n return href;\n });\n });\n});\n","/**\n * Improves the accessibility of the callout messages for screen readers. Not\n * all screen readers would announce the callout alert contents after the page\n * reload without this.\n */\n\n$(() => {\n const $callout = $('.callout[role=\"alert\"]:first');\n if ($callout.length > 0) {\n setTimeout(() => {\n // The content insertion is to try to hint some of the screen readers\n // that the alert content has changed and needs to be announced.\n $callout.attr(\"tabindex\", \"0\").focus().html(`${$callout.html()} `);\n }, 500);\n }\n});\n","$(() => {\n $(\"form .attachments_container\").on(\"closed.zf.callout\", (event) => {\n $(event.target).remove();\n });\n});\n","$(() => {\n $(\".gallery__container\").on(\"closed.zf.callout\", (event) => {\n $(event.target).remove();\n });\n});\n","$(() => {\n const $inputs = $(\"input[data-autojump]\");\n const DELETE_KEY_CODE = 8;\n\n // Initialize\n $inputs.on(\"keydown\", (event) => {\n // Do not do anything if there is selected text\n if (event.target.selectionStart !== event.target.selectionEnd) {\n return;\n }\n\n if (event.originalEvent.key.length === 1 && event.target.dataset.jumpNext) {\n if (\n event.target.value.length ===\n parseInt(event.target.dataset.maxLength, 10)\n ) {\n event.preventDefault();\n setTimeout(() => {\n const next = $(event.target.dataset.jumpNext);\n next.val(event.originalEvent.key);\n next.trigger(\"focus\");\n }, 1);\n }\n } else if (\n event.originalEvent.keyCode === DELETE_KEY_CODE &&\n event.target.dataset.jumpPrev\n ) {\n if (event.target.value.length === 0) {\n event.preventDefault();\n setTimeout(() => {\n const prev = $(event.target.dataset.jumpPrev);\n prev.val(prev.val().slice(0, -1));\n prev.trigger(\"focus\");\n }, 1);\n }\n }\n });\n});\n","$(() => {\n const $responsiveTabBlock = $(\".responsive-tab-block\");\n\n $responsiveTabBlock.click((event) => {\n if (event.target.closest(\".is-active\") !== null) {\n event.preventDefault();\n if (window.innerWidth <= 639) {\n $responsiveTabBlock.toggleClass(\"expanded\");\n }\n }\n });\n});\n","/* eslint-disable no-console, no-process-env, no-undef */\n\n$(() => {\n if (!console) {\n return;\n }\n\n if (process.env.NODE_ENV === \"development\") {\n return;\n }\n\n const allMessages = window.Decidim.config.get(\"messages\");\n if (!allMessages) {\n return;\n }\n const messages = allMessages.selfxssWarning;\n\n console.log(`%c${messages.title}`, \"color:#f00;font-weight:bold;font-size:50px;\");\n console.log(`%c${messages.description}`, \"font-size:24px;\");\n});\n","const visitedPages = JSON.parse(sessionStorage.getItem(\"visitedPages\")) || []\nconst DELAYED_VISITS = 2\nlet deferredPrompt = null\n\nconst shouldCountVisitedPages = () => sessionStorage.getItem(\"userChoice\") !== \"dismissed\" && visitedPages.length < DELAYED_VISITS && !visitedPages.includes(location.pathname)\nconst shouldPrompt = () => {\n // Disable the application install prompt showing constantly.\n if (localStorage.getItem(\"pwaInstallPromptSeen\")) {\n return false\n }\n\n return deferredPrompt && sessionStorage.getItem(\"userChoice\") !== \"dismissed\" && visitedPages.length >= DELAYED_VISITS\n}\n\nwindow.addEventListener(\"beforeinstallprompt\", (event) => {\n event.preventDefault()\n deferredPrompt = event\n\n // allow the user browse through different locations before prompt them anything\n if (shouldCountVisitedPages()) {\n sessionStorage.setItem(\"visitedPages\", JSON.stringify([...visitedPages, location.pathname]))\n }\n});\n\n// to trigger the prompt, it must be a \"user gesture\"\nwindow.addEventListener(\"click\", async (event) => {\n if (shouldPrompt()) {\n event.preventDefault()\n deferredPrompt.prompt()\n\n const { outcome } = await deferredPrompt.userChoice;\n // store the user choice to avoid asking again in the current session\n sessionStorage.setItem(\"userChoice\", outcome)\n sessionStorage.removeItem(\"visitedPages\")\n localStorage.setItem(\"pwaInstallPromptSeen\", true)\n }\n});\n","// check if the browser supports serviceWorker at all\nwindow.addEventListener(\"load\", async () => {\n if (\"serviceWorker\" in navigator) {\n await navigator.serviceWorker.register(\"/sw.js\", { scope: \"/\" });\n\n const mandatoryElements = document.querySelector(\".js-sw-mandatory\");\n // Opera uses Opera for versions <= 12 and OPR for versions > 12\n const isOperaMini =\n ((navigator.userAgent.indexOf(\"OPR\") > -1) || (navigator.userAgent.indexOf(\"Opera\") > -1)) &&\n (navigator.userAgent.indexOf(\"Mini\") > -1);\n\n if (mandatoryElements && isOperaMini) {\n mandatoryElements.classList.add(\"hide\")\n }\n } else {\n console.log(\"Your browser does not support service workers 🤷â€â™€ï¸\");\n }\n});\n","window.addEventListener(\"DOMContentLoaded\", async () => {\n const GRANTED_PERMISSION = \"granted\"\n\n const hideReminder = function() {\n const reminder = document.querySelector(\"#push-notifications-reminder\")\n reminder.classList.add(\"hide\")\n }\n\n const subscribeToNotifications = async (registration) => {\n const permission = await window.Notification.requestPermission();\n\n if (registration && permission === GRANTED_PERMISSION) {\n const vapidElement = document.querySelector(\"#vapidPublicKey\")\n // element could not exist in DOM\n if (vapidElement) {\n const vapidPublicKeyElement = JSON.parse(vapidElement.value)\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: new Uint8Array(vapidPublicKeyElement)\n });\n\n if (subscription) {\n await fetch(\"/notifications_subscriptions\", {\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": document.querySelector(\"meta[name=csrf-token]\")?.content\n },\n method: \"POST\",\n body: JSON.stringify(subscription)\n });\n }\n }\n hideReminder()\n } else {\n throw new Error(\"Permission not granted for Notification\");\n }\n }\n\n const unsubscribeFromNotifications = async (registration) => {\n /* eslint-disable no-shadow */\n const currentSubscription = await registration.pushManager.getSubscription()\n const auth = currentSubscription.toJSON().keys.auth\n await fetch(`/notifications_subscriptions/${auth}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": document.querySelector(\"meta[name=csrf-token]\")?.content\n },\n method: \"DELETE\"\n });\n }\n\n const setToggleState = async (registration, toggle) => {\n const currentSubscription = await registration.pushManager.getSubscription()\n let toggleChecked = false\n\n if (window.Notification.permission === GRANTED_PERMISSION) {\n hideReminder()\n if (currentSubscription) {\n const auth = currentSubscription.toJSON().keys.auth\n const subKeys = JSON.parse(document.querySelector(\"#subKeys\").value)\n // Subscribed && browser notifications enabled\n if (subKeys.includes(auth)) {\n toggleChecked = true\n }\n }\n }\n toggle.checked = toggleChecked\n }\n\n if (\"serviceWorker\" in navigator) {\n const toggle = document.getElementById(\"allow_push_notifications\")\n\n if (toggle) {\n const registration = await navigator.serviceWorker.ready\n\n setToggleState(registration, toggle)\n\n toggle.addEventListener(\"change\", async ({ target }) => {\n if (target.checked) {\n await subscribeToNotifications(registration);\n } else {\n await unsubscribeFromNotifications(registration)\n }\n })\n }\n }\n});\n","/* eslint-disable */\n\n/*! modernizr 3.3.1 (Custom Build) | MIT *\n * https://modernizr.com/download/?-setclasses !*/\n!function(n,e,s){function o(n,e){return typeof n===e}function a(){var n,e,s,a,i,l,r;for(var c in f)if(f.hasOwnProperty(c)){if(n=[],e=f[c],e.name&&(n.push(e.name.toLowerCase()),e.options&&e.options.aliases&&e.options.aliases.length))for(s=0;s<e.options.aliases.length;s++)n.push(e.options.aliases[s].toLowerCase());for(a=o(e.fn,\"function\")?e.fn():e.fn,i=0;i<n.length;i++)l=n[i],r=l.split(\".\"),1===r.length?Modernizr[r[0]]=a:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=a),t.push((a?\"\":\"no-\")+r.join(\"-\"))}}function i(n){var e=r.className,s=Modernizr._config.classPrefix||\"\";if(c&&(e=e.baseVal),Modernizr._config.enableJSClass){var o=new RegExp(\"(^|\\\\s)\"+s+\"no-js(\\\\s|$)\");e=e.replace(o,\"$1\"+s+\"js$2\")}Modernizr._config.enableClasses&&(e+=\" \"+s+n.join(\" \"+s),c?r.className.baseVal=e:r.className=e)}var t=[],f=[],l={_version:\"3.3.1\",_config:{classPrefix:\"\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(n,e){var s=this;setTimeout(function(){e(s[n])},0)},addTest:function(n,e,s){f.push({name:n,fn:e,options:s})},addAsyncTest:function(n){f.push({name:null,fn:n})}},Modernizr=function(){};Modernizr.prototype=l,Modernizr=new Modernizr;var r=e.documentElement,c=\"svg\"===r.nodeName.toLowerCase();a(),i(t),delete l.addTest,delete l.addAsyncTest;for(var u=0;u<Modernizr._q.length;u++)Modernizr._q[u]();n.Modernizr=Modernizr}(window,document);\n","/* eslint-disable */\n\n/*\n Modified file from the original tribute.js\n Adding inside click event the conditional if the li element has no disabled-tribute-element class name. if true, then it must continue with normal behaviour.\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Tribute = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nrequire(\"./utils\");\n\nvar _TributeEvents = _interopRequireDefault(require(\"./TributeEvents\"));\n\nvar _TributeMenuEvents = _interopRequireDefault(require(\"./TributeMenuEvents\"));\n\nvar _TributeRange = _interopRequireDefault(require(\"./TributeRange\"));\n\nvar _TributeSearch = _interopRequireDefault(require(\"./TributeSearch\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Tribute =\n/*#__PURE__*/\nfunction () {\n function Tribute(_ref) {\n var _this = this;\n\n var _ref$values = _ref.values,\n values = _ref$values === void 0 ? null : _ref$values,\n _ref$iframe = _ref.iframe,\n iframe = _ref$iframe === void 0 ? null : _ref$iframe,\n _ref$selectClass = _ref.selectClass,\n selectClass = _ref$selectClass === void 0 ? 'highlight' : _ref$selectClass,\n _ref$trigger = _ref.trigger,\n trigger = _ref$trigger === void 0 ? '@' : _ref$trigger,\n _ref$autocompleteMode = _ref.autocompleteMode,\n autocompleteMode = _ref$autocompleteMode === void 0 ? false : _ref$autocompleteMode,\n _ref$selectTemplate = _ref.selectTemplate,\n selectTemplate = _ref$selectTemplate === void 0 ? null : _ref$selectTemplate,\n _ref$menuItemTemplate = _ref.menuItemTemplate,\n menuItemTemplate = _ref$menuItemTemplate === void 0 ? null : _ref$menuItemTemplate,\n _ref$lookup = _ref.lookup,\n lookup = _ref$lookup === void 0 ? 'key' : _ref$lookup,\n _ref$fillAttr = _ref.fillAttr,\n fillAttr = _ref$fillAttr === void 0 ? 'value' : _ref$fillAttr,\n _ref$collection = _ref.collection,\n collection = _ref$collection === void 0 ? null : _ref$collection,\n _ref$menuContainer = _ref.menuContainer,\n menuContainer = _ref$menuContainer === void 0 ? null : _ref$menuContainer,\n _ref$noMatchTemplate = _ref.noMatchTemplate,\n noMatchTemplate = _ref$noMatchTemplate === void 0 ? null : _ref$noMatchTemplate,\n _ref$requireLeadingSp = _ref.requireLeadingSpace,\n requireLeadingSpace = _ref$requireLeadingSp === void 0 ? true : _ref$requireLeadingSp,\n _ref$allowSpaces = _ref.allowSpaces,\n allowSpaces = _ref$allowSpaces === void 0 ? false : _ref$allowSpaces,\n _ref$replaceTextSuffi = _ref.replaceTextSuffix,\n replaceTextSuffix = _ref$replaceTextSuffi === void 0 ? null : _ref$replaceTextSuffi,\n _ref$positionMenu = _ref.positionMenu,\n positionMenu = _ref$positionMenu === void 0 ? true : _ref$positionMenu,\n _ref$spaceSelectsMatc = _ref.spaceSelectsMatch,\n spaceSelectsMatch = _ref$spaceSelectsMatc === void 0 ? false : _ref$spaceSelectsMatc,\n _ref$searchOpts = _ref.searchOpts,\n searchOpts = _ref$searchOpts === void 0 ? {} : _ref$searchOpts,\n _ref$menuItemLimit = _ref.menuItemLimit,\n menuItemLimit = _ref$menuItemLimit === void 0 ? null : _ref$menuItemLimit;\n\n _classCallCheck(this, Tribute);\n\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = '';\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [{\n // symbol that starts the lookup\n trigger: trigger,\n // is it wrapped in an iframe\n iframe: iframe,\n // class applied to selected item\n selectClass: selectClass,\n // function called on select that retuns the content to insert\n selectTemplate: (selectTemplate || Tribute.defaultSelectTemplate).bind(this),\n // function called that returns content for an item\n menuItemTemplate: (menuItemTemplate || Tribute.defaultMenuItemTemplate).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: function (t) {\n if (typeof t === 'function') {\n return t.bind(_this);\n }\n\n return noMatchTemplate || function () {\n return '';\n }.bind(_this);\n }(noMatchTemplate),\n // column to search against in the object\n lookup: lookup,\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n // array of objects or a function returning an array of objects\n values: values,\n requireLeadingSpace: requireLeadingSpace,\n searchOpts: searchOpts,\n menuItemLimit: menuItemLimit\n }];\n } else if (collection) {\n if (this.autocompleteMode) console.warn('Tribute in autocomplete mode does not work for collections');\n this.collection = collection.map(function (item) {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n selectTemplate: (item.selectTemplate || Tribute.defaultSelectTemplate).bind(_this),\n menuItemTemplate: (item.menuItemTemplate || Tribute.defaultMenuItemTemplate).bind(_this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: function (t) {\n if (typeof t === 'function') {\n return t.bind(_this);\n }\n\n return null;\n }(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit\n };\n });\n } else {\n throw new Error('[Tribute] No collection specified.');\n }\n\n new _TributeRange[\"default\"](this);\n new _TributeEvents[\"default\"](this);\n new _TributeMenuEvents[\"default\"](this);\n new _TributeSearch[\"default\"](this);\n }\n\n _createClass(Tribute, [{\n key: \"triggers\",\n value: function triggers() {\n return this.collection.map(function (config) {\n return config.trigger;\n });\n }\n }, {\n key: \"attach\",\n value: function attach(el) {\n if (!el) {\n throw new Error('[Tribute] Must pass in a DOM node or NodeList.');\n } // Check if it is a jQuery collection\n\n\n if (typeof jQuery !== 'undefined' && el instanceof jQuery) {\n el = el.get();\n } // Is el an Array/Array-like object?\n\n\n if (el.constructor === NodeList || el.constructor === HTMLCollection || el.constructor === Array) {\n var length = el.length;\n\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n }, {\n key: \"_attach\",\n value: function _attach(el) {\n if (el.hasAttribute('data-tribute')) {\n console.warn('Tribute was already bound to ' + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute('data-tribute', true);\n }\n }, {\n key: \"ensureEditable\",\n value: function ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error('[Tribute] Cannot bind to ' + element.nodeName);\n }\n }\n }\n }, {\n key: \"createMenu\",\n value: function createMenu() {\n var wrapper = this.range.getDocument().createElement('div'),\n ul = this.range.getDocument().createElement('ul');\n wrapper.className = 'tribute-container';\n wrapper.setAttribute('aria-expanded','true');\n ul.setAttribute('id','results');\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n }, {\n key: \"showMenuFor\",\n value: function showMenuFor(element, scrollTo) {\n var _this2 = this;\n\n // Only proceed if menu is not already shown for the current element & mentionText\n if (this.isActive && this.current.element === element && this.current.mentionText === this.currentMentionTextSnapshot) {\n return;\n }\n\n this.currentMentionTextSnapshot = this.current.mentionText; // create the menu if it does not exist.\n\n if (!this.menu) {\n this.menu = this.createMenu();\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = '';\n }\n\n var processValues = function processValues(values) {\n // Tribute may not be active any more by the time the value callback returns\n if (!_this2.isActive) {\n return;\n }\n\n var items = _this2.search.filter(_this2.current.mentionText, values, {\n pre: _this2.current.collection.searchOpts.pre || '<span>',\n post: _this2.current.collection.searchOpts.post || '</span>',\n skip: _this2.current.collection.searchOpts.skip,\n extract: function extract(el) {\n if (typeof _this2.current.collection.lookup === 'string') {\n return el[_this2.current.collection.lookup];\n } else if (typeof _this2.current.collection.lookup === 'function') {\n return _this2.current.collection.lookup(el, _this2.current.mentionText);\n } else {\n throw new Error('Invalid lookup attribute, lookup must be string or function.');\n }\n }\n });\n\n if (_this2.current.collection.menuItemLimit) {\n items = items.slice(0, _this2.current.collection.menuItemLimit);\n }\n\n _this2.current.filteredItems = items;\n\n var ul = _this2.menu.querySelector('ul');\n\n _this2.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n var noMatchEvent = new CustomEvent('tribute-no-match', {\n detail: _this2.menu\n });\n\n _this2.current.element.dispatchEvent(noMatchEvent);\n\n if (typeof _this2.current.collection.noMatchTemplate === 'function' && !_this2.current.collection.noMatchTemplate() || !_this2.current.collection.noMatchTemplate) {\n _this2.hideMenu();\n } else {\n typeof _this2.current.collection.noMatchTemplate === 'function' ? ul.innerHTML = _this2.current.collection.noMatchTemplate() : ul.innerHTML = _this2.current.collection.noMatchTemplate;\n }\n\n return;\n }\n\n ul.innerHTML = '';\n\n var fragment = _this2.range.getDocument().createDocumentFragment();\n\n items.forEach(function (item, index) {\n var li = _this2.range.getDocument().createElement('li');\n li.setAttribute('role', 'option');\n li.setAttribute('data-index', index);\n li.addEventListener('mousemove', function (e) {\n var _this2$_findLiTarget = _this2._findLiTarget(e.target),\n _this2$_findLiTarget2 = _slicedToArray(_this2$_findLiTarget, 2),\n li = _this2$_findLiTarget2[0],\n index = _this2$_findLiTarget2[1];\n\n if (e.movementY !== 0) {\n _this2.events.setActiveLi(index);\n }\n });\n\n if (_this2.menuSelected === index) {\n li.className = _this2.current.collection.selectClass;\n }\n\n li.innerHTML = _this2.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === 'function') {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n }, {\n key: \"_findLiTarget\",\n value: function _findLiTarget(el) {\n if (!el) return [];\n var index = el.getAttribute('data-index');\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n }, {\n key: \"showMenuForCollection\",\n value: function showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n if (element.isContentEditable) this.insertTextAtCursor(this.current.collection.trigger);else this.insertAtCaret(element, this.current.collection.trigger);\n this.showMenuFor(element);\n } // TODO: make sure this works for inputs/textareas\n\n }, {\n key: \"placeCaretAtEnd\",\n value: function placeCaretAtEnd(el) {\n el.focus();\n\n if (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n } // for contenteditable\n\n }, {\n key: \"insertTextAtCursor\",\n value: function insertTextAtCursor(text) {\n var sel, range, html;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n } // for regular inputs\n\n }, {\n key: \"insertAtCaret\",\n value: function insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(textarea.selectionEnd, textarea.value.length);\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n }, {\n key: \"hideMenu\",\n value: function hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = 'display: none;';\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n }, {\n key: \"selectItemAtIndex\",\n value: function selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== 'number' || isNaN(index)) return;\n var item = this.current.filteredItems[index];\n var content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n }, {\n key: \"replaceText\",\n value: function replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n }, {\n key: \"_append\",\n value: function _append(collection, newValues, replace) {\n if (typeof collection.values === 'function') {\n throw new Error('Unable to append to values, as it is a function.');\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n }, {\n key: \"append\",\n value: function append(collectionIndex, newValues, replace) {\n var index = parseInt(collectionIndex);\n if (typeof index !== 'number') throw new Error('please provide an index for the collection to update.');\n var collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n }, {\n key: \"appendCurrent\",\n value: function appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error('No active state. Please use append instead and pass an index.');\n }\n }\n }, {\n key: \"detach\",\n value: function detach(el) {\n if (!el) {\n throw new Error('[Tribute] Must pass in a DOM node or NodeList.');\n } // Check if it is a jQuery collection\n\n\n if (typeof jQuery !== 'undefined' && el instanceof jQuery) {\n el = el.get();\n } // Is el an Array/Array-like object?\n\n\n if (el.constructor === NodeList || el.constructor === HTMLCollection || el.constructor === Array) {\n var length = el.length;\n\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n }, {\n key: \"_detach\",\n value: function _detach(el) {\n var _this3 = this;\n\n this.events.unbind(el);\n\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(function () {\n el.removeAttribute('data-tribute');\n _this3.isActive = false;\n\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n }], [{\n key: \"defaultSelectTemplate\",\n value: function defaultSelectTemplate(item) {\n if (typeof item === 'undefined') return null;\n\n if (this.range.isContentEditable(this.current.element)) {\n return '<span class=\"tribute-mention\">' + (this.current.collection.trigger + item.original[this.current.collection.fillAttr]) + '</span>';\n }\n\n return this.current.collection.trigger + item.original[this.current.collection.fillAttr];\n }\n }, {\n key: \"defaultMenuItemTemplate\",\n value: function defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n }, {\n key: \"inputTypes\",\n value: function inputTypes() {\n return ['TEXTAREA', 'INPUT'];\n }\n }]);\n\n return Tribute;\n}();\n\nvar _default = Tribute;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{\"./TributeEvents\":2,\"./TributeMenuEvents\":3,\"./TributeRange\":4,\"./TributeSearch\":5,\"./utils\":7}],2:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar TributeEvents =\n/*#__PURE__*/\nfunction () {\n function TributeEvents(tribute) {\n _classCallCheck(this, TributeEvents);\n\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n _createClass(TributeEvents, [{\n key: \"bind\",\n value: function bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n element.addEventListener('keydown', element.boundKeydown, false);\n element.addEventListener('keyup', element.boundKeyup, false);\n element.addEventListener('input', element.boundInput, false);\n }\n }, {\n key: \"unbind\",\n value: function unbind(element) {\n element.removeEventListener('keydown', element.boundKeydown, false);\n element.removeEventListener('keyup', element.boundKeyup, false);\n element.removeEventListener('input', element.boundInput, false);\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n }, {\n key: \"keydown\",\n value: function keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n var element = this;\n instance.commandEvent = false;\n TributeEvents.keys().forEach(function (o) {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n }, {\n key: \"input\",\n value: function input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n }, {\n key: \"click\",\n value: function click(instance, event) {\n var tribute = instance.tribute;\n\n if (tribute.menu && tribute.menu.contains(event.target)) {\n var li = event.target;\n event.preventDefault();\n event.stopPropagation();\n\n while (li.nodeName.toLowerCase() !== 'li') {\n li = li.parentNode;\n\n if (!li || li === tribute.menu) {\n throw new Error('cannot find the <li> container for the click');\n }\n }\n\n if (li.getElementsByClassName(\"disabled-tribute-element\")[0]==undefined){\n tribute.selectItemAtIndex(li.getAttribute('data-index'), event);\n tribute.hideMenu(); // TODO: should fire with externalTrigger and target is outside of menu\n }\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(function () {\n return tribute.hideMenu();\n });\n }\n }\n }, {\n key: \"keyup\",\n value: function keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n\n instance.updateSelection(this);\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, '');\n } else {\n var keyCode = instance.getKeyCode(instance, this, event);\n if (isNaN(keyCode) || !keyCode) return;\n var trigger = instance.tribute.triggers().find(function (trigger) {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== 'undefined') {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if ((instance.tribute.current.trigger || instance.tribute.autocompleteMode) && instance.commandEvent === false || instance.tribute.isActive && event.keyCode === 8) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n }, {\n key: \"shouldDeactivate\",\n value: function shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n var eventKeyPressed = false;\n TributeEvents.keys().forEach(function (o) {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n return !eventKeyPressed;\n }\n\n return false;\n }\n }, {\n key: \"getKeyCode\",\n value: function getKeyCode(instance, el, event) {\n var _char;\n\n var tribute = instance.tribute;\n var info = tribute.range.getTriggerInfo(false, tribute.hasTrailingSpace, true, tribute.allowSpaces, tribute.autocompleteMode);\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n }, {\n key: \"updateSelection\",\n value: function updateSelection(el) {\n this.tribute.current.element = el;\n var info = this.tribute.range.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n }, {\n key: \"callbacks\",\n value: function callbacks() {\n var _this = this;\n\n return {\n triggerChar: function triggerChar(e, el, trigger) {\n var tribute = _this.tribute;\n tribute.current.trigger = trigger;\n var collectionItem = tribute.collection.find(function (item) {\n return item.trigger === trigger;\n });\n tribute.current.collection = collectionItem;\n if (tribute.inputEvent) tribute.showMenuFor(el, true);\n },\n enter: function enter(e, el) {\n // choose selection\n if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(function () {\n _this.tribute.selectItemAtIndex(_this.tribute.menuSelected, e);\n\n _this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: function escape(e, el) {\n if (_this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n _this.tribute.isActive = false;\n\n _this.tribute.hideMenu();\n }\n },\n tab: function tab(e, el) {\n // choose first match\n _this.callbacks().enter(e, el);\n },\n space: function space(e, el) {\n if (_this.tribute.isActive) {\n if (_this.tribute.spaceSelectsMatch) {\n _this.callbacks().enter(e, el);\n } else if (!_this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(function () {\n _this.tribute.hideMenu();\n\n _this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: function up(e, el) {\n // navigate up ul\n if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n var count = _this.tribute.current.filteredItems.length,\n selected = _this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n _this.tribute.menuSelected--;\n\n _this.setActiveLi();\n } else if (selected === 0) {\n _this.tribute.menuSelected = count - 1;\n\n _this.setActiveLi();\n\n _this.tribute.menu.scrollTop = _this.tribute.menu.scrollHeight;\n }\n }\n },\n down: function down(e, el) {\n // navigate down ul\n if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n var count = _this.tribute.current.filteredItems.length - 1,\n selected = _this.tribute.menuSelected;\n\n if (count > selected) {\n _this.tribute.menuSelected++;\n\n _this.setActiveLi();\n } else if (count === selected) {\n _this.tribute.menuSelected = 0;\n\n _this.setActiveLi();\n\n _this.tribute.menu.scrollTop = 0;\n }\n }\n },\n \"delete\": function _delete(e, el) {\n if (_this.tribute.isActive && _this.tribute.current.mentionText.length < 1) {\n _this.tribute.hideMenu();\n } else if (_this.tribute.isActive) {\n _this.tribute.showMenuFor(el);\n }\n }\n };\n }\n }, {\n key: \"setActiveLi\",\n value: function setActiveLi(index) {\n var lis = this.tribute.menu.querySelectorAll('li'),\n length = lis.length >>> 0;\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (var i = 0; i < length; i++) {\n var li = lis[i];\n\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n var liClientRect = li.getBoundingClientRect();\n var menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n var scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n var _scrollDistance = menuClientRect.top - liClientRect.top;\n\n this.tribute.menu.scrollTop -= _scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n }, {\n key: \"getFullHeight\",\n value: function getFullHeight(elem, includeMargin) {\n var height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n var style = elem.currentStyle || window.getComputedStyle(elem);\n return height + parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n }], [{\n key: \"keys\",\n value: function keys() {\n return [{\n key: 9,\n value: 'TAB'\n }, {\n key: 8,\n value: 'DELETE'\n }, {\n key: 13,\n value: 'ENTER'\n }, {\n key: 27,\n value: 'ESCAPE'\n }, {\n key: 32,\n value: 'SPACE'\n }, {\n key: 38,\n value: 'UP'\n }, {\n key: 40,\n value: 'DOWN'\n }];\n }\n }]);\n\n return TributeEvents;\n}();\n\nvar _default = TributeEvents;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar TributeMenuEvents =\n/*#__PURE__*/\nfunction () {\n function TributeMenuEvents(tribute) {\n _classCallCheck(this, TributeMenuEvents);\n\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n _createClass(TributeMenuEvents, [{\n key: \"bind\",\n value: function bind(menu) {\n var _this = this;\n\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(function () {\n if (_this.tribute.isActive) {\n _this.tribute.showMenuFor(_this.tribute.current.element, false);\n }\n }, 300, false);\n this.windowResizeEvent = this.debounce(function () {\n if (_this.tribute.isActive) {\n _this.tribute.range.positionMenuAtCaret(true);\n }\n }, 300, false); // fixes IE11 issues with mousedown\n\n this.tribute.range.getDocument().addEventListener('MSPointerDown', this.menuClickEvent, false);\n this.tribute.range.getDocument().addEventListener('mousedown', this.menuClickEvent, false);\n window.addEventListener('resize', this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener('scroll', this.menuContainerScrollEvent, false);\n } else {\n window.addEventListener('scroll', this.menuContainerScrollEvent);\n }\n }\n }, {\n key: \"unbind\",\n value: function unbind(menu) {\n this.tribute.range.getDocument().removeEventListener('mousedown', this.menuClickEvent, false);\n this.tribute.range.getDocument().removeEventListener('MSPointerDown', this.menuClickEvent, false);\n window.removeEventListener('resize', this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener('scroll', this.menuContainerScrollEvent, false);\n } else {\n window.removeEventListener('scroll', this.menuContainerScrollEvent);\n }\n }\n }, {\n key: \"debounce\",\n value: function debounce(func, wait, immediate) {\n var _this2 = this,\n _arguments = arguments;\n\n var timeout;\n return function () {\n var context = _this2,\n args = _arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n }]);\n\n return TributeMenuEvents;\n}();\n\nvar _default = TributeMenuEvents;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// Thanks to https://github.com/jeff-collins/ment.io\nvar TributeRange =\n/*#__PURE__*/\nfunction () {\n function TributeRange(tribute) {\n _classCallCheck(this, TributeRange);\n\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n _createClass(TributeRange, [{\n key: \"getDocument\",\n value: function getDocument() {\n var iframe;\n\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document;\n }\n\n return iframe.contentWindow.document;\n }\n }, {\n key: \"positionMenuAtCaret\",\n value: function positionMenuAtCaret(scrollTo) {\n var _this = this;\n\n var context = this.tribute.current,\n coordinates;\n var info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n if (!this.tribute.positionMenu) {\n this.tribute.menu.style.cssText = \"display: block;\";\n return;\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element, info.mentionPosition);\n } else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = \"top: \".concat(coordinates.top, \"px;\\n left: \").concat(coordinates.left, \"px;\\n right: \").concat(coordinates.right, \"px;\\n bottom: \").concat(coordinates.bottom, \"px;\\n position: absolute;\\n display: block;\");\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n window.setTimeout(function () {\n var menuDimensions = {\n width: _this.tribute.menu.offsetWidth,\n height: _this.tribute.menu.offsetHeight\n };\n\n var menuIsOffScreen = _this.isMenuOffScreen(coordinates, menuDimensions);\n\n var menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n var menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n _this.tribute.menu.style.cssText = 'display: none';\n\n _this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n }, {\n key: \"selectElement\",\n value: function selectElement(targetElement, path, offset) {\n var range;\n var elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n\n if (elem === undefined) {\n return;\n }\n\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n\n var sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n }, {\n key: \"replaceTriggerText\",\n value: function replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n var info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n var context = this.tribute.current;\n var replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n var myField = this.tribute.current.element;\n var textSuffix = typeof this.tribute.replaceTextSuffix == 'string' ? this.tribute.replaceTextSuffix : ' ';\n text += textSuffix;\n var startPos = info.mentionPosition;\n var endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n myField.value = myField.value.substring(0, startPos) + text + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n var _textSuffix = typeof this.tribute.replaceTextSuffix == 'string' ? this.tribute.replaceTextSuffix : '\\xA0';\n\n text += _textSuffix;\n this.pasteHtml(text, info.mentionPosition, info.mentionPosition + info.mentionText.length + !this.tribute.autocompleteMode);\n }\n\n context.element.dispatchEvent(replaceEvent);\n }\n }\n }, {\n key: \"pasteHtml\",\n value: function pasteHtml(html, startPos, endPos) {\n var range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n var el = this.getDocument().createElement('div');\n el.innerHTML = html;\n var frag = this.getDocument().createDocumentFragment(),\n node,\n lastNode;\n\n while (node = el.firstChild) {\n lastNode = frag.appendChild(node);\n }\n\n range.insertNode(frag); // Preserve the selection\n\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }, {\n key: \"getWindowSelection\",\n value: function getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection();\n }\n\n return window.getSelection();\n }\n }, {\n key: \"getNodePositionInParent\",\n value: function getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0;\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n var node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i;\n }\n }\n }\n }, {\n key: \"getContentEditableSelectedPath\",\n value: function getContentEditableSelectedPath(ctx) {\n var sel = this.getWindowSelection();\n var selected = sel.anchorNode;\n var path = [];\n var offset;\n\n if (selected != null) {\n var i;\n var ce = selected.contentEditable;\n\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n\n path.reverse(); // getRangeAt may not exist, need alternative\n\n offset = sel.getRangeAt(0).startOffset;\n return {\n selected: selected,\n path: path,\n offset: offset\n };\n }\n }\n }, {\n key: \"getTextPrecedingCurrentSelection\",\n value: function getTextPrecedingCurrentSelection() {\n var context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n var textComponent = this.tribute.current.element;\n\n if (textComponent) {\n var startPos = textComponent.selectionStart;\n\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n } else {\n var selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text;\n }\n }, {\n key: \"getLastWordInText\",\n value: function getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n\n var wordsArray = text.split(/\\s+/);\n var worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim();\n }\n }, {\n key: \"getTriggerInfo\",\n value: function getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n var _this2 = this;\n\n var ctx = this.tribute.current;\n var selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n var selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n var effectiveRange = this.getTextPrecedingCurrentSelection();\n var lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n };\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n var mostRecentTriggerCharPos = -1;\n var triggerChar;\n this.tribute.collection.forEach(function (config) {\n var c = config.trigger;\n var idx = config.requireLeadingSpace ? _this2.lastIndexWithLeadingSpace(effectiveRange, c) : effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 && (mostRecentTriggerCharPos === 0 || !requireLeadingSpace || /[\\xA0\\s]/g.test(effectiveRange.substring(mostRecentTriggerCharPos - 1, mostRecentTriggerCharPos)))) {\n var currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + 1, effectiveRange.length);\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + 1);\n var firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n var leadingSpace = currentTriggerSnippet.length > 0 && (firstSnippetChar === ' ' || firstSnippetChar === '\\xA0');\n\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n var regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !regex.test(currentTriggerSnippet))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n };\n }\n }\n }\n }\n }, {\n key: \"lastIndexWithLeadingSpace\",\n value: function lastIndexWithLeadingSpace(str, _char) {\n var reversedStr = str.split('').reverse().join('');\n var index = -1;\n\n for (var cidx = 0, len = str.length; cidx < len; cidx++) {\n var firstChar = cidx === str.length - 1;\n var leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n var match = _char === reversedStr[cidx];\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break;\n }\n }\n\n return index;\n }\n }, {\n key: \"isContentEditable\",\n value: function isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n }\n }, {\n key: \"isMenuOffScreen\",\n value: function isMenuOffScreen(coordinates, menuDimensions) {\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n var menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n var menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n var menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n };\n }\n }, {\n key: \"getMenuDimensions\",\n value: function getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n var dimensions = {\n width: null,\n height: null\n };\n this.tribute.menu.style.cssText = \"top: 0px;\\n left: 0px;\\n position: fixed;\\n display: block;\\n visibility; hidden;\";\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n this.tribute.menu.style.cssText = \"display: none;\";\n return dimensions;\n }\n }, {\n key: \"getTextAreaOrInputUnderlinePosition\",\n value: function getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var isFirefox = window.mozInnerScreenX !== null;\n var div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n var style = div.style;\n var computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n style.whiteSpace = 'pre-wrap';\n\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n } // position off-screen\n\n\n style.position = 'absolute';\n style.visibility = 'hidden'; // transfer the element's properties to the div\n\n properties.forEach(function (prop) {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = \"\".concat(parseInt(computed.width) - 2, \"px\");\n if (element.scrollHeight > parseInt(computed.height)) style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n var span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n var rect = element.getBoundingClientRect();\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var top = 0;\n var left = 0;\n\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n var coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var menuDimensions = this.getMenuDimensions();\n var menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n var parentHeight = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n var parentRect = this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect();\n var scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width ? windowLeft + windowWidth - menuDimensions.width : windowLeft;\n delete coordinates.right;\n }\n\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height ? windowTop + windowHeight - menuDimensions.height : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates;\n }\n }, {\n key: \"getContentEditableCaretPosition\",\n value: function getContentEditableCaretPosition(selectedNodePosition) {\n var markerTextChar = '';\n var markerEl,\n markerId = \"sel_\".concat(new Date().getTime(), \"_\").concat(Math.random().toString().substr(2));\n var range;\n var sel = this.getWindowSelection();\n var prevRange = sel.getRangeAt(0);\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n range.collapse(false); // Create the marker element containing a single invisible character using DOM methods and insert it\n\n markerEl = this.getDocument().createElement('span');\n markerEl.id = markerId;\n markerEl.appendChild(this.getDocument().createTextNode(markerTextChar));\n range.insertNode(markerEl);\n sel.removeAllRanges();\n sel.addRange(prevRange);\n var rect = markerEl.getBoundingClientRect();\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var left = 0;\n var top = 0;\n\n if (this.menuContainerIsBody) {\n left = rect.left;\n top = rect.top;\n } else {\n left = markerEl.offsetLeft;\n top = markerEl.offsetTop;\n }\n\n var coordinates = {\n left: left + windowLeft,\n top: top + markerEl.offsetHeight + windowTop\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var menuDimensions = this.getMenuDimensions();\n var menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n var parentHeight = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n var parentRect = this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect();\n var scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width ? windowLeft + windowWidth - menuDimensions.width : windowLeft;\n delete coordinates.right;\n }\n\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height ? windowTop + windowHeight - menuDimensions.height : windowTop;\n delete coordinates.bottom;\n }\n\n markerEl.parentNode.removeChild(markerEl);\n return coordinates;\n }\n }, {\n key: \"scrollIntoView\",\n value: function scrollIntoView(elem) {\n var reasonableBuffer = 20,\n clientRect;\n var maxScrollDisplacement = 100;\n var e = this.menu;\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n\n if (e === undefined || !e.getBoundingClientRect) {\n return;\n }\n }\n }\n\n var elemTop = clientRect.top;\n var elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n var maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n var targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n }, {\n key: \"menuContainerIsBody\",\n get: function get() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n }]);\n\n return TributeRange;\n}();\n\nvar _default = TributeRange;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],5:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// Thanks to https://github.com/mattyork/fuzzy\nvar TributeSearch =\n/*#__PURE__*/\nfunction () {\n function TributeSearch(tribute) {\n _classCallCheck(this, TributeSearch);\n\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n _createClass(TributeSearch, [{\n key: \"simpleFilter\",\n value: function simpleFilter(pattern, array) {\n var _this = this;\n\n return array.filter(function (string) {\n return _this.test(pattern, string);\n });\n }\n }, {\n key: \"test\",\n value: function test(pattern, string) {\n return this.match(pattern, string) !== null;\n }\n }, {\n key: \"match\",\n value: function match(pattern, string, opts) {\n opts = opts || {};\n var patternIdx = 0,\n result = [],\n len = string.length,\n totalScore = 0,\n currScore = 0,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase(),\n ch,\n compareChar;\n\n if (opts.skip) {\n return {\n rendered: string,\n score: 0\n };\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n var patternCache = this.traverse(compareString, pattern, 0, 0, []);\n\n if (!patternCache) {\n return null;\n }\n\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n };\n }\n }, {\n key: \"traverse\",\n value: function traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n // calculate score and copy the cache containing the indices where it is found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n };\n } // if string at end or remaining pattern > remaining string\n\n\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined;\n }\n\n var c = pattern[patternIndex];\n var index = string.indexOf(c, stringIndex);\n var best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop(); // if downstream traversal failed, return best answer so far\n\n if (!temp) {\n return best;\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best;\n }\n }, {\n key: \"calculateScore\",\n value: function calculateScore(patternCache) {\n var score = 0;\n var temp = 1;\n patternCache.forEach(function (index, i) {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n } else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n return score;\n }\n }, {\n key: \"render\",\n value: function render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n indices.forEach(function (index, i) {\n rendered += pre + string[index] + post + string.substring(index + 1, indices[i + 1] ? indices[i + 1] : string.length);\n });\n return rendered;\n }\n }, {\n key: \"filter\",\n value: function filter(pattern, arr, opts) {\n var _this2 = this;\n\n opts = opts || {};\n return arr.reduce(function (prev, element, idx, arr) {\n var str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) {\n // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n var rendered = _this2.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev;\n }, []).sort(function (a, b) {\n var compare = b.score - a.score;\n if (compare) return compare;\n return a.index - b.index;\n });\n }\n }]);\n\n return TributeSearch;\n}();\n\nvar _default = TributeSearch;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _Tribute = _interopRequireDefault(require(\"./Tribute\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n* Tribute.js\n* Native ES6 JavaScript @mention Plugin\n**/\nvar _default = _Tribute[\"default\"];\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{\"./Tribute\":1}],7:[function(require,module,exports){\n\"use strict\";\n\nif (!Array.prototype.find) {\n Array.prototype.find = function (predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n\n return undefined;\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n var CustomEvent = function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent;\n}\n\n},{}]},{},[6])(6)\n});\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./jquery.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] = ___EXPOSE_LOADER_IMPORT___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n var g;\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n }\n\n // This works if the self reference is available\n if (typeof self === \"object\") {\n return self;\n }\n\n // This works if the global reference is available\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n return g;\n}();","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per GeneratorResume behavior specified since ES2015:\n // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume\n // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next method, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable != null) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n throw new TypeError(typeof iterable + \" is not iterable\");\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n","!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live <use> collection\n for (// get the cached <use> index\n var index = 0; index < uses.length; ) {\n // get the current <use>\n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the <use> element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});","let defaultTheme = require('./lib/public/default-theme')\nmodule.exports = (defaultTheme.__esModule ? defaultTheme : { default: defaultTheme }).default\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _cloneDeep = require(\"../util/cloneDeep\");\nconst _configfull = /*#__PURE__*/ _interop_require_default(require(\"../../stubs/config.full\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = (0, _cloneDeep.cloneDeep)(_configfull.default.theme);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: function() {\n return cloneDeep;\n }\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","module.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aria: {\n busy: 'busy=\"true\"',\n checked: 'checked=\"true\"',\n disabled: 'disabled=\"true\"',\n expanded: 'expanded=\"true\"',\n hidden: 'hidden=\"true\"',\n pressed: 'pressed=\"true\"',\n readonly: 'readonly=\"true\"',\n required: 'required=\"true\"',\n selected: 'selected=\"true\"',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n caretColor: ({ theme }) => theme('colors'),\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n container: {},\n content: {\n none: 'none',\n },\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gradientColorStopPositions: {\n '0%': '0%',\n '5%': '5%',\n '10%': '10%',\n '15%': '15%',\n '20%': '20%',\n '25%': '25%',\n '30%': '30%',\n '35%': '35%',\n '40%': '40%',\n '45%': '45%',\n '50%': '50%',\n '55%': '55%',\n '60%': '60%',\n '65%': '65%',\n '70%': '70%',\n '75%': '75%',\n '80%': '80%',\n '85%': '85%',\n '90%': '90%',\n '95%': '95%',\n '100%': '100%',\n },\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridTemplateColumns: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n listStyleImage: {\n none: 'none',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n lineClamp: {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n },\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n none: 'none',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n ...theme('spacing'),\n none: 'none',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n minWidth: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 15: '0.15',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 35: '0.35',\n 40: '0.4',\n 45: '0.45',\n 50: '0.5',\n 55: '0.55',\n 60: '0.6',\n 65: '0.65',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 85: '0.85',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n ringColor: ({ theme }) => ({\n DEFAULT: theme('colors.blue.500', '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n stroke: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n supports: {},\n data: {},\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n size: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n svw: '100svw',\n lvw: '100lvw',\n dvw: '100dvw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n plugins: [],\n}\n","/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\nimport { toArray, setToPattern, escape_regex, arrayToPattern, sequencePattern } from './regex.js';\nexport { escape_regex } from './regex.js';\nimport { allSubstrings } from './strings.js';\n\n/**\n * @typedef {{[key:string]:string}} TUnicodeMap\n * @typedef {{[key:string]:Set<string>}} TUnicodeSets\n * @typedef {[[number,number]]} TCodePoints\n * @typedef {{folded:string,composed:string,code_point:number}} TCodePointObj\n * @typedef {{start:number,end:number,length:number,substr:string}} TSequencePart\n */\n/** @type {TCodePoints} */\n\nconst code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\n/** @type {TUnicodeMap} */\n\nlet unicode_map;\n/** @type {RegExp} */\n\nlet multi_char_reg;\nconst max_char_length = 3;\n/** @type {TUnicodeMap} */\n\nconst latin_convert = {};\n/** @type {TUnicodeMap} */\n\nconst latin_condensed = {\n '/': 'â„∕',\n '0': '߀',\n \"a\": \"â±¥ÉÉ‘\",\n \"aa\": \"ꜳ\",\n \"ae\": \"æǽǣ\",\n \"ao\": \"ꜵ\",\n \"au\": \"ꜷ\",\n \"av\": \"ꜹꜻ\",\n \"ay\": \"ꜽ\",\n \"b\": \"ƀɓƃ\",\n \"c\": \"ꜿƈȼↄ\",\n \"d\": \"đɗɖᴅƌꮷÔɦ\",\n \"e\": \"É›Çᴇɇ\",\n \"f\": \"ê¼Æ’\",\n \"g\": \"Ç¥É êž¡áµ¹ê¿É¢\",\n \"h\": \"ħⱨⱶɥ\",\n \"i\": \"ɨı\",\n \"j\": \"ɉȷ\",\n \"k\": \"ƙⱪêêƒê…ꞣ\",\n \"l\": \"łƚɫⱡê‰ê‡êžÉ\",\n \"m\": \"ɱɯϻ\",\n \"n\": \"ꞥƞɲꞑᴎлԉ\",\n \"o\": \"øǿɔɵê‹êá´‘\",\n \"oe\": \"Å“\",\n \"oi\": \"Æ£\",\n \"oo\": \"ê\",\n \"ou\": \"È£\",\n \"p\": \"ƥᵽê‘ê“ê•Ï\",\n \"q\": \"ê—ê™É‹\",\n \"r\": \"Éɽê›êž§êžƒ\",\n \"s\": \"ßȿꞩꞅʂ\",\n \"t\": \"ŧÆʈⱦꞇ\",\n \"th\": \"þ\",\n \"tz\": \"ꜩ\",\n \"u\": \"ʉ\",\n \"v\": \"Ê‹êŸÊŒ\",\n \"vy\": \"ê¡\",\n \"w\": \"â±³\",\n \"y\": \"Æ´Éỿ\",\n \"z\": \"ƶȥɀⱬê£\",\n \"hv\": \"Æ•\"\n};\n\nfor (let latin in latin_condensed) {\n let unicode = latin_condensed[latin] || '';\n\n for (let i = 0; i < unicode.length; i++) {\n let char = unicode.substring(i, i + 1);\n latin_convert[char] = latin;\n }\n}\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu');\n/**\n * Initialize the unicode_map from the give code point ranges\n *\n * @param {TCodePoints=} _code_points\n */\n\nconst initialize = _code_points => {\n if (unicode_map !== undefined) return;\n unicode_map = generateMap(_code_points || code_points);\n};\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n * @param {string} str\n * @param {string} form\n */\n\nconst normalize = (str, form = 'NFKD') => str.normalize(form);\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n * @param {string} str\n * @return {string}\n */\n\nconst asciifold = str => {\n return toArray(str).reduce(\n /**\n * @param {string} result\n * @param {string} char\n */\n (result, char) => {\n return result + _asciifold(char);\n }, '');\n};\n/**\n * @param {string} str\n * @return {string}\n */\n\nconst _asciifold = str => {\n str = normalize(str).toLowerCase().replace(convert_pat, (\n /** @type {string} */\n char) => {\n return latin_convert[char] || '';\n }); //return str;\n\n return normalize(str, 'NFC');\n};\n/**\n * Generate a list of unicode variants from the list of code points\n * @param {TCodePoints} code_points\n * @yield {TCodePointObj}\n */\n\nfunction* generator(code_points) {\n for (const [code_point_min, code_point_max] of code_points) {\n for (let i = code_point_min; i <= code_point_max; i++) {\n let composed = String.fromCharCode(i);\n let folded = asciifold(composed);\n\n if (folded == composed.toLowerCase()) {\n continue;\n } // skip when folded is a string longer than 3 characters long\n // bc the resulting regex patterns will be long\n // eg:\n // folded صلى الله عليه وسلم length 18 code point 65018\n // folded جل جلاله length 8 code point 65019\n\n\n if (folded.length > max_char_length) {\n continue;\n }\n\n if (folded.length == 0) {\n continue;\n }\n\n yield {\n folded: folded,\n composed: composed,\n code_point: i\n };\n }\n }\n}\n/**\n * Generate a unicode map from the list of code points\n * @param {TCodePoints} code_points\n * @return {TUnicodeSets}\n */\n\nconst generateSets = code_points => {\n /** @type {{[key:string]:Set<string>}} */\n const unicode_sets = {};\n /**\n * @param {string} folded\n * @param {string} to_add\n */\n\n const addMatching = (folded, to_add) => {\n /** @type {Set<string>} */\n const folded_set = unicode_sets[folded] || new Set();\n const patt = new RegExp('^' + setToPattern(folded_set) + '$', 'iu');\n\n if (to_add.match(patt)) {\n return;\n }\n\n folded_set.add(escape_regex(to_add));\n unicode_sets[folded] = folded_set;\n };\n\n for (let value of generator(code_points)) {\n addMatching(value.folded, value.folded);\n addMatching(value.folded, value.composed);\n }\n\n return unicode_sets;\n};\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|Æ|Ǽ|Ç¢)|(?:A|â’¶|A...)(?:E|É›|â’º...))\n *\n * @param {TCodePoints} code_points\n * @return {TUnicodeMap}\n */\n\nconst generateMap = code_points => {\n /** @type {TUnicodeSets} */\n const unicode_sets = generateSets(code_points);\n /** @type {TUnicodeMap} */\n\n const unicode_map = {};\n /** @type {string[]} */\n\n let multi_char = [];\n\n for (let folded in unicode_sets) {\n let set = unicode_sets[folded];\n\n if (set) {\n unicode_map[folded] = setToPattern(set);\n }\n\n if (folded.length > 1) {\n multi_char.push(escape_regex(folded));\n }\n }\n\n multi_char.sort((a, b) => b.length - a.length);\n const multi_char_patt = arrayToPattern(multi_char);\n multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n return unicode_map;\n};\n/**\n * Map each element of an array from it's folded value to all possible unicode matches\n * @param {string[]} strings\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst mapSequence = (strings, min_replacement = 1) => {\n let chars_replaced = 0;\n strings = strings.map(str => {\n if (unicode_map[str]) {\n chars_replaced += str.length;\n }\n\n return unicode_map[str] || str;\n });\n\n if (chars_replaced >= min_replacement) {\n return sequencePattern(strings);\n }\n\n return '';\n};\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n *\n *\n * @param {string} str\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst substringsToPattern = (str, min_replacement = 1) => {\n min_replacement = Math.max(min_replacement, str.length - 1);\n return arrayToPattern(allSubstrings(str).map(sub_pat => {\n return mapSequence(sub_pat, min_replacement);\n }));\n};\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n *\n * @param {Sequence[]} sequences\n * @param {boolean} all\n */\n\nconst sequencesToPattern = (sequences, all = true) => {\n let min_replacement = sequences.length > 1 ? 1 : 0;\n return arrayToPattern(sequences.map(sequence => {\n let seq = [];\n const len = all ? sequence.length() : sequence.length() - 1;\n\n for (let j = 0; j < len; j++) {\n seq.push(substringsToPattern(sequence.substrs[j] || '', min_replacement));\n }\n\n return sequencePattern(seq);\n }));\n};\n/**\n * Return true if the sequence is already in the sequences\n * @param {Sequence} needle_seq\n * @param {Sequence[]} sequences\n */\n\n\nconst inSequences = (needle_seq, sequences) => {\n for (const seq of sequences) {\n if (seq.start != needle_seq.start || seq.end != needle_seq.end) {\n continue;\n }\n\n if (seq.substrs.join('') !== needle_seq.substrs.join('')) {\n continue;\n }\n\n let needle_parts = needle_seq.parts;\n /**\n * @param {TSequencePart} part\n */\n\n const filter = part => {\n for (const needle_part of needle_parts) {\n if (needle_part.start === part.start && needle_part.substr === part.substr) {\n return false;\n }\n\n if (part.length == 1 || needle_part.length == 1) {\n continue;\n } // check for overlapping parts\n // a = ['::=','==']\n // b = ['::','===']\n // a = ['r','sm']\n // b = ['rs','m']\n\n\n if (part.start < needle_part.start && part.end > needle_part.start) {\n return true;\n }\n\n if (needle_part.start < part.start && needle_part.end > part.start) {\n return true;\n }\n }\n\n return false;\n };\n\n let filtered = seq.parts.filter(filter);\n\n if (filtered.length > 0) {\n continue;\n }\n\n return true;\n }\n\n return false;\n};\n\nclass Sequence {\n constructor() {\n /** @type {TSequencePart[]} */\n this.parts = [];\n /** @type {string[]} */\n\n this.substrs = [];\n this.start = 0;\n this.end = 0;\n }\n /**\n * @param {TSequencePart|undefined} part\n */\n\n\n add(part) {\n if (part) {\n this.parts.push(part);\n this.substrs.push(part.substr);\n this.start = Math.min(part.start, this.start);\n this.end = Math.max(part.end, this.end);\n }\n }\n\n last() {\n return this.parts[this.parts.length - 1];\n }\n\n length() {\n return this.parts.length;\n }\n /**\n * @param {number} position\n * @param {TSequencePart} last_piece\n */\n\n\n clone(position, last_piece) {\n let clone = new Sequence();\n let parts = JSON.parse(JSON.stringify(this.parts));\n let last_part = parts.pop();\n\n for (const part of parts) {\n clone.add(part);\n }\n\n let last_substr = last_piece.substr.substring(0, position - last_part.start);\n let clone_last_len = last_substr.length;\n clone.add({\n start: last_part.start,\n end: last_part.start + clone_last_len,\n length: clone_last_len,\n substr: last_substr\n });\n return clone;\n }\n\n}\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /aâ“ï½áºšÃ áâầấẫẩãÄăằắẵẳȧǡäǟảåǻǎÈȃạáºáº·á¸Ä…â±¥ÉÉ‘AⒶAÀÃÃ‚áº¦áº¤áºªáº¨ÃƒÄ€Ä‚áº°áº®áº´áº²È¦Ç Ã„Çžáº¢Ã…ÇºÇȀȂẠẬẶḀĄȺⱯ/\n *\n * Issue:\n * ﺊﺋ [ 'ﺊ = \\\\u{fe8a}', 'ﺋ = \\\\u{fe8b}' ]\n *\tbecomes:\tÙŠÙ”ÙŠÙ” [ 'ÙŠ = \\\\u{64a}', 'Ù” = \\\\u{654}', 'ÙŠ = \\\\u{64a}', 'Ù” = \\\\u{654}' ]\n *\n *\tİIJ = IIJ = â…¡J\n *\n * \t1/2/4\n *\n * @param {string} str\n * @return {string|undefined}\n */\n\n\nconst getPattern = str => {\n initialize();\n str = asciifold(str);\n let pattern = '';\n let sequences = [new Sequence()];\n\n for (let i = 0; i < str.length; i++) {\n let substr = str.substring(i);\n let match = substr.match(multi_char_reg);\n const char = str.substring(i, i + 1);\n const match_str = match ? match[0] : null; // loop through sequences\n // add either the char or multi_match\n\n let overlapping = [];\n let added_types = new Set();\n\n for (const sequence of sequences) {\n const last_piece = sequence.last();\n\n if (!last_piece || last_piece.length == 1 || last_piece.end <= i) {\n // if we have a multi match\n if (match_str) {\n const len = match_str.length;\n sequence.add({\n start: i,\n end: i + len,\n length: len,\n substr: match_str\n });\n added_types.add('1');\n } else {\n sequence.add({\n start: i,\n end: i + 1,\n length: 1,\n substr: char\n });\n added_types.add('2');\n }\n } else if (match_str) {\n let clone = sequence.clone(i, last_piece);\n const len = match_str.length;\n clone.add({\n start: i,\n end: i + len,\n length: len,\n substr: match_str\n });\n overlapping.push(clone);\n } else {\n // don't add char\n // adding would create invalid patterns: 234 => [2,34,4]\n added_types.add('3');\n }\n } // if we have overlapping\n\n\n if (overlapping.length > 0) {\n // ['ii','iii'] before ['i','i','iii']\n overlapping = overlapping.sort((a, b) => {\n return a.length() - b.length();\n });\n\n for (let clone of overlapping) {\n // don't add if we already have an equivalent sequence\n if (inSequences(clone, sequences)) {\n continue;\n }\n\n sequences.push(clone);\n }\n\n continue;\n } // if we haven't done anything unique\n // clean up the patterns\n // helps keep patterns smaller\n // if str = 'r₨㎧aarss', pattern will be 446 instead of 655\n\n\n if (i > 0 && added_types.size == 1 && !added_types.has('3')) {\n pattern += sequencesToPattern(sequences, false);\n let new_seq = new Sequence();\n const old_seq = sequences[0];\n\n if (old_seq) {\n new_seq.add(old_seq.last());\n }\n\n sequences = [new_seq];\n }\n }\n\n pattern += sequencesToPattern(sequences, true);\n return pattern;\n};\n\nexport { _asciifold, asciifold, code_points, generateMap, generateSets, generator, getPattern, initialize, mapSequence, normalize, substringsToPattern, unicode_map };\n//# sourceMappingURL=index.js.map\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {string[]} chars\n * @return {string}\n */\nconst arrayToPattern = chars => {\n chars = chars.filter(Boolean);\n\n if (chars.length < 2) {\n return chars[0] || '';\n }\n\n return maxValueLength(chars) == 1 ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\n/**\n * @param {string[]} array\n * @return {string}\n */\n\nconst sequencePattern = array => {\n if (!hasDuplicates(array)) {\n return array.join('');\n }\n\n let pattern = '';\n let prev_char_count = 0;\n\n const prev_pattern = () => {\n if (prev_char_count > 1) {\n pattern += '{' + prev_char_count + '}';\n }\n };\n\n array.forEach((char, i) => {\n if (char === array[i - 1]) {\n prev_char_count++;\n return;\n }\n\n prev_pattern();\n pattern += char;\n prev_char_count = 1;\n });\n prev_pattern();\n return pattern;\n};\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {Set<string>} chars\n * @return {string}\n */\n\nconst setToPattern = chars => {\n let array = toArray(chars);\n return arrayToPattern(array);\n};\n/**\n *\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n * @param {any[]} array\n */\n\nconst hasDuplicates = array => {\n return new Set(array).size !== array.length;\n};\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n * @param {string} str\n * @return {string}\n */\n\nconst escape_regex = str => {\n return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n/**\n * Return the max length of array values\n * @param {string[]} array\n *\n */\n\nconst maxValueLength = array => {\n return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0);\n};\n/**\n * @param {string} str\n */\n\nconst unicodeLength = str => {\n return toArray(str).length;\n};\n/**\n * @param {any} p\n * @return {any[]}\n */\n\nconst toArray = p => Array.from(p);\n\nexport { arrayToPattern, escape_regex, hasDuplicates, maxValueLength, sequencePattern, setToPattern, toArray, unicodeLength };\n//# sourceMappingURL=regex.js.map\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n * @param {string} input\n * @return {string[][]}\n */\nconst allSubstrings = input => {\n if (input.length === 1) return [[input]];\n /** @type {string[][]} */\n\n let result = [];\n const start = input.substring(1);\n const suba = allSubstrings(start);\n suba.forEach(function (subresult) {\n let tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n return result;\n};\n\nexport { allSubstrings };\n//# sourceMappingURL=strings.js.map\n","/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { asciifold } from '@orchidjs/unicode-variants';\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nconst getAttr = (obj, name) => {\n if (!obj) return;\n return obj[name];\n};\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\n\nconst getAttrNesting = (obj, name) => {\n if (!obj) return;\n var part,\n names = name.split(\".\");\n\n while ((part = names.shift()) && (obj = obj[part]));\n\n return obj;\n};\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\n\nconst scoreValue = (value, token, weight) => {\n var score, pos;\n if (!value) return 0;\n value = value + '';\n if (token.regex == null) return 0;\n pos = value.search(token.regex);\n if (pos === -1) return 0;\n score = token.string.length / value.length;\n if (pos === 0) score += 0.5;\n return score * weight;\n};\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\n\nconst propToArray = (obj, key) => {\n var value = obj[key];\n if (typeof value == 'function') return value;\n\n if (value && !Array.isArray(value)) {\n obj[key] = [value];\n }\n};\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\n\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\nconst cmp = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n a = asciifold(a + '').toLowerCase();\n b = asciifold(b + '').toLowerCase();\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n};\n\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue };\n//# sourceMappingURL=utils.js.map\n","/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { iterate, cmp, propToArray, getAttrNesting, getAttr, scoreValue } from './utils.js';\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue } from './utils.js';\nimport { escape_regex, getPattern } from '@orchidjs/unicode-variants';\nexport { getPattern } from '@orchidjs/unicode-variants';\n\n/**\n * sifter.js\n * Copyright (c) 2013–2020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\nclass Sifter {\n // []|{};\n\n /**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n */\n constructor(items, settings) {\n this.items = void 0;\n this.settings = void 0;\n this.items = items;\n this.settings = settings || {\n diacritics: true\n };\n }\n\n /**\n * Splits a search string into an array of individual\n * regexps to be used to match results.\n *\n */\n tokenize(query, respect_word_boundaries, weights) {\n if (!query || !query.length) return [];\n const tokens = [];\n const words = query.split(/\\s+/);\n var field_regex;\n\n if (weights) {\n field_regex = new RegExp('^(' + Object.keys(weights).map(escape_regex).join('|') + ')\\:(.*)$');\n }\n\n words.forEach(word => {\n let field_match;\n let field = null;\n let regex = null; // look for \"field:query\" tokens\n\n if (field_regex && (field_match = word.match(field_regex))) {\n field = field_match[1];\n word = field_match[2];\n }\n\n if (word.length > 0) {\n if (this.settings.diacritics) {\n regex = getPattern(word) || null;\n } else {\n regex = escape_regex(word);\n }\n\n if (regex && respect_word_boundaries) regex = \"\\\\b\" + regex;\n }\n\n tokens.push({\n string: word,\n regex: regex ? new RegExp(regex, 'iu') : null,\n field: field\n });\n });\n return tokens;\n }\n\n /**\n * Returns a function to be used to score individual results.\n *\n * Good matches will have a higher score than poor matches.\n * If an item is not a match, 0 will be returned by the function.\n *\n * @returns {T.ScoreFn}\n */\n getScoreFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getScoreFunction(search);\n }\n /**\n * @returns {T.ScoreFn}\n *\n */\n\n\n _getScoreFunction(search) {\n const tokens = search.tokens,\n token_count = tokens.length;\n\n if (!token_count) {\n return function () {\n return 0;\n };\n }\n\n const fields = search.options.fields,\n weights = search.weights,\n field_count = fields.length,\n getAttrFn = search.getAttrFn;\n\n if (!field_count) {\n return function () {\n return 1;\n };\n }\n /**\n * Calculates the score of an object\n * against the search query.\n *\n */\n\n\n const scoreObject = function () {\n if (field_count === 1) {\n return function (token, data) {\n const field = fields[0].field;\n return scoreValue(getAttrFn(data, field), token, weights[field] || 1);\n };\n }\n\n return function (token, data) {\n var sum = 0; // is the token specific to a field?\n\n if (token.field) {\n const value = getAttrFn(data, token.field);\n\n if (!token.regex && value) {\n sum += 1 / field_count;\n } else {\n sum += scoreValue(value, token, 1);\n }\n } else {\n iterate(weights, (weight, field) => {\n sum += scoreValue(getAttrFn(data, field), token, weight);\n });\n }\n\n return sum / field_count;\n };\n }();\n\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n\n if (search.options.conjunction === 'and') {\n return function (data) {\n var score,\n sum = 0;\n\n for (let token of tokens) {\n score = scoreObject(token, data);\n if (score <= 0) return 0;\n sum += score;\n }\n\n return sum / token_count;\n };\n } else {\n return function (data) {\n var sum = 0;\n iterate(tokens, token => {\n sum += scoreObject(token, data);\n });\n return sum / token_count;\n };\n }\n }\n\n /**\n * Returns a function that can be used to compare two\n * results, for sorting purposes. If no sorting should\n * be performed, `null` will be returned.\n *\n * @return function(a,b)\n */\n getSortFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getSortFunction(search);\n }\n\n _getSortFunction(search) {\n var implicit_score,\n sort_flds = [];\n const self = this,\n options = search.options,\n sort = !search.query && options.sort_empty ? options.sort_empty : options.sort;\n\n if (typeof sort == 'function') {\n return sort.bind(this);\n }\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n */\n\n\n const get_field = function get_field(name, result) {\n if (name === '$score') return result.score;\n return search.getAttrFn(self.items[result.id], name);\n }; // parse options\n\n\n if (sort) {\n for (let s of sort) {\n if (search.query || s.field !== '$score') {\n sort_flds.push(s);\n }\n }\n } // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n\n\n if (search.query) {\n implicit_score = true;\n\n for (let fld of sort_flds) {\n if (fld.field === '$score') {\n implicit_score = false;\n break;\n }\n }\n\n if (implicit_score) {\n sort_flds.unshift({\n field: '$score',\n direction: 'desc'\n });\n } // without a search.query, all items will have the same score\n\n } else {\n sort_flds = sort_flds.filter(fld => fld.field !== '$score');\n } // build function\n\n\n const sort_flds_count = sort_flds.length;\n\n if (!sort_flds_count) {\n return null;\n }\n\n return function (a, b) {\n var result, field;\n\n for (let sort_fld of sort_flds) {\n field = sort_fld.field;\n let multiplier = sort_fld.direction === 'desc' ? -1 : 1;\n result = multiplier * cmp(get_field(field, a), get_field(field, b));\n if (result) return result;\n }\n\n return 0;\n };\n }\n\n /**\n * Parses a search query and returns an object\n * with tokens and fields ready to be populated\n * with results.\n *\n */\n prepareSearch(query, optsUser) {\n const weights = {};\n var options = Object.assign({}, optsUser);\n propToArray(options, 'sort');\n propToArray(options, 'sort_empty'); // convert fields to new format\n\n if (options.fields) {\n propToArray(options, 'fields');\n const fields = [];\n options.fields.forEach(field => {\n if (typeof field == 'string') {\n field = {\n field: field,\n weight: 1\n };\n }\n\n fields.push(field);\n weights[field.field] = 'weight' in field ? field.weight : 1;\n });\n options.fields = fields;\n }\n\n return {\n options: options,\n query: query.toLowerCase().trim(),\n tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n total: 0,\n items: [],\n weights: weights,\n getAttrFn: options.nesting ? getAttrNesting : getAttr\n };\n }\n\n /**\n * Searches through all items and returns a sorted array of matches.\n *\n */\n search(query, options) {\n var self = this,\n score,\n search;\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query; // generate result scoring function\n\n const fn_score = options.score || self._getScoreFunction(search); // perform search and sort\n\n\n if (query.length) {\n iterate(self.items, (item, id) => {\n score = fn_score(item);\n\n if (options.filter === false || score > 0) {\n search.items.push({\n 'score': score,\n 'id': id\n });\n }\n });\n } else {\n iterate(self.items, (_, id) => {\n search.items.push({\n 'score': 1,\n 'id': id\n });\n });\n }\n\n const fn_sort = self._getSortFunction(search);\n\n if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n search.total = search.items.length;\n\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n\n return search;\n }\n\n}\n\nexport { Sifter };\n//# sourceMappingURL=sifter.js.map\n","\nimport { asciifold } from '@orchidjs/unicode-variants';\nimport * as T from './types';\n\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tif( token.regex == null ) return 0;\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\n\tif( typeof value == 'function' ) return value;\n\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n","\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n","/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer -> <span class=\"highlight\">Soc</span>cer for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n","export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n","\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload : null, // function(query, callback) { ... }\n\tscore : null, // function(search) { ... }\n\tonInitialize : null, // function() { ... }\n\tonChange : null, // function(value) { ... }\n\tonItemAdd : null, // function(value, $item) { ... }\n\tonItemRemove : null, // function(value) { ... }\n\tonClear : null, // function() { ... }\n\tonOptionAdd : null, // function(value, data) { ... }\n\tonOptionRemove : null, // function(value) { ... }\n\tonOptionClear : null, // function() { ... }\n\tonOptionGroupAdd : null, // function(id, data) { ... }\n\tonOptionGroupRemove : null, // function(id) { ... }\n\tonOptionGroupClear : null, // function() { ... }\n\tonDropdownOpen : null, // function(dropdown) { ... }\n\tonDropdownClose : null, // function(dropdown) { ... }\n\tonType : null, // function(str) { ... }\n\tonDelete : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n","\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"');\n};\n\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n","import defaults from './defaults';\nimport { hash_key } from './utils';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index';\nimport { iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput } from './types/index';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data = readData(option);\n\t\t\t\toption_data[field_label] = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value] = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n","\nimport MicroEvent from './contrib/microevent';\nimport MicroPlugin from './contrib/microplugin';\nimport { Sifter, iterate } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight';\nimport * as constants from './constants';\nimport getSettings from './getSettings';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend\n} from './utils';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\tself.control_input.type\t= input.type;\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>…</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize' : 'onInitialize',\n\t\t\t'change' : 'onChange',\n\t\t\t'item_add' : 'onItemAdd',\n\t\t\t'item_remove' : 'onItemRemove',\n\t\t\t'item_select' : 'onItemSelect',\n\t\t\t'clear' : 'onClear',\n\t\t\t'option_add' : 'onOptionAdd',\n\t\t\t'option_remove' : 'onOptionRemove',\n\t\t\t'option_clear' : 'onOptionClear',\n\t\t\t'optgroup_add' : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear' : 'onOptionGroupClear',\n\t\t\t'dropdown_open' : 'onDropdownOpen',\n\t\t\t'dropdown_close' : 'onDropdownClose',\n\t\t\t'type' : 'onType',\n\t\t\t'load' : 'onLoad',\n\t\t\t'focus' : 'onFocus',\n\t\t\t'blur' : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif (self.isDisabled) {\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.showInput();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.hideInput();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.hideInput();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Hides the input element out of view, while\n\t * retaining its focus.\n\t * @deprecated 1.3\n\t */\n\thideInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Restores input visibility.\n\t * @deprecated 1.3\n\t */\n\tshowInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif (self.isDisabled) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort : sort,\n\t\t\tnesting : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self = this;\n\t\tvar options = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\t\tconst groups: {[key:string]:DocumentFragment} = {};\n\n\t\tconst groups_order:string[]\t= [];\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option\t\t\t= null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup = option[self.settings.optgroupField] || '';\n\t\t\toptgroups = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\t\t\t\tif (!self.optgroups.hasOwnProperty(optgroup)) {\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}\n\n\t\t\t\tlet group_fragment = groups[optgroup];\n\t\t\t\tif( group_fragment === undefined ){\n\t\t\t\t\tgroup_fragment = document.createDocumentFragment();\n\t\t\t\t\tgroups_order.push(optgroup);\n\t\t\t\t}\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tgroups[optgroup] = group_fragment;\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\tconst grp_a\t\t= self.optgroups[a];\n\t\t\t\tconst grp_b\t\t= self.optgroups[b];\n\t\t\t\tconst a_order\t= grp_a && grp_a.$order || 0;\n\t\t\t\tconst b_order\t= grp_b && grp_b.$order || 0;\n\t\t\t\treturn a_order - b_order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (optgroup:string) => {\n\n\t\t\tlet group_fragment = groups[optgroup];\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option) ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t * this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.hideInput();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop : top + 'px',\n\t\t\tleft : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.showInput();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.focus_node.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tthis.close();\n\t\tself.lock();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.focus_node.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n","/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames : [],\n\t\t\tsettings : {},\n\t\t\trequested : {},\n\t\t\tloaded : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn' : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t * ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' + name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n","import TomSelect from './tom-select';\n\nimport caret_position from './plugins/caret_position/plugin';\nimport dropdown_input from './plugins/dropdown_input/plugin';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin';\nimport remove_button from './plugins/remove_button/plugin';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin';\n\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\n\nexport default TomSelect;\n","/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { nodeIndex, removeClasses } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { getDom, addClasses } from '../../vanilla';\nimport { addEvent, preventDefault } from '../../utils';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n\n};\n","/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n","/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption, TomItem } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel : '×',\n\t\t\ttitle : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n","/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n","var map = {\n\t\"./decidim/avatar-multiuser.png\": 3342,\n\t\"./decidim/brands/google.svg\": 369,\n\t\"./decidim/cc-badge.png\": 8640,\n\t\"./decidim/decidim-logo.svg\": 7196,\n\t\"./decidim/default-avatar.svg\": 5828,\n\t\"./decidim/gamification/badges/decidim_gamification_badges_followers.svg\": 6144,\n\t\"./decidim/icons.svg\": 9839,\n\t\"./decidim/pattern.png\": 9440,\n\t\"./decidim/placeholder-card-g.svg\": 2325,\n\t\"./decidim/placeholder-card-l.svg\": 4942,\n\t\"./decidim/placeholder.jpg\": 3965,\n\t\"./decidim/remixicon.symbol.svg\": 5249,\n\t\"./decidim/vendor/leaflet/layers-2x.png\": 2496,\n\t\"./decidim/vendor/leaflet/layers.png\": 8207,\n\t\"./decidim/vendor/leaflet/marker-icon-2x.png\": 218,\n\t\"./decidim/vendor/leaflet/marker-icon.png\": 3217,\n\t\"./decidim/vendor/leaflet/marker-shadow.png\": 622,\n\t\"./decidim/vendor/social-share-button/douban.svg\": 3168,\n\t\"./decidim/vendor/social-share-button/email.svg\": 1949,\n\t\"./decidim/vendor/social-share-button/facebook.svg\": 6771,\n\t\"./decidim/vendor/social-share-button/google_bookmark.svg\": 2685,\n\t\"./decidim/vendor/social-share-button/hacker_news.svg\": 4205,\n\t\"./decidim/vendor/social-share-button/linkedin.svg\": 581,\n\t\"./decidim/vendor/social-share-button/odnoklassniki.svg\": 8022,\n\t\"./decidim/vendor/social-share-button/pinterest.svg\": 1267,\n\t\"./decidim/vendor/social-share-button/reddit.svg\": 2263,\n\t\"./decidim/vendor/social-share-button/telegram.svg\": 2426,\n\t\"./decidim/vendor/social-share-button/tumblr.svg\": 857,\n\t\"./decidim/vendor/social-share-button/twitter.svg\": 780,\n\t\"./decidim/vendor/social-share-button/vkontakte.svg\": 7906,\n\t\"./decidim/vendor/social-share-button/wechat.svg\": 3885,\n\t\"./decidim/vendor/social-share-button/whatsapp.svg\": 7149,\n\t\"./decidim/vendor/social-share-button/x.svg\": 2861,\n\t\"./decidim/vendor/social-share-button/xing.svg\": 6339\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 2373;","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\n/* global Bun -- Bun case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n var version = global.Bun.version.split('.');\n return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n var firstParamIndex = hasTimeArg ? 2 : 1;\n return WRAP ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n var fn = isCallable(handler) ? handler : Function(handler);\n var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n var callback = boundArgs ? function () {\n apply(fn, this, params);\n } : fn;\n return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n } : scheduler;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.33.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.33.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n clearImmediate: clearImmediate\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n setImmediate: setImmediate\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/decidim-packs/\";","import $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n /**\n * Returns a boolean for RTL support\n */\nfunction rtl() {\n return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n let str = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n const charsLength = chars.length;\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n var transitions = {\n 'transition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend'\n };\n var elem = document.createElement('div'),\n end;\n\n for (let transition in transitions){\n if (typeof elem.style[transition] !== 'undefined'){\n end = transitions[transition];\n }\n }\n if (end) {\n return end;\n } else {\n setTimeout(function(){\n $elem.triggerHandler('transitionend', [$elem]);\n }, 1);\n return 'transitionend';\n }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n const didLoad = document.readyState === 'complete';\n const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n const cb = () => $elem.triggerHandler(eventType);\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad)\n setTimeout(cb);\n else\n $(window).one('load', cb);\n }\n\n return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n * (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n * outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n return function leaveEventHandler(eLeave, ...rest) {\n const callback = handler.bind(this, eLeave, ...rest);\n\n // The mouse left: call the given callback if the mouse entered elsewhere\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n // Otherwise, check if the mouse actually left the window.\n // In firefox if the user switched between windows, the window sill have the focus by the time\n // the event is triggered. We have to debounce the event to test this case.\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n // Otherwise, wait for the mouse to reeapear outside of the element,\n if (!ignoreReappear) {\n $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n // Fill where the mouse finally entered.\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n\n }, 0);\n };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n","import $ from 'jquery';\n\n// Default set of media queries\n// const defaultQueries = {\n// 'default' : 'only screen',\n// landscape : 'only screen and (orientation: landscape)',\n// portrait : 'only screen and (orientation: portrait)',\n// retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n// 'only screen and (min--moz-device-pixel-ratio: 2),' +\n// 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n// 'only screen and (min-device-pixel-ratio: 2),' +\n// 'only screen and (min-resolution: 192dpi),' +\n// 'only screen and (min-resolution: 2dppx)'\n// };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return this;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('<meta class=\"foundation-mq\" name=\"foundation-mq\" content>').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \"<size> <modifier>\", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).on('resize.zf.trigger', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.8.1';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n if(typeof plugin[prop] === 'function'){\n plugin[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this.object(Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function() {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n /* eslint-disable no-extend-native */\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","var Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver, bottomOver, leftOver, rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n }\n else {\n bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset\n break;\n case 'center':\n topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n break;\n }\n break;\n }\n }\n\n return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n","import $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n var unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function(){\n // Check if image is loaded\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n }\n else {\n // If the above check failed, simulate loading on detached element.\n var image = new Image();\n // Still count image as loaded if it finalizes with an error.\n var events = \"load.zf.images error.zf.images\";\n $(image).one(events, function me(){\n // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n $(this).off(events, me);\n singleImageLoaded();\n });\n image.src = $(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexport { onImagesLoaded };\n","/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if(!$element) {return false; }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n })\n .sort( function( a, b ) {\n if ($(a).attr('tabindex') === $(b).attr('tabindex')) {\n return 0;\n }\n let aTabIndex = parseInt($(a).attr('tabindex'), 10),\n bTabIndex = parseInt($(b).attr('tabindex'), 10);\n // Undefined is treated the same as 0\n if (typeof $(a).attr('tabindex') === 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof $(b).attr('tabindex') === 'undefined' && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex === 0 && bTabIndex > 0) {\n return 1;\n }\n if (bTabIndex === 0 && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex < bTabIndex) {\n return -1;\n }\n if (aTabIndex > bTabIndex) {\n return 1;\n }\n });\n}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) {\n if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n }\n return k;\n}\n\nexport {Keyboard};\n","import $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","import $ from 'jquery';\n\nconst Nest = {\n Feather(menu, type = 'zf') {\n menu.attr('role', 'menubar');\n menu.find('a').attr({'role': 'menuitem'});\n\n var items = menu.find('li').attr({'role': 'none'}),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`,\n applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n items.each(function() {\n var $item = $(this),\n $sub = $item.children('ul');\n\n if ($sub.length) {\n $item.addClass(hasSubClass);\n if(applyAria) {\n const firstItem = $item.children('a:first');\n firstItem.attr({\n 'aria-haspopup': true,\n 'aria-label': firstItem.attr('aria-label') || firstItem.text()\n });\n // Note: Drilldowns behave differently in how they hide, and so need\n // additional attributes. We should look if this possibly over-generalized\n // utility (Nest) is appropriate when we rework menus in 6.4\n if(type === 'drilldown') {\n $item.attr({'aria-expanded': false});\n }\n }\n $sub\n .addClass(`submenu ${subMenuClass}`)\n .attr({\n 'data-submenu': '',\n 'role': 'menubar'\n });\n if(type === 'drilldown') {\n $sub.attr({'aria-hidden': true});\n }\n }\n\n if ($item.parent('[data-submenu]').length) {\n $item.addClass(`is-submenu-item ${subItemClass}`);\n }\n });\n\n return;\n },\n\n Burn(menu, type) {\n var //items = menu.find('li'),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`;\n\n menu\n .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n .removeAttr('data-submenu').css('display', '');\n\n }\n}\n\nexport {Nest};\n","function Timer(elem, options, cb) {\n var _this = this,\n duration = options.duration,//options is an object for easily adding features later.\n nameSpace = Object.keys(elem.data())[0] || 'timer',\n remain = -1,\n start,\n timer;\n\n this.isPaused = false;\n\n this.restart = function() {\n remain = -1;\n clearTimeout(timer);\n this.start();\n }\n\n this.start = function() {\n this.isPaused = false;\n // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n remain = remain <= 0 ? duration : remain;\n elem.data('paused', false);\n start = Date.now();\n timer = setTimeout(function(){\n if(options.infinite){\n _this.restart();//rerun the timer.\n }\n if (cb && typeof cb === 'function') { cb(); }\n }, remain);\n elem.trigger(`timerstart.zf.${nameSpace}`);\n }\n\n this.pause = function() {\n this.isPaused = true;\n //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n elem.data('paused', true);\n var end = Date.now();\n remain = remain - (end - start);\n elem.trigger(`timerpaused.zf.${nameSpace}`);\n }\n}\n\nexport {Timer};\n","//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\n// function teardown() {\n// this.removeEventListener('touchstart', onTouchStart);\n// }\n\nclass SpotSwipe {\n constructor() {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this._init();\n }\n\n _init() {\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function() {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function() {\n $.fn.addTouch = function(){\n this.each(function(i, el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event) {\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function () {\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","import $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n})();\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).on(trigger, function() {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10); //default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener(250);\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function (__, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","import { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n if (this.hasOwnProperty(prop)) {\n this[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\n\n/**\n * Abide module.\n * @module foundation.abide\n */\n\nclass Abide extends Plugin {\n /**\n * Creates a new instance of Abide.\n * @class\n * @name Abide\n * @fires Abide#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options = {}) {\n this.$element = element;\n this.options = $.extend(true, {}, Abide.defaults, this.$element.data(), options);\n this.isEnabled = true;\n this.formnovalidate = null;\n\n this.className = 'Abide'; // ie9 back compat\n this._init();\n }\n\n /**\n * Initializes the Abide plugin and calls functions to get Abide functioning on load.\n * @private\n */\n _init() {\n this.$inputs = $.merge( // Consider as input to validate:\n this.$element.find('input').not('[type=\"submit\"]'), // * all input fields expect submit\n this.$element.find('textarea, select') // * all textareas and select fields\n );\n this.$submits = this.$element.find('[type=\"submit\"]');\n const $globalErrors = this.$element.find('[data-abide-error]');\n\n // Add a11y attributes to all fields\n if (this.options.a11yAttributes) {\n this.$inputs.each((i, input) => this.addA11yAttributes($(input)));\n $globalErrors.each((i, error) => this.addGlobalErrorA11yAttributes($(error)));\n }\n\n this._events();\n }\n\n /**\n * Initializes events for Abide.\n * @private\n */\n _events() {\n this.$element.off('.abide')\n .on('reset.zf.abide', () => {\n this.resetForm();\n })\n .on('submit.zf.abide', () => {\n return this.validateForm();\n });\n\n this.$submits\n .off('click.zf.abide keydown.zf.abide')\n .on('click.zf.abide keydown.zf.abide', (e) => {\n if (!e.key || (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n this.formnovalidate = e.target.getAttribute('formnovalidate') !== null;\n this.$element.submit();\n }\n });\n\n if (this.options.validateOn === 'fieldChange') {\n this.$inputs\n .off('change.zf.abide')\n .on('change.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n\n if (this.options.liveValidate) {\n this.$inputs\n .off('input.zf.abide')\n .on('input.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n\n if (this.options.validateOnBlur) {\n this.$inputs\n .off('blur.zf.abide')\n .on('blur.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n }\n\n /**\n * Calls necessary functions to update Abide upon DOM change\n * @private\n */\n _reflow() {\n this._init();\n }\n\n /**\n * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled\n * @returns {Boolean}\n * @private\n */\n _validationIsDisabled() {\n if (this.isEnabled === false) { // whole validation disabled\n return true;\n } else if (typeof this.formnovalidate === 'boolean') { // triggered by $submit\n return this.formnovalidate;\n }\n // triggered by Enter in non-submit input\n return this.$submits.length ? this.$submits[0].getAttribute('formnovalidate') !== null : false;\n }\n\n /**\n * Enables the whole validation\n */\n enableValidation() {\n this.isEnabled = true;\n }\n\n /**\n * Disables the whole validation\n */\n disableValidation() {\n this.isEnabled = false;\n }\n\n /**\n * Checks whether or not a form element has the required attribute and if it's checked or not\n * @param {Object} element - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n requiredCheck($el) {\n if (!$el.attr('required')) return true;\n\n var isGood = true;\n\n switch ($el[0].type) {\n case 'checkbox':\n isGood = $el[0].checked;\n break;\n\n case 'select':\n case 'select-one':\n case 'select-multiple':\n var opt = $el.find('option:selected');\n if (!opt.length || !opt.val()) isGood = false;\n break;\n\n default:\n if (!$el.val() || !$el.val().length) isGood = false;\n }\n\n return isGood;\n }\n\n /**\n * Get:\n * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:\n * 1. The element's direct sibling('s).\n * 2. The element's parent's children.\n * - Element(s) with the attribute `[data-form-error-for]` set with the element's id.\n *\n * This allows for multiple form errors per input, though if none are found, no form errors will be shown.\n *\n * @param {Object} $el - jQuery object to use as reference to find the form error selector.\n * @param {String[]} [failedValidators] - List of failed validators.\n * @returns {Object} jQuery object with the selector.\n */\n findFormError($el, failedValidators) {\n var id = $el.length ? $el[0].id : '';\n var $error = $el.siblings(this.options.formErrorSelector);\n\n if (!$error.length) {\n $error = $el.parent().find(this.options.formErrorSelector);\n }\n\n if (id) {\n $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"]`));\n }\n\n if (!!failedValidators) {\n $error = $error.not('[data-form-error-on]')\n\n failedValidators.forEach((v) => {\n $error = $error.add($el.siblings(`[data-form-error-on=\"${v}\"]`));\n $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"][data-form-error-on=\"${v}\"]`));\n });\n }\n\n return $error;\n }\n\n /**\n * Get the first element in this order:\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findLabel($el) {\n var id = $el[0].id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n return $el.closest('label');\n }\n\n return $label;\n }\n\n /**\n * Get the set of labels associated with a set of radio els in this order\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findRadioLabels($els) {\n var labels = $els.map((i, el) => {\n var id = el.id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n $label = $(el).closest('label');\n }\n return $label[0];\n });\n\n return $(labels);\n }\n\n /**\n * Get the set of labels associated with a set of checkbox els in this order\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findCheckboxLabels($els) {\n var labels = $els.map((i, el) => {\n var id = el.id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n $label = $(el).closest('label');\n }\n return $label[0];\n });\n\n return $(labels);\n }\n\n /**\n * Adds the CSS error class as specified by the Abide settings to the label, input, and the form\n * @param {Object} $el - jQuery object to add the class to\n * @param {String[]} [failedValidators] - List of failed validators.\n */\n addErrorClasses($el, failedValidators) {\n var $label = this.findLabel($el);\n var $formError = this.findFormError($el, failedValidators);\n\n if ($label.length) {\n $label.addClass(this.options.labelErrorClass);\n }\n\n if ($formError.length) {\n $formError.addClass(this.options.formErrorClass);\n }\n\n $el.addClass(this.options.inputErrorClass).attr({\n 'data-invalid': '',\n 'aria-invalid': true\n });\n\n if ($formError.filter(':visible').length) {\n this.addA11yErrorDescribe($el, $formError);\n }\n }\n\n /**\n * Adds [for] and [role=alert] attributes to all form error targetting $el,\n * and [aria-describedby] attribute to $el toward the first form error.\n * @param {Object} $el - jQuery object\n */\n addA11yAttributes($el) {\n let $errors = this.findFormError($el);\n let $labels = $errors.filter('label');\n if (!$errors.length) return;\n\n let $error = $errors.filter(':visible').first();\n if ($error.length) {\n this.addA11yErrorDescribe($el, $error);\n }\n\n if ($labels.filter('[for]').length < $labels.length) {\n // Get the input ID or create one\n let elemId = $el.attr('id');\n if (typeof elemId === 'undefined') {\n elemId = GetYoDigits(6, 'abide-input');\n $el.attr('id', elemId);\n }\n\n // For each label targeting $el, set [for] if it is not set.\n $labels.each((i, label) => {\n const $label = $(label);\n if (typeof $label.attr('for') === 'undefined')\n $label.attr('for', elemId);\n });\n }\n\n // For each error targeting $el, set [role=alert] if it is not set.\n $errors.each((i, label) => {\n const $label = $(label);\n if (typeof $label.attr('role') === 'undefined')\n $label.attr('role', 'alert');\n }).end();\n }\n\n addA11yErrorDescribe($el, $error) {\n if (typeof $el.attr('aria-describedby') !== 'undefined') return;\n\n // Set [aria-describedby] on the input toward the first form error if it is not set\n // Get the first error ID or create one\n let errorId = $error.attr('id');\n if (typeof errorId === 'undefined') {\n errorId = GetYoDigits(6, 'abide-error');\n $error.attr('id', errorId);\n }\n\n $el.attr('aria-describedby', errorId).data('abide-describedby', true);\n }\n\n /**\n * Adds [aria-live] attribute to the given global form error $el.\n * @param {Object} $el - jQuery object to add the attribute to\n */\n addGlobalErrorA11yAttributes($el) {\n if (typeof $el.attr('aria-live') === 'undefined')\n $el.attr('aria-live', this.options.a11yErrorLevel);\n }\n\n /**\n * Remove CSS error classes etc from an entire radio button group\n * @param {String} groupName - A string that specifies the name of a radio button group\n *\n */\n removeRadioErrorClasses(groupName) {\n var $els = this.$element.find(`:radio[name=\"${groupName}\"]`);\n var $labels = this.findRadioLabels($els);\n var $formErrors = this.findFormError($els);\n\n if ($labels.length) {\n $labels.removeClass(this.options.labelErrorClass);\n }\n\n if ($formErrors.length) {\n $formErrors.removeClass(this.options.formErrorClass);\n }\n\n $els.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n\n }\n\n /**\n * Remove CSS error classes etc from an entire checkbox group\n * @param {String} groupName - A string that specifies the name of a checkbox group\n *\n */\n removeCheckboxErrorClasses(groupName) {\n var $els = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n var $labels = this.findCheckboxLabels($els);\n var $formErrors = this.findFormError($els);\n\n if ($labels.length) {\n $labels.removeClass(this.options.labelErrorClass);\n }\n\n if ($formErrors.length) {\n $formErrors.removeClass(this.options.formErrorClass);\n }\n\n $els.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n\n }\n\n /**\n * Removes CSS error class as specified by the Abide settings from the label, input, and the form\n * @param {Object} $el - jQuery object to remove the class from\n */\n removeErrorClasses($el) {\n // radios need to clear all of the els\n if ($el[0].type === 'radio') {\n return this.removeRadioErrorClasses($el.attr('name'));\n }\n // checkboxes need to clear all of the els\n else if ($el[0].type === 'checkbox') {\n return this.removeCheckboxErrorClasses($el.attr('name'));\n }\n\n var $label = this.findLabel($el);\n var $formError = this.findFormError($el);\n\n if ($label.length) {\n $label.removeClass(this.options.labelErrorClass);\n }\n\n if ($formError.length) {\n $formError.removeClass(this.options.formErrorClass);\n }\n\n $el.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n\n if ($el.data('abide-describedby')) {\n $el.removeAttr('aria-describedby').removeData('abide-describedby');\n }\n }\n\n /**\n * Goes through a form to find inputs and proceeds to validate them in ways specific to their type.\n * Ignores inputs with data-abide-ignore, type=\"hidden\" or disabled attributes set\n * @fires Abide#invalid\n * @fires Abide#valid\n * @param {Object} element - jQuery object to validate, should be an HTML input\n * @returns {Boolean} goodToGo - If the input is valid or not.\n */\n validateInput($el) {\n var clearRequire = this.requiredCheck($el),\n validator = $el.attr('data-validator'),\n failedValidators = [],\n manageErrorClasses = true;\n\n // skip validation if disabled\n if (this._validationIsDisabled()) {\n return true;\n }\n\n // don't validate ignored inputs or hidden inputs or disabled inputs\n if ($el.is('[data-abide-ignore]') || $el.is('[type=\"hidden\"]') || $el.is('[disabled]')) {\n return true;\n }\n\n switch ($el[0].type) {\n case 'radio':\n this.validateRadio($el.attr('name')) || failedValidators.push('required');\n break;\n\n case 'checkbox':\n this.validateCheckbox($el.attr('name')) || failedValidators.push('required');\n // validateCheckbox() adds/removes error classes\n manageErrorClasses = false;\n break;\n\n case 'select':\n case 'select-one':\n case 'select-multiple':\n clearRequire || failedValidators.push('required');\n break;\n\n default:\n clearRequire || failedValidators.push('required');\n this.validateText($el) || failedValidators.push('pattern');\n }\n\n if (validator) {\n const required = $el.attr('required') ? true : false;\n\n validator.split(' ').forEach((v) => {\n this.options.validators[v]($el, required, $el.parent()) || failedValidators.push(v);\n });\n }\n\n if ($el.attr('data-equalto')) {\n this.options.validators.equalTo($el) || failedValidators.push('equalTo');\n }\n\n var goodToGo = failedValidators.length === 0;\n var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';\n\n if (goodToGo) {\n // Re-validate inputs that depend on this one with equalto\n const dependentElements = this.$element.find(`[data-equalto=\"${$el.attr('id')}\"]`);\n if (dependentElements.length) {\n let _this = this;\n dependentElements.each(function() {\n if ($(this).val()) {\n _this.validateInput($(this));\n }\n });\n }\n }\n\n if (manageErrorClasses) {\n if (!goodToGo) {\n this.addErrorClasses($el, failedValidators);\n } else {\n this.removeErrorClasses($el);\n }\n }\n\n /**\n * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`\n * Trigger includes the DOM element of the input.\n * @event Abide#valid\n * @event Abide#invalid\n */\n $el.trigger(message, [$el]);\n\n return goodToGo;\n }\n\n /**\n * Goes through a form and if there are any invalid inputs, it will display the form error element\n * @returns {Boolean} noError - true if no errors were detected...\n * @fires Abide#formvalid\n * @fires Abide#forminvalid\n */\n validateForm() {\n var acc = [];\n var _this = this;\n var checkboxGroupName;\n\n // Remember first form submission to prevent specific checkbox validation (more than one required) until form got initially submitted\n if (!this.initialized) {\n this.initialized = true;\n }\n\n // skip validation if disabled\n if (this._validationIsDisabled()) {\n this.formnovalidate = null;\n return true;\n }\n\n this.$inputs.each(function() {\n\n // Only use one checkbox per group since validateCheckbox() iterates over all associated checkboxes\n if ($(this)[0].type === 'checkbox') {\n if ($(this).attr('name') === checkboxGroupName) return true;\n checkboxGroupName = $(this).attr('name');\n }\n\n acc.push(_this.validateInput($(this)));\n });\n\n var noError = acc.indexOf(false) === -1;\n\n this.$element.find('[data-abide-error]').each((i, elem) => {\n const $elem = $(elem);\n // Ensure a11y attributes are set\n if (this.options.a11yAttributes) this.addGlobalErrorA11yAttributes($elem);\n // Show or hide the error\n $elem.css('display', (noError ? 'none' : 'block'));\n });\n\n /**\n * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.\n * Trigger includes the element of the form.\n * @event Abide#formvalid\n * @event Abide#forminvalid\n */\n this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);\n\n return noError;\n }\n\n /**\n * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.\n * @param {Object} $el - jQuery object to validate, should be a text input HTML element\n * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns\n * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified\n */\n validateText($el, pattern) {\n // A pattern can be passed to this function, or it will be infered from the input's \"pattern\" attribute, or it's \"type\" attribute\n pattern = (pattern || $el.attr('data-pattern') || $el.attr('pattern') || $el.attr('type'));\n var inputText = $el.val();\n var valid = true;\n\n if (inputText.length) {\n // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp\n if (this.options.patterns.hasOwnProperty(pattern)) {\n valid = this.options.patterns[pattern].test(inputText);\n }\n // If the pattern name isn't also the type attribute of the field, then test it as a regexp\n else if (pattern !== $el.attr('type')) {\n valid = new RegExp(pattern).test(inputText);\n }\n }\n\n return valid;\n }\n\n /**\n * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.\n * @param {String} groupName - A string that specifies the name of a radio button group\n * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)\n */\n validateRadio(groupName) {\n // If at least one radio in the group has the `required` attribute, the group is considered required\n // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice\n var $group = this.$element.find(`:radio[name=\"${groupName}\"]`);\n var valid = false, required = false;\n\n // For the group to be required, at least one radio needs to be required\n $group.each((i, e) => {\n if ($(e).attr('required')) {\n required = true;\n }\n });\n if (!required) valid=true;\n\n if (!valid) {\n // For the group to be valid, at least one radio needs to be checked\n $group.each((i, e) => {\n if ($(e).prop('checked')) {\n valid = true;\n }\n });\n }\n\n return valid;\n }\n\n /**\n * Determines whether or a not a checkbox input is valid based on whether or not it is required and checked. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all checkboxes in its group.\n * @param {String} groupName - A string that specifies the name of a checkbox group\n * @returns {Boolean} Boolean value depends on whether or not at least one checkbox input has been checked (if it's required)\n */\n validateCheckbox(groupName) {\n // If at least one checkbox in the group has the `required` attribute, the group is considered required\n // Per W3C spec, all checkboxes in a group should have `required`, but we're being nice\n var $group = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n var valid = false, required = false, minRequired = 1, checked = 0;\n\n // For the group to be required, at least one checkbox needs to be required\n $group.each((i, e) => {\n if ($(e).attr('required')) {\n required = true;\n }\n });\n if (!required) valid=true;\n\n if (!valid) {\n // Count checked checkboxes within the group\n // Use data-min-required if available (default: 1)\n $group.each((i, e) => {\n if ($(e).prop('checked')) {\n checked++;\n }\n if (typeof $(e).attr('data-min-required') !== 'undefined') {\n minRequired = parseInt($(e).attr('data-min-required'), 10);\n }\n });\n\n // For the group to be valid, the minRequired amount of checkboxes have to be checked\n if (checked >= minRequired) {\n valid = true;\n }\n }\n\n // Skip validation if more than 1 checkbox have to be checked AND if the form hasn't got submitted yet (otherwise it will already show an error during the first fill in)\n if (this.initialized !== true && minRequired > 1) {\n return true;\n }\n\n // Refresh error class for all input\n $group.each((i, e) => {\n if (!valid) {\n this.addErrorClasses($(e), ['required']);\n } else {\n this.removeErrorClasses($(e));\n }\n });\n\n return valid;\n }\n\n /**\n * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator=\"foo bar baz\"` in a space separated listed.\n * @param {Object} $el - jQuery input element.\n * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.\n * @param {Boolean} required - self explanatory?\n * @returns {Boolean} - true if validations passed.\n */\n matchValidation($el, validators, required) {\n required = required ? true : false;\n\n var clear = validators.split(' ').map((v) => {\n return this.options.validators[v]($el, required, $el.parent());\n });\n return clear.indexOf(false) === -1;\n }\n\n /**\n * Resets form inputs and styles\n * @fires Abide#formreset\n */\n resetForm() {\n var $form = this.$element,\n opts = this.options;\n\n $(`.${opts.labelErrorClass}`, $form).not('small').removeClass(opts.labelErrorClass);\n $(`.${opts.inputErrorClass}`, $form).not('small').removeClass(opts.inputErrorClass);\n $(`${opts.formErrorSelector}.${opts.formErrorClass}`).removeClass(opts.formErrorClass);\n $form.find('[data-abide-error]').css('display', 'none');\n $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n $(':input:radio', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n /**\n * Fires when the form has been reset.\n * @event Abide#formreset\n */\n $form.trigger('formreset.zf.abide', [$form]);\n }\n\n /**\n * Destroys an instance of Abide.\n * Removes error styles and classes from elements, without resetting their values.\n */\n _destroy() {\n var _this = this;\n this.$element\n .off('.abide')\n .find('[data-abide-error]')\n .css('display', 'none');\n\n this.$inputs\n .off('.abide')\n .each(function() {\n _this.removeErrorClasses($(this));\n });\n\n this.$submits\n .off('.abide');\n }\n}\n\n/**\n * Default settings for plugin\n */\nAbide.defaults = {\n /**\n * The default event to validate inputs. Checkboxes and radios validate immediately.\n * Remove or change this value for manual validation.\n * @option\n * @type {?string}\n * @default 'fieldChange'\n */\n validateOn: 'fieldChange',\n\n /**\n * Class to be applied to input labels on failed validation.\n * @option\n * @type {string}\n * @default 'is-invalid-label'\n */\n labelErrorClass: 'is-invalid-label',\n\n /**\n * Class to be applied to inputs on failed validation.\n * @option\n * @type {string}\n * @default 'is-invalid-input'\n */\n inputErrorClass: 'is-invalid-input',\n\n /**\n * Class selector to use to target Form Errors for show/hide.\n * @option\n * @type {string}\n * @default '.form-error'\n */\n formErrorSelector: '.form-error',\n\n /**\n * Class added to Form Errors on failed validation.\n * @option\n * @type {string}\n * @default 'is-visible'\n */\n formErrorClass: 'is-visible',\n\n /**\n * If true, automatically insert when possible:\n * - `[aria-describedby]` on fields\n * - `[role=alert]` on form errors and `[for]` on form error labels\n * - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`).\n * @option\n * @type {boolean}\n * @default true\n */\n a11yAttributes: true,\n\n /**\n * [aria-live] attribute value to be applied on global errors `[data-abide-error]`.\n * Options are: 'assertive', 'polite' and 'off'/null\n * @option\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions\n * @type {string}\n * @default 'assertive'\n */\n a11yErrorLevel: 'assertive',\n\n /**\n * Set to true to validate text inputs on any value change.\n * @option\n * @type {boolean}\n * @default false\n */\n liveValidate: false,\n\n /**\n * Set to true to validate inputs on blur.\n * @option\n * @type {boolean}\n * @default false\n */\n validateOnBlur: false,\n\n patterns: {\n alpha : /^[a-zA-Z]+$/,\n // eslint-disable-next-line camelcase\n alpha_numeric : /^[a-zA-Z0-9]+$/,\n integer : /^[-+]?\\d+$/,\n number : /^[-+]?\\d*(?:[\\.\\,]\\d+)?$/,\n\n // amex, visa, diners\n card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/,\n cvv : /^([0-9]){3,4}$/,\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address\n email : /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,\n\n // From CommonRegexJS (@talyssonoc)\n // https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76\n // For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex.\n url: /^((?:(https?|ftps?|file|ssh|sftp):\\/\\/|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\))+(?:\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\\'\".,<>?\\xab\\xbb\\u201c\\u201d\\u2018\\u2019]))$/,\n\n // abc.de\n domain : /^([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,8}$/,\n\n datetime : /^([0-2][0-9]{3})\\-([0-1][0-9])\\-([0-3][0-9])T([0-5][0-9])\\:([0-5][0-9])\\:([0-5][0-9])(Z|([\\-\\+]([0-1][0-9])\\:00))$/,\n // YYYY-MM-DD\n date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,\n // HH:MM:SS\n time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,\n dateISO : /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/,\n // MM/DD/YYYY\n // eslint-disable-next-line camelcase\n month_day_year : /^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.]\\d{4}$/,\n // DD/MM/YYYY\n // eslint-disable-next-line camelcase\n day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \\/.](0[1-9]|1[012])[- \\/.]\\d{4}$/,\n\n // #FFF or #FFFFFF\n color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,\n\n // Domain || URL\n website: {\n test: (text) => {\n return Abide.defaults.patterns.domain.test(text) || Abide.defaults.patterns.url.test(text);\n }\n }\n },\n\n /**\n * Optional validation functions to be used. `equalTo` being the only default included function.\n * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:\n * el : The jQuery element to validate.\n * @option\n */\n validators: {\n equalTo: function (el) {\n return $(`#${el.attr('data-equalto')}`).val() === el.val();\n }\n }\n}\n\nexport { Abide };\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n /**\n * Creates a new instance of an accordion.\n * @class\n * @name Accordion\n * @fires Accordion#init\n * @param {jQuery} element - jQuery object to make into an accordion.\n * @param {Object} options - a plain object with settings to override the default options.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion'; // ie9 back compat\n this._init();\n\n Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous',\n 'HOME': 'first',\n 'END': 'last',\n });\n }\n\n /**\n * Initializes the accordion by animating the preset active pane(s).\n * @private\n */\n _init() {\n this._isInitializing = true;\n\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n\n this.$tabs.each(function(idx, el) {\n var $el = $(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || GetYoDigits(6, 'accordion'),\n linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'id': linkId,\n 'aria-expanded': false\n });\n\n $content.attr({'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n // Save up the initial hash to return to it later when going back in history\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var $anchor = anchor && $(anchor);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, open it (if not already active)\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n this._openSingleTab($anchor);\n }\n }\n // Otherwise, close everything\n else {\n this._closeAllTabs();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n onLoad($(window), () => {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n });\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Accordion#deeplink\n */\n this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the accordion.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$tabs.each(function() {\n var $elem = $(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n .on('click.zf.accordion', function(e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function(e) {\n Keyboard.handleKey(e, 'Accordion', {\n toggle: function() {\n _this.toggle($tabContent);\n },\n next: function() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n previous: function() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n first: function() {\n var $a = _this.$tabs.first().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n last: function() {\n var $a = _this.$tabs.last().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Toggles the selected content pane's open/close state.\n * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n * @function\n */\n toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n //either replace or update browser history\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n\n /**\n * Opens the accordion tab defined by `$target`.\n * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n */\n down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand)\n this._openTab($target);\n else\n this._openSingleTab($target);\n }\n\n /**\n * Closes the tab defined by `$target`.\n * It may be ignored if the Accordion options don't allow it.\n *\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n */\n up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n // Don't close the item if it is already closed\n const $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n const $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n\n /**\n * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @function\n * @private\n */\n _openSingleTab($target) {\n // Close all the others active tabs.\n const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n // Then open the target.\n this._openTab($target);\n }\n\n /**\n * Opens the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n * @private\n */\n _openTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done opening.\n * @event Accordion#down\n */\n this.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true)\n $targetItem.removeClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done collapsing up.\n * @event Accordion#up\n */\n this.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes all active tabs\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n\n /**\n * Destroys an instance of an accordion.\n * @fires Accordion#destroyed\n * @function\n */\n _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n }\n}\n\nAccordion.defaults = {\n /**\n * Amount of time to animate the opening of an accordion pane.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Allow the accordion to have multiple open panes.\n * @option\n * @type {boolean}\n * @default false\n */\n multiExpand: false,\n /**\n * Allow the accordion to close all panes.\n * @option\n * @type {boolean}\n * @default false\n */\n allowAllClosed: false,\n /**\n * Link the location hash to the open pane.\n * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n /**\n * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n /**\n * If `deepLink` is enabled, update the browser history with the open accordion\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false\n};\n\nexport { Accordion };\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n /**\n * Creates a new instance of an accordion menu.\n * @class\n * @name AccordionMenu\n * @fires AccordionMenu#init\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('AccordionMenu', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_RIGHT': 'open',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'close',\n 'ESCAPE': 'closeAll'\n });\n }\n\n\n\n /**\n * Initializes the accordion menu by hiding all nested menus.\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n this.$element.attr({\n 'aria-multiselectable': this.options.multiOpen\n });\n\n this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n this.$menuLinks.each(function() {\n var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n $elem = $(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n let $anchor = $elem.children('a');\n $anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-accordion-submenu-item\"></li>');\n }\n\n if (_this.options.submenuToggle) {\n $elem.addClass('has-submenu-toggle');\n $elem.children('a').after('<button id=\"' + linkId + '\" class=\"submenu-toggle\" aria-controls=\"' + subId + '\" aria-expanded=\"' + isActive + '\" title=\"' + _this.options.submenuToggleText + '\"><span class=\"submenu-toggle-text\">' + _this.options.submenuToggleText + '</span></button>');\n } else {\n $elem.attr({\n 'aria-controls': subId,\n 'aria-expanded': isActive,\n 'id': linkId\n });\n }\n $sub.attr({\n 'aria-labelledby': linkId,\n 'aria-hidden': !isActive,\n 'role': 'group',\n 'id': subId\n });\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function() {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n /**\n * Creates a new instance of a drilldown menu.\n * @class\n * @name Drilldown\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the drilldown by creating jQuery collections of elements\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'drilldown');\n\n if(this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n // Set the main menu as current by default (unless a submenu is selected)\n // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n\n /**\n * prepares drilldown menu by setting attributes to links and elements\n * sets a min height to prevent content jumping\n * wraps the element if not already wrapped\n * @private\n * @function\n */\n _prepareMenu() {\n var _this = this;\n // if(!this.options.holdOpen){\n // this._menuLinkEvents();\n // }\n this.$submenuAnchors.each(function(){\n var $link = $(this);\n var $sub = $link.parent();\n if(_this.options.parentLink){\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-drilldown-submenu-item\" role=\"none\"></li>');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]')\n .attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function(){\n var $menu = $(this),\n $back = $menu.find('.js-drilldown-back');\n if(!$back.length) {\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if(!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n // create a wrapper on element if it doesn't exist.\n if(!this.$element.parent().hasClass('is-drilldown')){\n this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n // set wrapper\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n\n _resize() {\n this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n this.$wrapper.css(this._getMaxDims());\n }\n\n /**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */\n _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e) {\n if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n e.preventDefault();\n }\n\n // if(e.target !== e.currentTarget.firstElementChild){\n // return false;\n // }\n _this._show($elem.parent('li'));\n\n if(_this.options.closeOnClick){\n var $body = $('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function(ev) {\n if (ev.target === _this.$element[0] || $.contains(_this.$element[0], ev.target)) { return; }\n ev.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n\n /**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */\n _registerEvents() {\n if(this.options.scrollTop){\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n\n /**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */\n _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement !== ''?$(_this.options.scrollTopElement):_this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n /**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */\n if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n\n /**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */\n _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n var $element = $(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n return;\n }\n });\n\n Keyboard.handleKey(e, 'Drilldown', {\n next: function() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function() {\n $prevElement.focus();\n // Don't tap focus on first element in root ul\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function() {\n $nextElement.focus();\n // Don't tap focus on last element in root ul\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function() {\n // Don't close on element in root ul\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function() {\n if (_this.options.parentLink && $element.attr('href')) { // Link with href\n return false;\n } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n }); // end keyboardAccess\n }\n\n /**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */\n _hideAll() {\n var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n $elem.addClass('is-closing');\n $elem.parent().closest('ul').removeClass('invisible');\n\n if (this.options.autoHeight) {\n const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n /**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one(transitionend($elem), () => {\n $elem.removeClass('is-active is-closing');\n\n /**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */\n this.$element.trigger('closed.zf.drilldown');\n });\n }\n\n /**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */\n _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back')\n .on('click.zf.drilldown', function() {\n _this._hide($elem);\n\n // If there is a parent submenu, call show\n let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n }\n else {\n _this.$currentMenu = _this.$element;\n }\n });\n }\n\n /**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */\n _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent')\n .off('click.zf.drilldown')\n .on('click.zf.drilldown', function() {\n setTimeout(function() {\n _this._hideAll();\n }, 0);\n });\n }\n\n /**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */\n _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n // Reset drilldown\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function() {\n _this._setHideSubMenuClasses($(this));\n });\n\n // Save the menu as the currently displayed one.\n this.$currentMenu = $elem;\n\n // If target menu is root, focus first link & exit\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n // Find all submenus on way to root incl. the element itself\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n // Open target menu and all submenus on its way to root\n $submenus.each(function(index) {\n\n // Update height of first child (target menu) if autoHeight option true\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', $(this).data('calcHeight'));\n }\n\n var isLastChild = index === $submenus.length - 1;\n\n // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n // Last child makes sure the event gets always triggered even if going through several menus\n if (isLastChild === true) {\n $(this).one(transitionend($(this)), () => {\n if (autoFocus === true) {\n $elem.find('li > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses($(this), isLastChild);\n });\n }\n\n /**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */\n _show($elem) {\n const $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n\n //hide drilldown parent menu when submenu is open\n // this removes it from the dom so that the tab key will take the user to the next visible element\n $elem.parent().closest('ul').addClass('invisible');\n\n // add visible class to submenu to override invisible class above\n $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n /**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n\n /**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */\n _hide($elem) {\n if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n $elem.parent().closest('ul').removeClass('invisible');\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing')\n .one(transitionend($elem), function(){\n $elem.removeClass('is-active is-closing visible');\n $elem.blur().addClass('invisible');\n });\n /**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n\n /**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */\n _getMaxDims() {\n var maxHeight = 0, result = {}, _this = this;\n\n // Recalculate menu heights and total max height\n this.$submenus.add(this.$element).each(function(){\n var height = Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if(_this.options.autoHeight) {\n $(this).data('calcHeight',height);\n }\n });\n\n if (this.options.autoHeight)\n result.height = this.$currentMenu.data('calcHeight');\n else\n result['min-height'] = `${maxHeight}px`;\n\n result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n return result;\n }\n\n /**\n * Destroys the Drilldown Menu\n * @function\n */\n _destroy() {\n $('body').off('.zf.drilldown');\n if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n this._hideAll();\n\t this.$element.off('mutateme.zf.trigger');\n Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap()\n .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd')\n .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function() {\n $(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function(){\n var $link = $(this);\n $link.removeAttr('tabindex');\n if($link.data('savedHref')){\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n }else{ return; }\n });\n };\n}\n\nDrilldown.defaults = {\n /**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */\n autoApplyClass: true,\n /**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>'\n */\n backButton: '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>',\n /**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */\n backButtonPosition: 'top',\n /**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '<div></div>'\n */\n wrapper: '<div></div>',\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n autoHeight: false,\n /**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n animateHeight: false,\n /**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */\n scrollTop: false,\n /**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */\n scrollTopElement: '',\n /**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */\n scrollTopOffset: 0,\n /**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */\n animationEasing: 'swing'\n // holdOpen: false\n};\n\nexport {Drilldown};\n","import { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if(currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\n\nclass Positionable extends Plugin {\n /**\n * Abstract class encapsulating the tether-like explicit positioning logic\n * including repositioning based on overlap.\n * Expects classes to define defaults for vOffset, hOffset, position,\n * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n * extending the defaults, or (for now recommended due to the way docs are\n * generated) by explicitly declaring them.\n *\n **/\n\n _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n\n _getDefaultPosition () {\n return 'bottom';\n }\n\n _getDefaultAlignment() {\n switch(this.position) {\n case 'bottom':\n case 'top':\n return Rtl() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n\n /**\n * Adjusts the positionable possible positions by iterating through alignments\n * and positions.\n * @function\n * @private\n */\n _reposition() {\n if(this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n\n /**\n * Adjusts the dropdown pane possible positions by iterating through alignments\n * on the current position.\n * @function\n * @private\n */\n _realign() {\n this._addTriedPosition(this.position, this.alignment)\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n }\n\n _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || []\n this.triedPositions[position].push(alignment);\n }\n\n _positionsExhausted() {\n var isExhausted = true;\n for(var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n\n _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length === ALIGNMENTS[position].length;\n }\n\n\n // When we're trying to center, we don't want to apply offset that's going to\n // take us just off center, so wrap around to return 0 for the appropriate\n // offset in those alignments. TODO: Figure out if we want to make this\n // configurable behavior... it feels more intuitive, especially for tooltips, but\n // it's possible someone might actually want to start from center and then nudge\n // slightly off.\n _getVOffset() {\n return this.options.vOffset;\n }\n\n _getHOffset() {\n return this.options.hOffset;\n }\n\n _setPosition($anchor, $element, $parent) {\n if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n if (!this.options.allowOverlap) {\n // restore original position & alignment before checking overlap\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if(!this.options.allowOverlap) {\n var minOverlap = 100000000;\n // default coordinates to how we start, in case we can't figure out better\n var minCoordinates = {position: this.position, alignment: this.alignment};\n while(!this._positionsExhausted()) {\n let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if(overlap === 0) {\n return;\n }\n\n if(overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = {position: this.position, alignment: this.alignment};\n }\n\n this._reposition();\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n // If we get through the entire loop, there was no non-overlapping\n // position available. Pick the version with least overlap.\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n\n}\n\nPositionable.defaults = {\n /**\n * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown positionable first\n * try to position as defined by data-position and data-alignment, but\n * reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Number of pixels the positionable should be separated vertically from anchor\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels the positionable should be separated horizontally from anchor\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n}\n\nexport {Positionable};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n /**\n * Creates a new instance of a dropdown.\n * @class\n * @name Dropdown\n * @param {jQuery} element - jQuery object to make into a dropdown.\n * Object should be of the dropdown panel, rather than its anchor.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown'; // ie9 back compat\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n * @function\n * @private\n */\n _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if(this.options.parentClass){\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n }else{\n this.$parent = null;\n }\n\n // Set [aria-labelledby] on the Dropdown if it is not set\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n // Get the anchor ID or create one\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id,\n });\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if(position) {\n return position[0];\n } else {\n return 'bottom'\n }\n }\n\n _getDefaultAlignment() {\n // handle legacy float approach\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if(horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return super._getDefaultAlignment();\n }\n\n\n\n /**\n * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n * Recursively calls itself if a collision is detected, with a new position class.\n * @function\n * @private\n */\n _setPosition() {\n this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n }\n\n /**\n * Make it a current anchor.\n * Current anchor as the reference for the position of Dropdown panes.\n * @param {HTML} el - DOM element of the anchor.\n * @function\n * @private\n */\n _setCurrentAnchor(el) {\n this.$currentAnchor = $(el);\n }\n\n /**\n * Adds event listeners to the element utilizing the triggers utility library.\n * @function\n * @private\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger')\n .on('click.zf.trigger', function(e) {\n _this._setCurrentAnchor(this);\n\n if (\n // if forceFollow false, always prevent default action\n (_this.options.forceFollow === false) ||\n // if forceFollow true and hover option true, only prevent default action on 1st click\n // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n ) {\n e.preventDefault();\n }\n });\n\n if(this.options.hover){\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n _this._setCurrentAnchor(this);\n\n var bodyData = $('body').data();\n if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if(this.options.hoverPane){\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n var $target = $(this);\n\n Keyboard.handleKey(e, 'Dropdown', {\n open: function() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n var $body = $(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown')\n .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n\n /**\n * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n * @function\n * @fires Dropdown#closeme\n * @fires Dropdown#show\n */\n open() {\n // var _this = this;\n /**\n * Fires to close other open dropdowns, typically when dropdown is opening\n * @event Dropdown#closeme\n */\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover')\n .attr({'aria-expanded': true});\n // this.$element/*.show()*/;\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open')\n .attr({'aria-hidden': false});\n\n if(this.options.autoFocus){\n var $focusable = Keyboard.findFocusable(this.$element);\n if($focusable.length){\n $focusable.eq(0).focus();\n }\n }\n\n if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n if (this.options.trapFocus) {\n Keyboard.trapFocus(this.$element);\n }\n\n /**\n * Fires once the dropdown is visible.\n * @event Dropdown#show\n */\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n\n /**\n * Closes the open dropdown pane.\n * @function\n * @fires Dropdown#hide\n */\n close() {\n if(!this.$element.hasClass('is-open')){\n return false;\n }\n this.$element.removeClass('is-open')\n .attr({'aria-hidden': true});\n\n this.$anchors.removeClass('hover')\n .attr('aria-expanded', false);\n\n /**\n * Fires once the dropdown is no longer visible.\n * @event Dropdown#hide\n */\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n Keyboard.releaseFocus(this.$element);\n }\n }\n\n /**\n * Toggles the dropdown pane's visibility.\n * @function\n */\n toggle() {\n if(this.$element.hasClass('is-open')){\n if(this.$anchors.data('hover')) return;\n this.close();\n }else{\n this.open();\n }\n }\n\n /**\n * Destroys the dropdown.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n }\n}\n\nDropdown.defaults = {\n /**\n * Class that designates bounding container of Dropdown (default: window)\n * @option\n * @type {?string}\n * @default null\n */\n parentClass: null,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 250\n */\n hoverDelay: 250,\n /**\n * Allow submenus to open on hover events\n * @option\n * @type {boolean}\n * @default false\n */\n hover: false,\n /**\n * Don't close dropdown when hovering over dropdown pane\n * @option\n * @type {boolean}\n * @default false\n */\n hoverPane: false,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Position of dropdown. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false,\n /**\n * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n /**\n * Allows a click on the body to close the dropdown.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {Dropdown};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n /**\n * Creates a new instance of DropdownMenu.\n * @class\n * @name DropdownMenu\n * @fires DropdownMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin, and calls _prepareMenu\n * @private\n * @function\n */\n _init() {\n Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n };\n\n _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n\n _isRtl() {\n return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n }\n\n /**\n * Adds event listeners to elements within the menu\n * @private\n * @function\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n parClass = 'is-dropdown-submenu-parent';\n\n // used for onClick and in the keyboard handlers\n var handleClickFn = function(e) {\n var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick\n || (!_this.options.clickOpen && !hasTouch)\n || (_this.options.forceFollow && hasTouch)) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n }\n else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n // Handle Leaf element Clicks\n if(_this.options.closeOnClickInside){\n this.$menuItems.on('click.zf.dropdownMenu', function() {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(i-1);\n $nextElement = $elements.eq(i+1);\n return;\n }\n });\n\n var nextSibling = function() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n }, prevSibling = function() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n }, openSub = function() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else { return; }\n }, closeSub = function() {\n //if ($element.is(':first-child')) {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n //}\n };\n var functions = {\n open: openSub,\n close: function() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) { // vertical menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else { // left aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else { // horizontal menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else { // left aligned\n $.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else { // not tabs -> one sub\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else { // left aligned\n $.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n const $body = $(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n var isItself = !!$(e.target).closest(this.$element).length;\n if (isItself) return;\n\n this._hide();\n this._removeBodyHandler();\n });\n }\n\n /**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */\n _removeBodyHandler() {\n $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n\n /**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */\n _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n return $(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) { this._addBodyHandler(); }\n /**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n\n /**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */\n _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function(i) {\n return i === idx;\n });\n }\n else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n .removeClass(`opens-inner opens-${this.options.alignment}`)\n .addClass(`opens-${oldClass}`);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n /**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n\n /**\n * Destroys the plugin.\n * @function\n */\n _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n $(document.body).off('.zf.dropdownMenu');\n Nest.Burn(this.$element, 'dropdown');\n }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n /**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disallows hover on touch devices\n * @option\n * @type {boolean}\n * @default true\n */\n disableHoverOnTouch: true,\n /**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */\n autoclose: true,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */\n hoverDelay: 50,\n /**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */\n clickOpen: false,\n /**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */\n\n closingTime: 500,\n /**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClickInside: true,\n /**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */\n verticalClass: 'vertical',\n /**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */\n rightClass: 'align-right',\n /**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {DropdownMenu};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Equalizer module.\n * @module foundation.equalizer\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.imageLoader if equalizer contains images\n */\n\nclass Equalizer extends Plugin {\n /**\n * Creates a new instance of Equalizer.\n * @class\n * @name Equalizer\n * @fires Equalizer#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);\n this.className = 'Equalizer'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var eqId = this.$element.attr('data-equalizer') || '';\n var $watched = this.$element.find(`[data-equalizer-watch=\"${eqId}\"]`);\n\n MediaQuery._init();\n\n this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n this.$element.attr('data-resize', (eqId || GetYoDigits(6, 'eq')));\n this.$element.attr('data-mutate', (eqId || GetYoDigits(6, 'eq')));\n\n this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n this.isOn = false;\n this._bindHandler = {\n onResizeMeBound: this._onResizeMe.bind(this),\n onPostEqualizedBound: this._onPostEqualized.bind(this)\n };\n\n var imgs = this.$element.find('img');\n var tooSmall;\n if(this.options.equalizeOn){\n tooSmall = this._checkMQ();\n $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n }else{\n this._events();\n }\n if((typeof tooSmall !== 'undefined' && tooSmall === false) || typeof tooSmall === 'undefined'){\n if(imgs.length){\n onImagesLoaded(imgs, this._reflow.bind(this));\n }else{\n this._reflow();\n }\n }\n }\n\n /**\n * Removes event listeners if the breakpoint is too small.\n * @private\n */\n _pauseEvents() {\n this.isOn = false;\n this.$element.off({\n '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n\t 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n });\n }\n\n /**\n * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n * @private\n */\n _onResizeMe() {\n this._reflow();\n }\n\n /**\n * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n * @private\n */\n _onPostEqualized(e) {\n if(e.target !== this.$element[0]){ this._reflow(); }\n }\n\n /**\n * Initializes events for Equalizer.\n * @private\n */\n _events() {\n this._pauseEvents();\n if(this.hasNested){\n this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n }else{\n this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n\t this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n }\n this.isOn = true;\n }\n\n /**\n * Checks the current breakpoint to the minimum required size.\n * @private\n */\n _checkMQ() {\n var tooSmall = !MediaQuery.is(this.options.equalizeOn);\n if(tooSmall){\n if(this.isOn){\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n }else{\n if(!this.isOn){\n this._events();\n }\n }\n return tooSmall;\n }\n\n /**\n * A noop version for the plugin\n * @private\n */\n _killswitch() {\n return;\n }\n\n /**\n * Calls necessary functions to update Equalizer upon DOM change\n * @private\n */\n _reflow() {\n if(!this.options.equalizeOnStack){\n if(this._isStacked()){\n this.$watched.css('height', 'auto');\n return false;\n }\n }\n if (this.options.equalizeByRow) {\n this.getHeightsByRow(this.applyHeightByRow.bind(this));\n }else{\n this.getHeights(this.applyHeight.bind(this));\n }\n }\n\n /**\n * Manually determines if the first 2 elements are *NOT* stacked.\n * @private\n */\n _isStacked() {\n if (!this.$watched[0] || !this.$watched[1]) {\n return true;\n }\n return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} heights - An array of heights of children within Equalizer container\n */\n getHeights(cb) {\n var heights = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n heights.push(this.$watched[i].offsetHeight);\n }\n cb(heights);\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n */\n getHeightsByRow(cb) {\n var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0),\n groups = [],\n group = 0;\n //group by Row\n groups[group] = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n //maybe could use this.$watched[i].offsetTop\n var elOffsetTop = $(this.$watched[i]).offset().top;\n if (elOffsetTop !== lastElTopOffset) {\n group++;\n groups[group] = [];\n lastElTopOffset=elOffsetTop;\n }\n groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);\n }\n\n for (var j = 0, ln = groups.length; j < ln; j++) {\n var heights = $(groups[j]).map(function(){ return this[1]; }).get();\n var max = Math.max.apply(null, heights);\n groups[j].push(max);\n }\n cb(groups);\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest\n * @param {array} heights - An array of heights of children within Equalizer container\n * @fires Equalizer#preequalized\n * @fires Equalizer#postequalized\n */\n applyHeight(heights) {\n var max = Math.max.apply(null, heights);\n /**\n * Fires before the heights are applied\n * @event Equalizer#preequalized\n */\n this.$element.trigger('preequalized.zf.equalizer');\n\n this.$watched.css('height', max);\n\n /**\n * Fires when the heights have been applied\n * @event Equalizer#postequalized\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row\n * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n * @fires Equalizer#preequalized\n * @fires Equalizer#preequalizedrow\n * @fires Equalizer#postequalizedrow\n * @fires Equalizer#postequalized\n */\n applyHeightByRow(groups) {\n /**\n * Fires before the heights are applied\n */\n this.$element.trigger('preequalized.zf.equalizer');\n for (var i = 0, len = groups.length; i < len ; i++) {\n var groupsILength = groups[i].length,\n max = groups[i][groupsILength - 1];\n if (groupsILength<=2) {\n $(groups[i][0][0]).css({'height':'auto'});\n continue;\n }\n /**\n * Fires before the heights per row are applied\n * @event Equalizer#preequalizedrow\n */\n this.$element.trigger('preequalizedrow.zf.equalizer');\n for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {\n $(groups[i][j][0]).css({'height':max});\n }\n /**\n * Fires when the heights per row have been applied\n * @event Equalizer#postequalizedrow\n */\n this.$element.trigger('postequalizedrow.zf.equalizer');\n }\n /**\n * Fires when the heights have been applied\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Destroys an instance of Equalizer.\n * @function\n */\n _destroy() {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n}\n\n/**\n * Default settings for plugin\n */\nEqualizer.defaults = {\n /**\n * Enable height equalization when stacked on smaller screens.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeOnStack: false,\n /**\n * Enable height equalization row by row.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeByRow: false,\n /**\n * String representing the minimum breakpoint size the plugin should equalize heights on.\n * @option\n * @type {string}\n * @default ''\n */\n equalizeOn: ''\n};\n\nexport {Equalizer};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Interchange module.\n * @module foundation.interchange\n * @requires foundation.util.mediaQuery\n */\n\nclass Interchange extends Plugin {\n /**\n * Creates a new instance of Interchange.\n * @class\n * @name Interchange\n * @fires Interchange#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Interchange.defaults, this.$element.data(), options);\n this.rules = [];\n this.currentPath = '';\n this.className = 'Interchange'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Interchange plugin and calls functions to get interchange functioning on load.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var id = this.$element[0].id || GetYoDigits(6, 'interchange');\n this.$element.attr({\n 'data-resize': id,\n 'id': id\n });\n\n this._parseOptions();\n this._addBreakpoints();\n this._generateRules();\n this._reflow();\n }\n\n /**\n * Initializes events for Interchange.\n * @function\n * @private\n */\n _events() {\n this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', () => this._reflow());\n }\n\n /**\n * Calls necessary functions to update Interchange upon DOM change\n * @function\n * @private\n */\n _reflow() {\n var match;\n\n // Iterate through each rule, but only save the last match\n for (var i in this.rules) {\n if(this.rules.hasOwnProperty(i)) {\n var rule = this.rules[i];\n if (window.matchMedia(rule.query).matches) {\n match = rule;\n }\n }\n }\n\n if (match) {\n this.replace(match.path);\n }\n }\n\n /**\n * Check options valifity and set defaults for:\n * - `data-interchange-type`: if set, enforce the type of replacement (auto, src, background or html)\n * @function\n * @private\n */\n _parseOptions() {\n var types = ['auto', 'src', 'background', 'html'];\n if (typeof this.options.type === 'undefined')\n this.options.type = 'auto';\n else if (types.indexOf(this.options.type) === -1) {\n console.warn(`Warning: invalid value \"${this.options.type}\" for Interchange option \"type\"`);\n this.options.type = 'auto';\n }\n }\n\n /**\n * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.\n * @function\n * @private\n */\n _addBreakpoints() {\n for (var i in MediaQuery.queries) {\n if (MediaQuery.queries.hasOwnProperty(i)) {\n var query = MediaQuery.queries[i];\n Interchange.SPECIAL_QUERIES[query.name] = query.value;\n }\n }\n }\n\n /**\n * Checks the Interchange element for the provided media query + content pairings\n * @function\n * @private\n * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys\n */\n _generateRules() {\n var rulesList = [];\n var rules;\n\n if (this.options.rules) {\n rules = this.options.rules;\n }\n else {\n rules = this.$element.data('interchange');\n }\n\n rules = typeof rules === 'string' ? rules.match(/\\[.*?, .*?\\]/g) : rules;\n\n for (var i in rules) {\n if(rules.hasOwnProperty(i)) {\n var rule = rules[i].slice(1, -1).split(', ');\n var path = rule.slice(0, -1).join('');\n var query = rule[rule.length - 1];\n\n if (Interchange.SPECIAL_QUERIES[query]) {\n query = Interchange.SPECIAL_QUERIES[query];\n }\n\n rulesList.push({\n path: path,\n query: query\n });\n }\n }\n\n this.rules = rulesList;\n }\n\n /**\n * Update the `src` property of an image, or change the HTML of a container, to the specified path.\n * @function\n * @param {String} path - Path to the image or HTML partial.\n * @fires Interchange#replaced\n */\n replace(path) {\n if (this.currentPath === path) return;\n\n var trigger = 'replaced.zf.interchange';\n\n var type = this.options.type;\n if (type === 'auto') {\n if (this.$element[0].nodeName === 'IMG')\n type = 'src';\n else if (path.match(/\\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i))\n type = 'background';\n else\n type = 'html';\n }\n\n // Replacing images\n if (type === 'src') {\n this.$element.attr('src', path)\n .on('load', () => { this.currentPath = path; })\n .trigger(trigger);\n }\n // Replacing background images\n else if (type === 'background') {\n path = path.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n this.$element\n .css({ 'background-image': 'url(' + path + ')' })\n .trigger(trigger);\n }\n // Replacing HTML\n else if (type === 'html') {\n $.get(path, (response) => {\n this.$element\n .html(response)\n .trigger(trigger);\n $(response).foundation();\n this.currentPath = path;\n });\n }\n\n /**\n * Fires when content in an Interchange element is done being loaded.\n * @event Interchange#replaced\n */\n // this.$element.trigger('replaced.zf.interchange');\n }\n\n /**\n * Destroys an instance of interchange.\n * @function\n */\n _destroy() {\n this.$element.off('resizeme.zf.trigger')\n }\n}\n\n/**\n * Default settings for plugin\n */\nInterchange.defaults = {\n /**\n * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.\n * @option\n * @type {?array}\n * @default null\n */\n rules: null,\n\n /**\n * Type of the responsive ressource to replace. It can take the following options:\n * - `auto` (default): choose the type according to the element tag or the ressource extension,\n * - `src`: replace the `[src]` attribute, recommended for images `<img>`.\n * - `background`: replace the `background-image` CSS property.\n * - `html`: replace the element content.\n * @option\n * @type {string}\n * @default 'auto'\n */\n type: 'auto'\n};\n\nInterchange.SPECIAL_QUERIES = {\n 'landscape': 'screen and (orientation: landscape)',\n 'portrait': 'screen and (orientation: portrait)',\n 'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'\n};\n\nexport {Interchange};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * SmoothScroll module.\n * @module foundation.smoothScroll\n */\nclass SmoothScroll extends Plugin {\n /**\n * Creates a new instance of SmoothScroll.\n * @class\n * @name SmoothScroll\n * @fires SmoothScroll#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, SmoothScroll.defaults, this.$element.data(), options);\n this.className = 'SmoothScroll'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initialize the SmoothScroll plugin\n * @private\n */\n _init() {\n const id = this.$element[0].id || GetYoDigits(6, 'smooth-scroll');\n this.$element.attr({ id });\n\n this._events();\n }\n\n /**\n * Initializes events for SmoothScroll.\n * @private\n */\n _events() {\n this._linkClickListener = this._handleLinkClick.bind(this);\n this.$element.on('click.zf.smoothScroll', this._linkClickListener);\n this.$element.on('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n\n /**\n * Handle the given event to smoothly scroll to the anchor pointed by the event target.\n * @param {*} e - event\n * @function\n * @private\n */\n _handleLinkClick(e) {\n // Follow the link if it does not point to an anchor.\n if (!$(e.currentTarget).is('a[href^=\"#\"]')) return;\n\n const arrival = e.currentTarget.getAttribute('href');\n\n this._inTransition = true;\n\n SmoothScroll.scrollToLoc(arrival, this.options, () => {\n this._inTransition = false;\n });\n\n e.preventDefault();\n };\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'\n * @param {Object} options - The options to use.\n * @param {Function} callback - The callback function.\n * @static\n * @function\n */\n static scrollToLoc(loc, options = SmoothScroll.defaults, callback) {\n const $loc = $(loc);\n\n // Do nothing if target does not exist to prevent errors\n if (!$loc.length) return false;\n\n var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);\n\n $('html, body').stop(true).animate(\n { scrollTop: scrollPos },\n options.animationDuration,\n options.animationEasing,\n () => {\n if (typeof callback === 'function'){\n callback();\n }\n }\n );\n }\n\n /**\n * Destroys the SmoothScroll instance.\n * @function\n */\n _destroy() {\n this.$element.off('click.zf.smoothScroll', this._linkClickListener)\n this.$element.off('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n}\n\n/**\n * Default settings for plugin.\n */\nSmoothScroll.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {SmoothScroll}\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { SmoothScroll } from './foundation.smoothScroll';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Magellan module.\n * @module foundation.magellan\n * @requires foundation.smoothScroll\n * @requires foundation.util.triggers\n */\n\nclass Magellan extends Plugin {\n /**\n * Creates a new instance of Magellan.\n * @class\n * @name Magellan\n * @fires Magellan#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Magellan.defaults, this.$element.data(), options);\n this.className = 'Magellan'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this.calcPoints();\n }\n\n /**\n * Initializes the Magellan plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var id = this.$element[0].id || GetYoDigits(6, 'magellan');\n this.$targets = $('[data-magellan-target]');\n this.$links = this.$element.find('a');\n this.$element.attr({\n 'data-resize': id,\n 'data-scroll': id,\n 'id': id\n });\n this.$active = $();\n this.scrollPos = parseInt(window.pageYOffset, 10);\n\n this._events();\n }\n\n /**\n * Calculates an array of pixel values that are the demarcation lines between locations on the page.\n * Can be invoked if new elements are added or the size of a location changes.\n * @function\n */\n calcPoints() {\n var _this = this,\n body = document.body,\n html = document.documentElement;\n\n this.points = [];\n this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));\n this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));\n\n this.$targets.each(function(){\n var $tar = $(this),\n pt = Math.round($tar.offset().top - _this.options.threshold);\n $tar.targetPoint = pt;\n _this.points.push(pt);\n });\n }\n\n /**\n * Initializes events for Magellan.\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).one('load', function(){\n if(_this.options.deepLinking){\n if(location.hash){\n _this.scrollToLoc(location.hash);\n }\n }\n _this.calcPoints();\n _this._updateActive();\n });\n\n _this.onLoadListener = onLoad($(window), function () {\n _this.$element\n .on({\n 'resizeme.zf.trigger': _this.reflow.bind(_this),\n 'scrollme.zf.trigger': _this._updateActive.bind(_this)\n })\n .on('click.zf.magellan', 'a[href^=\"#\"]', function (e) {\n e.preventDefault();\n var arrival = this.getAttribute('href');\n _this.scrollToLoc(arrival);\n });\n });\n\n this._deepLinkScroll = function() {\n if(_this.options.deepLinking) {\n _this.scrollToLoc(window.location.hash);\n }\n };\n\n $(window).on('hashchange', this._deepLinkScroll);\n }\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo'\n * @function\n */\n scrollToLoc(loc) {\n this._inTransition = true;\n var _this = this;\n\n var options = {\n animationEasing: this.options.animationEasing,\n animationDuration: this.options.animationDuration,\n threshold: this.options.threshold,\n offset: this.options.offset\n };\n\n SmoothScroll.scrollToLoc(loc, options, function() {\n _this._inTransition = false;\n })\n }\n\n /**\n * Calls necessary functions to update Magellan upon DOM change\n * @function\n */\n reflow() {\n this.calcPoints();\n this._updateActive();\n }\n\n /**\n * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.\n * @private\n * @function\n * @fires Magellan#update\n */\n _updateActive(/*evt, elem, scrollPos*/) {\n if(this._inTransition) return;\n\n const newScrollPos = parseInt(window.pageYOffset, 10);\n const isScrollingUp = this.scrollPos > newScrollPos;\n this.scrollPos = newScrollPos;\n\n let activeIdx;\n // Before the first point: no link\n if(newScrollPos < this.points[0] - this.options.offset - (isScrollingUp ? this.options.threshold : 0)){ /* do nothing */ }\n // At the bottom of the page: last link\n else if(newScrollPos + this.winHeight === this.docHeight){ activeIdx = this.points.length - 1; }\n // Otherwhise, use the last visible link\n else{\n const visibleLinks = this.points.filter((p) => {\n return (p - this.options.offset - (isScrollingUp ? this.options.threshold : 0)) <= newScrollPos;\n });\n activeIdx = visibleLinks.length ? visibleLinks.length - 1 : 0;\n }\n\n // Get the new active link\n const $oldActive = this.$active;\n let activeHash = '';\n if(typeof activeIdx !== 'undefined'){\n this.$active = this.$links.filter('[href=\"#' + this.$targets.eq(activeIdx).data('magellan-target') + '\"]');\n if (this.$active.length) activeHash = this.$active[0].getAttribute('href');\n }else{\n this.$active = $();\n }\n const isNewActive = !(!this.$active.length && !$oldActive.length) && !this.$active.is($oldActive);\n const isNewHash = activeHash !== window.location.hash;\n\n // Update the active link element\n if(isNewActive) {\n $oldActive.removeClass(this.options.activeClass);\n this.$active.addClass(this.options.activeClass);\n }\n\n // Update the hash (it may have changed with the same active link)\n if(this.options.deepLinking && isNewHash){\n if(window.history.pushState){\n // Set or remove the hash (see: https://stackoverflow.com/a/5298684/4317384\n const url = activeHash ? activeHash : window.location.pathname + window.location.search;\n if(this.options.updateHistory){\n window.history.pushState({}, '', url);\n }else{\n window.history.replaceState({}, '', url);\n }\n }else{\n window.location.hash = activeHash;\n }\n }\n\n if (isNewActive) {\n /**\n * Fires when magellan is finished updating to the new active element.\n * @event Magellan#update\n */\n \tthis.$element.trigger('update.zf.magellan', [this.$active]);\n\t }\n }\n\n /**\n * Destroys an instance of Magellan and resets the url of the window.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger .zf.magellan')\n .find(`.${this.options.activeClass}`).removeClass(this.options.activeClass);\n\n if(this.options.deepLinking){\n var hash = this.$active[0].getAttribute('href');\n window.location.hash.replace(hash, '');\n }\n\n $(window).off('hashchange', this._deepLinkScroll)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\n/**\n * Default settings for plugin\n */\nMagellan.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Class applied to the active locations link on the magellan container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n activeClass: 'is-active',\n /**\n * Allows the script to manipulate the url of the current page, and if supported, alter the history.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinking: false,\n /**\n * Update the browser history with the active link, if deep linking is enabled.\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {Magellan};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, transitionend, RegExpEscape } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * OffCanvas module.\n * @module foundation.offCanvas\n * @requires foundation.util.keyboard\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass OffCanvas extends Plugin {\n /**\n * Creates a new instance of an off-canvas wrapper.\n * @class\n * @name OffCanvas\n * @fires OffCanvas#init\n * @param {Object} element - jQuery object to initialize.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.className = 'OffCanvas'; // ie9 back compat\n this.$element = element;\n this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);\n this.contentClasses = { base: [], reveal: [] };\n this.$lastTrigger = $();\n this.$triggers = $();\n this.position = 'left';\n this.$content = $();\n this.nested = !!(this.options.nested);\n this.$sticky = $();\n this.isInCanvas = false;\n\n // Defines the CSS transition/position classes of the off-canvas content container.\n $(['push', 'overlap']).each((index, val) => {\n this.contentClasses.base.push('has-transition-'+val);\n });\n $(['left', 'right', 'top', 'bottom']).each((index, val) => {\n this.contentClasses.base.push('has-position-'+val);\n this.contentClasses.reveal.push('has-reveal-'+val);\n });\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n MediaQuery._init();\n\n this._init();\n this._events();\n\n Keyboard.register('OffCanvas', {\n 'ESCAPE': 'close'\n });\n\n }\n\n /**\n * Initializes the off-canvas wrapper by adding the exit overlay (if needed).\n * @function\n * @private\n */\n _init() {\n var id = this.$element.attr('id');\n\n this.$element.attr('aria-hidden', 'true');\n\n // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)\n if (this.options.contentId) {\n this.$content = $('#'+this.options.contentId);\n } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n } else {\n this.$content = this.$element.closest('[data-off-canvas-content]').first();\n }\n\n if (!this.options.contentId) {\n // Assume that the off-canvas element is nested if it isn't a sibling of the content\n this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n\n } else if (this.options.contentId && this.options.nested === null) {\n // Warning if using content ID without setting the nested option\n // Once the element is nested it is required to work properly in this case\n console.warn('Remember to use the nested option if using the content ID option!');\n }\n\n if (this.nested === true) {\n // Force transition overlap if nested\n this.options.transition = 'overlap';\n // Remove appropriate classes if already assigned in markup\n this.$element.removeClass('is-transition-push');\n }\n\n this.$element.addClass(`is-transition-${this.options.transition} is-closed`);\n\n // Find triggers that affect this element and add aria-expanded to them\n this.$triggers = $(document)\n .find('[data-open=\"'+id+'\"], [data-close=\"'+id+'\"], [data-toggle=\"'+id+'\"]')\n .attr('aria-expanded', 'false')\n .attr('aria-controls', id);\n\n // Get position by checking for related CSS class\n this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n // Add an overlay over the content if necessary\n if (this.options.contentOverlay === true) {\n var overlay = document.createElement('div');\n var overlayPosition = $(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n this.$overlay = $(overlay);\n if(overlayPosition === 'is-overlay-fixed') {\n $(this.$overlay).insertAfter(this.$element);\n } else {\n this.$content.append(this.$overlay);\n }\n }\n\n // Get the revealOn option from the class.\n var revealOnRegExp = new RegExp(RegExpEscape(this.options.revealClass) + '([^\\\\s]+)', 'g');\n var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n if (revealOnClass) {\n this.options.isRevealed = true;\n this.options.revealOn = this.options.revealOn || revealOnClass[1];\n }\n\n // Ensure the `reveal-on-*` class is set.\n if (this.options.isRevealed === true && this.options.revealOn) {\n this.$element.first().addClass(`${this.options.revealClass}${this.options.revealOn}`);\n this._setMQChecker();\n }\n\n if (this.options.transitionTime) {\n this.$element.css('transition-duration', this.options.transitionTime);\n }\n\n // Find fixed elements that should stay fixed while off-canvas is opened\n this.$sticky = this.$content.find('[data-off-canvas-sticky]');\n if (this.$sticky.length > 0 && this.options.transition === 'push') {\n // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll\n // Limit to push transition since there's no transform scope for overlap\n this.options.contentScroll = false;\n }\n\n let inCanvasFor = this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);\n if (inCanvasFor && inCanvasFor.length === 2) {\n // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class\n this.options.inCanvasOn = inCanvasFor[1];\n } else if (this.options.inCanvasOn) {\n // Ensure the CSS class is set\n this.$element.addClass(`in-canvas-for-${this.options.inCanvasOn}`);\n }\n\n if (this.options.inCanvasOn) {\n this._checkInCanvas();\n }\n\n // Initally remove all transition/position CSS classes from off-canvas content container.\n this._removeContentClasses();\n }\n\n /**\n * Adds event handlers to the off-canvas wrapper and the exit overlay.\n * @function\n * @private\n */\n _events() {\n this.$element.off('.zf.trigger .zf.offCanvas').on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'keydown.zf.offCanvas': this._handleKeyboard.bind(this)\n });\n\n if (this.options.closeOnClick === true) {\n var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n $target.on({'click.zf.offCanvas': this.close.bind(this)});\n }\n\n if (this.options.inCanvasOn) {\n $(window).on('changed.zf.mediaquery', () => {\n this._checkInCanvas();\n });\n }\n\n }\n\n /**\n * Applies event listener for elements that will reveal at certain breakpoints.\n * @private\n */\n _setMQChecker() {\n var _this = this;\n\n this.onLoadListener = onLoad($(window), function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n }\n });\n\n $(window).on('changed.zf.mediaquery', function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n } else {\n _this.reveal(false);\n }\n });\n }\n\n /**\n * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly\n * @private\n */\n _checkInCanvas() {\n this.isInCanvas = MediaQuery.atLeast(this.options.inCanvasOn);\n if (this.isInCanvas === true) {\n this.close();\n }\n }\n\n /**\n * Removes the CSS transition/position classes of the off-canvas content container.\n * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _removeContentClasses(hasReveal) {\n if (typeof hasReveal !== 'boolean') {\n this.$content.removeClass(this.contentClasses.base.join(' '));\n } else if (hasReveal === false) {\n this.$content.removeClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n * Beforehand any transition/position class gets removed.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _addContentClasses(hasReveal) {\n this._removeContentClasses(hasReveal);\n if (typeof hasReveal !== 'boolean') {\n this.$content.addClass(`has-transition-${this.options.transition} has-position-${this.position}`);\n } else if (hasReveal === true) {\n this.$content.addClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.\n * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.\n * @private\n */\n _fixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n\n // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope\n // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)\n if ($el.css('position') === 'fixed') {\n\n // Save current inline styling to restore it if undoing the absolute fixing\n let topVal = parseInt($el.css('top'), 10);\n $el.data('offCanvasSticky', { top: topVal });\n\n let absoluteTopVal = $(document).scrollTop() + topVal;\n $el.css({ top: `${absoluteTopVal}px`, width: '100%', transition: 'none' });\n }\n });\n }\n\n /**\n * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.\n * This reverts the changes of _fixStickyElements()\n * @private\n */\n _unfixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n let stickyData = $el.data('offCanvasSticky');\n\n // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed\n if (typeof stickyData === 'object') {\n $el.css({ top: `${stickyData.top}px`, width: '', transition: '' })\n $el.data('offCanvasSticky', '');\n }\n });\n }\n\n /**\n * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n * @param {Boolean} isRevealed - true if element should be revealed.\n * @function\n */\n reveal(isRevealed) {\n if (isRevealed) {\n this.close();\n this.isRevealed = true;\n this.$element.attr('aria-hidden', 'false');\n this.$element.off('open.zf.trigger toggle.zf.trigger');\n this.$element.removeClass('is-closed');\n } else {\n this.isRevealed = false;\n this.$element.attr('aria-hidden', 'true');\n this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n 'open.zf.trigger': this.open.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this)\n });\n this.$element.addClass('is-closed');\n }\n this._addContentClasses(isRevealed);\n }\n\n /**\n * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.\n * @function\n * @private\n */\n _stopScrolling() {\n return false;\n }\n\n /**\n * Save current finger y-position\n * @param event\n * @private\n */\n _recordScrollable(event) {\n const elem = this;\n elem.lastY = event.touches[0].pageY;\n }\n\n /**\n * Prevent further scrolling when it hits the edges\n * @param event\n * @private\n */\n _preventDefaultAtEdges(event) {\n const elem = this;\n const _this = event.data;\n const delta = elem.lastY - event.touches[0].pageY;\n elem.lastY = event.touches[0].pageY;\n\n if (!_this._canScroll(delta, elem)) {\n event.preventDefault();\n }\n }\n\n /**\n * Handle continuous scrolling of scrollbox\n * Don't bubble up to _preventDefaultAtEdges\n * @param event\n * @private\n */\n _scrollboxTouchMoved(event) {\n const elem = this;\n const _this = event.data;\n const parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');\n const delta = elem.lastY - event.touches[0].pageY;\n parent.lastY = elem.lastY = event.touches[0].pageY;\n\n event.stopPropagation();\n\n if (!_this._canScroll(delta, elem)) {\n if (!_this._canScroll(delta, parent)) {\n event.preventDefault();\n } else {\n parent.scrollTop += delta;\n }\n }\n }\n\n /**\n * Detect possibility of scrolling\n * @param delta\n * @param elem\n * @returns boolean\n * @private\n */\n _canScroll(delta, elem) {\n const up = delta < 0;\n const down = delta > 0;\n const allowUp = elem.scrollTop > 0;\n const allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n return up && allowUp || down && allowDown;\n }\n\n /**\n * Opens the off-canvas menu.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n * @fires OffCanvas#opened\n * @todo also trigger 'open' event?\n */\n open(event, trigger) {\n if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) { return; }\n var _this = this;\n\n if (trigger) {\n this.$lastTrigger = trigger;\n }\n\n if (this.options.forceTo === 'top') {\n window.scrollTo(0, 0);\n } else if (this.options.forceTo === 'bottom') {\n window.scrollTo(0,document.body.scrollHeight);\n }\n\n if (this.options.transitionTime && this.options.transition !== 'overlap') {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n } else {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n }\n\n this.$element.addClass('is-open').removeClass('is-closed');\n\n this.$triggers.attr('aria-expanded', 'true');\n this.$element.attr('aria-hidden', 'false');\n\n this.$content.addClass('is-open-' + this.position);\n\n // If `contentScroll` is set to false, add class and disable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n this.$element.on('touchstart', this._recordScrollable);\n this.$element.on('touchmove', this, this._preventDefaultAtEdges);\n this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this, this._scrollboxTouchMoved);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.addClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.addClass('is-closable');\n }\n\n if (this.options.autoFocus === true) {\n this.$element.one(transitionend(this.$element), function() {\n if (!_this.$element.hasClass('is-open')) {\n return; // exit if prematurely closed\n }\n var canvasFocus = _this.$element.find('[data-autofocus]');\n if (canvasFocus.length) {\n canvasFocus.eq(0).focus();\n } else {\n _this.$element.find('a, button').eq(0).focus();\n }\n });\n }\n\n if (this.options.trapFocus === true) {\n this.$content.attr('tabindex', '-1');\n Keyboard.trapFocus(this.$element);\n }\n\n if (this.options.transition === 'push') {\n this._fixStickyElements();\n }\n\n this._addContentClasses();\n\n /**\n * Fires when the off-canvas menu opens.\n * @event OffCanvas#opened\n */\n this.$element.trigger('opened.zf.offCanvas');\n\n /**\n * Fires when the off-canvas menu open transition is done.\n * @event OffCanvas#openedEnd\n */\n this.$element.one(transitionend(this.$element), () => {\n this.$element.trigger('openedEnd.zf.offCanvas');\n });\n }\n\n /**\n * Closes the off-canvas menu.\n * @function\n * @param {Function} cb - optional cb to fire after closure.\n * @fires OffCanvas#close\n * @fires OffCanvas#closed\n */\n close() {\n if (!this.$element.hasClass('is-open') || this.isRevealed) { return; }\n\n /**\n * Fires when the off-canvas menu closes.\n * @event OffCanvas#close\n */\n this.$element.trigger('close.zf.offCanvas');\n\n this.$element.removeClass('is-open');\n\n this.$element.attr('aria-hidden', 'true');\n\n this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n if (this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-closable');\n }\n\n this.$triggers.attr('aria-expanded', 'false');\n\n\n // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.\n this.$element.one(transitionend(this.$element), () => {\n\n this.$element.addClass('is-closed');\n this._removeContentClasses();\n\n if (this.options.transition === 'push') {\n this._unfixStickyElements();\n }\n\n // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);\n this.$element.off('touchstart', this._recordScrollable);\n this.$element.off('touchmove', this._preventDefaultAtEdges);\n this.$element.off('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.off('touchmove', '[data-off-canvas-scrollbox]', this._scrollboxTouchMoved);\n }\n\n if (this.options.trapFocus === true) {\n this.$content.removeAttr('tabindex');\n Keyboard.releaseFocus(this.$element);\n }\n\n /**\n * Fires when the off-canvas menu close transition is done.\n * @event OffCanvas#closed\n */\n this.$element.trigger('closed.zf.offCanvas');\n });\n }\n\n /**\n * Toggles the off-canvas menu open or closed.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n */\n toggle(event, trigger) {\n if (this.$element.hasClass('is-open')) {\n this.close(event, trigger);\n }\n else {\n this.open(event, trigger);\n }\n }\n\n /**\n * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.\n * @function\n * @private\n */\n _handleKeyboard(e) {\n Keyboard.handleKey(e, 'OffCanvas', {\n close: () => {\n this.close();\n this.$lastTrigger.focus();\n return true;\n },\n handled: () => {\n e.preventDefault();\n }\n });\n }\n\n /**\n * Destroys the OffCanvas plugin.\n * @function\n */\n _destroy() {\n this.close();\n this.$element.off('.zf.trigger .zf.offCanvas');\n this.$overlay.off('.zf.offCanvas');\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\nOffCanvas.defaults = {\n /**\n * Allow the user to click outside of the menu to close it.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n\n /**\n * Adds an overlay on top of `[data-off-canvas-content]`.\n * @option\n * @type {boolean}\n * @default true\n */\n contentOverlay: true,\n\n /**\n * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.\n * @option\n * @type {?string}\n * @default null\n */\n contentId: null,\n\n /**\n * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.\n * @option\n * @type {boolean}\n * @default null\n */\n nested: null,\n\n /**\n * Enable/disable scrolling of the main content when an off canvas panel is open.\n * @option\n * @type {boolean}\n * @default true\n */\n contentScroll: true,\n\n /**\n * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.\n * @option\n * @type {string}\n * @default null\n */\n transitionTime: null,\n\n /**\n * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.\n * @option\n * @type {string}\n * @default push\n */\n transition: 'push',\n\n /**\n * Force the page to scroll to top or bottom on open.\n * @option\n * @type {?string}\n * @default null\n */\n forceTo: null,\n\n /**\n * Allow the OffCanvas to remain open for certain breakpoints.\n * @option\n * @type {boolean}\n * @default false\n */\n isRevealed: false,\n\n /**\n * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.\n * @option\n * @type {?string}\n * @default null\n */\n revealOn: null,\n\n /**\n * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.\n * @option\n * @type {?string}\n * @default null\n */\n inCanvasOn: null,\n\n /**\n * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.\n * @option\n * @type {boolean}\n * @default true\n */\n autoFocus: true,\n\n /**\n * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.\n * @option\n * @type {string}\n * @default reveal-for-\n * @todo improve the regex testing for this.\n */\n revealClass: 'reveal-for-',\n\n /**\n * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false\n}\n\nexport {OffCanvas};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Motion } from './foundation.util.motion';\nimport { Timer } from './foundation.util.timer';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * Orbit module.\n * @module foundation.orbit\n * @requires foundation.util.keyboard\n * @requires foundation.util.motion\n * @requires foundation.util.timer\n * @requires foundation.util.imageLoader\n * @requires foundation.util.touch\n */\n\nclass Orbit extends Plugin {\n /**\n * Creates a new instance of an orbit carousel.\n * @class\n * @name Orbit\n * @param {jQuery} element - jQuery object to make into an Orbit Carousel.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Orbit.defaults, this.$element.data(), options);\n this.className = 'Orbit'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('Orbit', {\n 'ltr': {\n 'ARROW_RIGHT': 'next',\n 'ARROW_LEFT': 'previous'\n },\n 'rtl': {\n 'ARROW_LEFT': 'next',\n 'ARROW_RIGHT': 'previous'\n }\n });\n }\n\n /**\n * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.\n * @function\n * @private\n */\n _init() {\n // @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide\n this._reset();\n\n this.$wrapper = this.$element.find(`.${this.options.containerClass}`);\n this.$slides = this.$element.find(`.${this.options.slideClass}`);\n\n var $images = this.$element.find('img'),\n initActive = this.$slides.filter('.is-active'),\n id = this.$element[0].id || GetYoDigits(6, 'orbit');\n\n this.$element.attr({\n 'data-resize': id,\n 'id': id\n });\n\n if (!initActive.length) {\n this.$slides.eq(0).addClass('is-active');\n }\n\n if (!this.options.useMUI) {\n this.$slides.addClass('no-motionui');\n }\n\n if ($images.length) {\n onImagesLoaded($images, this._prepareForOrbit.bind(this));\n } else {\n this._prepareForOrbit();//hehe\n }\n\n if (this.options.bullets) {\n this._loadBullets();\n }\n\n this._events();\n\n if (this.options.autoPlay && this.$slides.length > 1) {\n this.geoSync();\n }\n\n if (this.options.accessible) { // allow wrapper to be focusable to enable arrow navigation\n this.$wrapper.attr('tabindex', 0);\n }\n }\n\n /**\n * Creates a jQuery collection of bullets, if they are being used.\n * @function\n * @private\n */\n _loadBullets() {\n this.$bullets = this.$element.find(`.${this.options.boxOfBullets}`).find('button');\n }\n\n /**\n * Sets a `timer` object on the orbit, and starts the counter for the next slide.\n * @function\n */\n geoSync() {\n var _this = this;\n this.timer = new Timer(\n this.$element,\n {\n duration: this.options.timerDelay,\n infinite: false\n },\n function() {\n _this.changeSlide(true);\n });\n this.timer.start();\n }\n\n /**\n * Sets wrapper and slide heights for the orbit.\n * @function\n * @private\n */\n _prepareForOrbit() {\n this._setWrapperHeight();\n }\n\n /**\n * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.\n * @function\n * @private\n * @param {Function} cb - a callback function to fire when complete.\n */\n _setWrapperHeight(cb) {//rewrite this to `for` loop\n var max = 0, temp, counter = 0, _this = this;\n\n this.$slides.each(function() {\n temp = this.getBoundingClientRect().height;\n $(this).attr('data-slide', counter);\n\n // hide all slides but the active one\n if (!/mui/g.test($(this)[0].className) && _this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {\n $(this).css({'display': 'none'});\n }\n max = temp > max ? temp : max;\n counter++;\n });\n\n if (counter === this.$slides.length) {\n this.$wrapper.css({'height': max}); //only change the wrapper height property once.\n if(cb) {cb(max);} //fire callback with max height dimension.\n }\n }\n\n /**\n * Sets the max-height of each slide.\n * @function\n * @private\n */\n _setSlideHeight(height) {\n this.$slides.each(function() {\n $(this).css('max-height', height);\n });\n }\n\n /**\n * Adds event listeners to basically everything within the element.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n //***************************************\n //**Now using custom event - thanks to:**\n //** Yohai Ararat of Toronto **\n //***************************************\n //\n this.$element.off('.resizeme.zf.trigger').on({\n 'resizeme.zf.trigger': this._prepareForOrbit.bind(this)\n })\n if (this.$slides.length > 1) {\n\n if (this.options.swipe) {\n this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')\n .on('swipeleft.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(true);\n }).on('swiperight.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(false);\n });\n }\n //***************************************\n\n if (this.options.autoPlay) {\n this.$slides.on('click.zf.orbit', function() {\n _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);\n _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();\n });\n\n if (this.options.pauseOnHover) {\n this.$element.on('mouseenter.zf.orbit', function() {\n _this.timer.pause();\n }).on('mouseleave.zf.orbit', function() {\n if (!_this.$element.data('clickedOn')) {\n _this.timer.start();\n }\n });\n }\n }\n\n if (this.options.navButtons) {\n var $controls = this.$element.find(`.${this.options.nextClass}, .${this.options.prevClass}`);\n $controls.attr('tabindex', 0)\n //also need to handle enter/return and spacebar key presses\n .on('click.zf.orbit touchend.zf.orbit', function(e){\n\t e.preventDefault();\n _this.changeSlide($(this).hasClass(_this.options.nextClass));\n });\n }\n\n if (this.options.bullets) {\n this.$bullets.on('click.zf.orbit touchend.zf.orbit', function() {\n if (/is-active/g.test(this.className)) { return false; }//if this is active, kick out of function.\n var idx = $(this).data('slide'),\n ltr = idx > _this.$slides.filter('.is-active').data('slide'),\n $slide = _this.$slides.eq(idx);\n\n _this.changeSlide(ltr, $slide, idx);\n });\n }\n\n if (this.options.accessible) {\n this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) {\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Orbit', {\n next: function() {\n _this.changeSlide(true);\n },\n previous: function() {\n _this.changeSlide(false);\n },\n handled: function() { // if bullet is focused, make sure focus moves\n if ($(e.target).is(_this.$bullets)) {\n _this.$bullets.filter('.is-active').focus();\n }\n }\n });\n });\n }\n }\n }\n\n /**\n * Resets Orbit so it can be reinitialized\n */\n _reset() {\n // Don't do anything if there are no slides (first run)\n if (typeof this.$slides === 'undefined') {\n return;\n }\n\n if (this.$slides.length > 1) {\n // Remove old events\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit')\n\n // Restart timer if autoPlay is enabled\n if (this.options.autoPlay) {\n this.timer.restart();\n }\n\n // Reset all sliddes\n this.$slides.each(function(el) {\n $(el).removeClass('is-active is-active is-in')\n .removeAttr('aria-live')\n .hide();\n });\n\n // Show the first slide\n this.$slides.first().addClass('is-active').show();\n\n // Triggers when the slide has finished animating\n this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]);\n\n // Select first bullet if bullets are present\n if (this.options.bullets) {\n this._updateBullets(0);\n }\n }\n }\n\n /**\n * Changes the current slide to a new one.\n * @function\n * @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.\n * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.\n * @param {Number} idx - the index of the new slide in its collection, if one chosen.\n * @fires Orbit#slidechange\n */\n changeSlide(isLTR, chosenSlide, idx) {\n if (!this.$slides) {return; } // Don't freak out if we're in the middle of cleanup\n var $curSlide = this.$slides.filter('.is-active').eq(0);\n\n if (/mui/g.test($curSlide[0].className)) { return false; } //if the slide is currently animating, kick out of the function\n\n var $firstSlide = this.$slides.first(),\n $lastSlide = this.$slides.last(),\n dirIn = isLTR ? 'Right' : 'Left',\n dirOut = isLTR ? 'Left' : 'Right',\n _this = this,\n $newSlide;\n\n if (!chosenSlide) { //most of the time, this will be auto played or clicked from the navButtons.\n $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!\n (this.options.infiniteWrap ? $curSlide.next(`.${this.options.slideClass}`).length ? $curSlide.next(`.${this.options.slideClass}`) : $firstSlide : $curSlide.next(`.${this.options.slideClass}`))//pick next slide if moving left to right\n :\n (this.options.infiniteWrap ? $curSlide.prev(`.${this.options.slideClass}`).length ? $curSlide.prev(`.${this.options.slideClass}`) : $lastSlide : $curSlide.prev(`.${this.options.slideClass}`));//pick prev slide if moving right to left\n } else {\n $newSlide = chosenSlide;\n }\n\n if ($newSlide.length) {\n /**\n * Triggers before the next slide starts animating in and only if a next slide has been found.\n * @event Orbit#beforeslidechange\n */\n this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);\n\n if (this.options.bullets) {\n idx = idx || this.$slides.index($newSlide); //grab index to update bullets\n this._updateBullets(idx);\n }\n\n if (this.options.useMUI && !this.$element.is(':hidden')) {\n Motion.animateIn(\n $newSlide.addClass('is-active'),\n this.options[`animInFrom${dirIn}`],\n function(){\n $newSlide.css({'display': 'block'}).attr('aria-live', 'polite');\n });\n\n Motion.animateOut(\n $curSlide.removeClass('is-active'),\n this.options[`animOutTo${dirOut}`],\n function(){\n $curSlide.removeAttr('aria-live');\n if(_this.options.autoPlay && !_this.timer.isPaused){\n _this.timer.restart();\n }\n //do stuff?\n });\n } else {\n $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();\n $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();\n if (this.options.autoPlay && !this.timer.isPaused) {\n this.timer.restart();\n }\n }\n /**\n * Triggers when the slide has finished animating in.\n * @event Orbit#slidechange\n */\n this.$element.trigger('slidechange.zf.orbit', [$newSlide]);\n }\n }\n\n /**\n * Updates the active state of the bullets, if displayed.\n * Move the descriptor of the current slide `[data-slide-active-label]` to the newly active bullet.\n * If no `[data-slide-active-label]` is set, will move the exceeding `span` element.\n *\n * @function\n * @private\n * @param {Number} idx - the index of the current slide.\n */\n _updateBullets(idx) {\n var $oldBullet = this.$bullets.filter('.is-active');\n var $othersBullets = this.$bullets.not('.is-active');\n var $newBullet = this.$bullets.eq(idx);\n\n $oldBullet.removeClass('is-active').blur();\n $newBullet.addClass('is-active');\n\n // Find the descriptor for the current slide to move it to the new slide button\n var activeStateDescriptor = $oldBullet.children('[data-slide-active-label]').last();\n\n // If not explicitely given, search for the last \"exceeding\" span element (compared to others bullets).\n if (!activeStateDescriptor.length) {\n var spans = $oldBullet.children('span');\n var spanCountInOthersBullets = $othersBullets.toArray().map(b => $(b).children('span').length);\n\n // If there is an exceeding span element, use it as current slide descriptor\n if (spanCountInOthersBullets.every(count => count < spans.length)) {\n activeStateDescriptor = spans.last();\n activeStateDescriptor.attr('data-slide-active-label', '');\n }\n }\n\n // Move the current slide descriptor to the new slide button\n if (activeStateDescriptor.length) {\n activeStateDescriptor.detach();\n $newBullet.append(activeStateDescriptor);\n }\n }\n\n /**\n * Destroys the carousel and hides the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();\n }\n}\n\nOrbit.defaults = {\n /**\n * Tells the JS to look for and loadBullets.\n * @option\n * @type {boolean}\n * @default true\n */\n bullets: true,\n /**\n * Tells the JS to apply event listeners to nav buttons\n * @option\n * @type {boolean}\n * @default true\n */\n navButtons: true,\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-right'\n */\n animInFromRight: 'slide-in-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-right'\n */\n animOutToRight: 'slide-out-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-left'\n *\n */\n animInFromLeft: 'slide-in-left',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-left'\n */\n animOutToLeft: 'slide-out-left',\n /**\n * Allows Orbit to automatically animate on page load.\n * @option\n * @type {boolean}\n * @default true\n */\n autoPlay: true,\n /**\n * Amount of time, in ms, between slide transitions\n * @option\n * @type {number}\n * @default 5000\n */\n timerDelay: 5000,\n /**\n * Allows Orbit to infinitely loop through the slides\n * @option\n * @type {boolean}\n * @default true\n */\n infiniteWrap: true,\n /**\n * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library\n * @option\n * @type {boolean}\n * @default true\n */\n swipe: true,\n /**\n * Allows the timing function to pause animation on hover.\n * @option\n * @type {boolean}\n * @default true\n */\n pauseOnHover: true,\n /**\n * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys\n * @option\n * @type {boolean}\n * @default true\n */\n accessible: true,\n /**\n * Class applied to the container of Orbit\n * @option\n * @type {string}\n * @default 'orbit-container'\n */\n containerClass: 'orbit-container',\n /**\n * Class applied to individual slides.\n * @option\n * @type {string}\n * @default 'orbit-slide'\n */\n slideClass: 'orbit-slide',\n /**\n * Class applied to the bullet container. You're welcome.\n * @option\n * @type {string}\n * @default 'orbit-bullets'\n */\n boxOfBullets: 'orbit-bullets',\n /**\n * Class applied to the `next` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-next'\n */\n nextClass: 'orbit-next',\n /**\n * Class applied to the `previous` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-previous'\n */\n prevClass: 'orbit-previous',\n /**\n * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatibility.\n * @option\n * @type {boolean}\n * @default true\n */\n useMUI: true\n};\n\nexport {Orbit};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: AccordionMenu\n }\n};\n\n // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n /**\n * Creates a new instance of a responsive menu.\n * @class\n * @name ResponsiveMenu\n * @fires ResponsiveMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element) {\n this.$element = $(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n * @function\n * @private\n */\n _init() {\n\n MediaQuery._init();\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n // Add data-mutate since children may need it.\n this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).on('changed.zf.mediaquery', function() {\n _this._checkMediaQueries();\n });\n // $(window).on('resize.zf.ResponsiveMenu', function() {\n // _this._checkMediaQueries();\n // });\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n this.currentPlugin.destroy();\n $(window).off('.zf.ResponsiveMenu');\n }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n /**\n * Creates a new instance of Tab Bar.\n * @class\n * @name ResponsiveToggle\n * @fires ResponsiveToggle#init\n * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the tab bar by finding the target element, toggling element, and running update().\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = $(`#${targetID}`);\n this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n var target = $(this).data('toggle');\n return (target === targetID || target === \"\");\n });\n this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n // If they were set, parse the animation classes\n if(this.options.animate) {\n let input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n\n /**\n * Adds necessary event handlers for the tab bar to work.\n * @function\n * @private\n */\n _events() {\n this._updateMqHandler = this._update.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n\n /**\n * Checks the current media query to determine if the tab bar should be visible or hidden.\n * @function\n * @private\n */\n _update() {\n // Mobile\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n }\n\n // Desktop\n else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n\n /**\n * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n * @function\n * @fires ResponsiveToggle#toggled\n */\n toggleMenu() {\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n /**\n * Fires when the element attached to the tab bar toggles.\n * @event ResponsiveToggle#toggled\n */\n if(this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n }\n else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n };\n\n _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n}\n\nResponsiveToggle.defaults = {\n /**\n * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n * @option\n * @type {string}\n * @default 'medium'\n */\n hideFor: 'medium',\n\n /**\n * To decide if the toggle should be animated or not.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport { ResponsiveToggle };\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': 'dialog',\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('<div></div>')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState() {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"), 10);\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"), 10);\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Move } from './foundation.util.motion';\nimport { GetYoDigits, rtl as Rtl } from './foundation.core.utils';\n\nimport { Plugin } from './foundation.core.plugin';\n\nimport { Touch } from './foundation.util.touch';\n\nimport { Triggers } from './foundation.util.triggers';\n/**\n * Slider module.\n * @module foundation.slider\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n */\n\nclass Slider extends Plugin {\n /**\n * Creates a new instance of a slider control.\n * @class\n * @name Slider\n * @param {jQuery} element - jQuery object to make into a slider control.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Slider.defaults, this.$element.data(), options);\n this.className = 'Slider'; // ie9 back compat\n this.initialized = false;\n\n // Touch and Triggers inits are idempotent, we just need to make sure it's initialied.\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Slider', {\n 'ltr': {\n 'ARROW_RIGHT': 'increase',\n 'ARROW_UP': 'increase',\n 'ARROW_DOWN': 'decrease',\n 'ARROW_LEFT': 'decrease',\n 'SHIFT_ARROW_RIGHT': 'increaseFast',\n 'SHIFT_ARROW_UP': 'increaseFast',\n 'SHIFT_ARROW_DOWN': 'decreaseFast',\n 'SHIFT_ARROW_LEFT': 'decreaseFast',\n 'HOME': 'min',\n 'END': 'max'\n },\n 'rtl': {\n 'ARROW_LEFT': 'increase',\n 'ARROW_RIGHT': 'decrease',\n 'SHIFT_ARROW_LEFT': 'increaseFast',\n 'SHIFT_ARROW_RIGHT': 'decreaseFast'\n }\n });\n }\n\n /**\n * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).\n * @function\n * @private\n */\n _init() {\n this.inputs = this.$element.find('input');\n this.handles = this.$element.find('[data-slider-handle]');\n\n this.$handle = this.handles.eq(0);\n this.$input = this.inputs.length ? this.inputs.eq(0) : $(`#${this.$handle.attr('aria-controls')}`);\n this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);\n\n if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {\n this.options.disabled = true;\n this.$element.addClass(this.options.disabledClass);\n }\n if (!this.inputs.length) {\n this.inputs = $().add(this.$input);\n this.options.binding = true;\n }\n\n this._setInitAttr(0);\n\n if (this.handles[1]) {\n this.options.doubleSided = true;\n this.$handle2 = this.handles.eq(1);\n this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $(`#${this.$handle2.attr('aria-controls')}`);\n\n if (!this.inputs[1]) {\n this.inputs = this.inputs.add(this.$input2);\n }\n\n // this.$handle.triggerHandler('click.zf.slider');\n this._setInitAttr(1);\n }\n\n // Set handle positions\n this.setHandles();\n\n this._events();\n this.initialized = true;\n }\n\n setHandles() {\n if(this.handles[1]) {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val(), () => {\n this._setHandlePos(this.$handle2, this.inputs.eq(1).val());\n });\n } else {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val());\n }\n }\n\n _reflow() {\n this.setHandles();\n }\n /**\n * @function\n * @private\n * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)\n */\n _pctOfBar(value) {\n var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start)\n\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n }\n\n return pctOfBar.toFixed(2)\n }\n\n /**\n * @function\n * @private\n * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value\n */\n _value(pctOfBar) {\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n }\n\n var value\n if (this.options.vertical) {\n // linear interpolation which is working with negative values for start\n // https://math.stackexchange.com/a/1019084\n value = parseFloat(this.options.end) + pctOfBar * (this.options.start - this.options.end)\n } else {\n value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);\n }\n\n return value\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function\n */\n _logTransform(value) {\n return baseLog(this.options.nonLinearBase, ((value*(this.options.nonLinearBase-1))+1))\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function\n */\n _powTransform(value) {\n return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1)\n }\n\n /**\n * Sets the position of the selected handle and fill bar.\n * @function\n * @private\n * @param {jQuery} $hndl - the selected handle to move.\n * @param {Number} location - floating point between the start and end values of the slider bar.\n * @param {Function} cb - callback function to fire on completion.\n * @fires Slider#moved\n * @fires Slider#changed\n */\n _setHandlePos($hndl, location, cb) {\n // don't move if the slider has been disabled since its initialization\n if (this.$element.hasClass(this.options.disabledClass)) {\n return;\n }\n //might need to alter that slightly for bars that will have odd number selections.\n location = parseFloat(location);//on input change events, convert string to number...grumble.\n\n // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max\n if (location < this.options.start) { location = this.options.start; }\n else if (location > this.options.end) { location = this.options.end; }\n\n var isDbl = this.options.doubleSided;\n\n if (isDbl) { //this block is to prevent 2 handles from crossing eachother. Could/should be improved.\n if (this.handles.index($hndl) === 0) {\n var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));\n location = location >= h2Val ? h2Val - this.options.step : location;\n } else {\n var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));\n location = location <= h1Val ? h1Val + this.options.step : location;\n }\n }\n\n var _this = this,\n vert = this.options.vertical,\n hOrW = vert ? 'height' : 'width',\n lOrT = vert ? 'top' : 'left',\n handleDim = $hndl[0].getBoundingClientRect()[hOrW],\n elemDim = this.$element[0].getBoundingClientRect()[hOrW],\n //percentage of bar min/max value based on click or drag point\n pctOfBar = this._pctOfBar(location),\n //number of actual pixels to shift the handle, based on the percentage obtained above\n pxToMove = (elemDim - handleDim) * pctOfBar,\n //percentage of bar to shift the handle\n movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal);\n //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value\n location = parseFloat(location.toFixed(this.options.decimal));\n // declare empty object for css adjustments, only used with 2 handled-sliders\n var css = {};\n\n this._setValues($hndl, location);\n\n // TODO update to calculate based on values set to respective inputs??\n if (isDbl) {\n var isLeftHndl = this.handles.index($hndl) === 0,\n //empty variable, will be used for min-height/width for fill bar\n dim,\n //percentage w/h of the handle compared to the slider bar\n handlePct = Math.floor(percent(handleDim, elemDim) * 100);\n //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar\n if (isLeftHndl) {\n //left or top percentage value to apply to the fill bar.\n css[lOrT] = `${movement}%`;\n //calculate the new min-height/width for the fill bar.\n dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;\n //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider\n //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.\n if (cb && typeof cb === 'function') { cb(); }//this is only needed for the initialization of 2 handled sliders\n } else {\n //just caching the value of the left/bottom handle's left/top property\n var handlePos = parseFloat(this.$handle[0].style[lOrT]);\n //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0\n //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself\n dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start)/((this.options.end-this.options.start)/100) : handlePos) + handlePct;\n }\n // assign the min-height/width to our css object\n css[`min-${hOrW}`] = `${dim}%`;\n }\n\n //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.\n var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;\n\n Move(moveTime, $hndl, function() {\n // adjusting the left/top property of the handle, based on the percentage calculated above\n // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,\n // fall back to next best guess.\n if (isNaN(movement)) {\n $hndl.css(lOrT, `${pctOfBar * 100}%`);\n }\n else {\n $hndl.css(lOrT, `${movement}%`);\n }\n\n if (!_this.options.doubleSided) {\n //if single-handled, a simple method to expand the fill bar\n _this.$fill.css(hOrW, `${pctOfBar * 100}%`);\n } else {\n //otherwise, use the css object we created above\n _this.$fill.css(css);\n }\n });\n\n if (this.initialized) {\n this.$element.one('finished.zf.animate', function() {\n /**\n * Fires when the handle is done moving.\n * @event Slider#moved\n */\n _this.$element.trigger('moved.zf.slider', [$hndl]);\n });\n /**\n * Fires when the value has not been change for a given time.\n * @event Slider#changed\n */\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.$element.trigger('changed.zf.slider', [$hndl]);\n }, _this.options.changedDelay);\n }\n }\n\n /**\n * Sets the initial attribute for the slider element.\n * @function\n * @private\n * @param {Number} idx - index of the current handle/input to use.\n */\n _setInitAttr(idx) {\n var initVal = (idx === 0 ? this.options.initialStart : this.options.initialEnd)\n var id = this.inputs.eq(idx).attr('id') || GetYoDigits(6, 'slider');\n this.inputs.eq(idx).attr({\n 'id': id,\n 'max': this.options.end,\n 'min': this.options.start,\n 'step': this.options.step\n });\n this.inputs.eq(idx).val(initVal);\n this.handles.eq(idx).attr({\n 'role': 'slider',\n 'aria-controls': id,\n 'aria-valuemax': this.options.end,\n 'aria-valuemin': this.options.start,\n 'aria-valuenow': initVal,\n 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',\n 'tabindex': 0\n });\n }\n\n /**\n * Sets the input and `aria-valuenow` values for the slider element.\n * @function\n * @private\n * @param {jQuery} $handle - the currently selected handle.\n * @param {Number} val - floating point of the new value.\n */\n _setValues($handle, val) {\n var idx = this.options.doubleSided ? this.handles.index($handle) : 0;\n this.inputs.eq(idx).val(val);\n $handle.attr('aria-valuenow', val);\n }\n\n /**\n * Handles events on the slider element.\n * Calculates the new location of the current handle.\n * If there are two handles and the bar was clicked, it determines which handle to move.\n * @function\n * @private\n * @param {Object} e - the `event` object passed from the listener.\n * @param {jQuery} $handle - the current handle to calculate for, if selected.\n * @param {Number} val - floating point number for the new value of the slider.\n * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.\n */\n _handleEvent(e, $handle, val) {\n var value;\n if (!val) {//click or drag events\n e.preventDefault();\n var _this = this,\n vertical = this.options.vertical,\n param = vertical ? 'height' : 'width',\n direction = vertical ? 'top' : 'left',\n eventOffset = vertical ? e.pageY : e.pageX,\n barDim = this.$element[0].getBoundingClientRect()[param],\n windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft();\n\n var elemOffset = this.$element.offset()[direction];\n\n // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...\n // best way to guess this is simulated is if clientY == pageY\n if (e.clientY === e.pageY) { eventOffset = eventOffset + windowScroll; }\n var eventFromBar = eventOffset - elemOffset;\n var barXY;\n if (eventFromBar < 0) {\n barXY = 0;\n } else if (eventFromBar > barDim) {\n barXY = barDim;\n } else {\n barXY = eventFromBar;\n }\n var offsetPct = percent(barXY, barDim);\n\n value = this._value(offsetPct);\n\n // turn everything around for RTL, yay math!\n if (Rtl() && !this.options.vertical) {value = this.options.end - value;}\n\n value = _this._adjustValue(null, value);\n\n if (!$handle) {//figure out which handle it is, pass it to the next function.\n var firstHndlPos = absPosition(this.$handle, direction, barXY, param),\n secndHndlPos = absPosition(this.$handle2, direction, barXY, param);\n $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;\n }\n\n } else {//change event on input\n value = this._adjustValue(null, val);\n }\n\n this._setHandlePos($handle, value);\n }\n\n /**\n * Adjustes value for handle in regard to step value. returns adjusted value\n * @function\n * @private\n * @param {jQuery} $handle - the selected handle.\n * @param {Number} value - value to adjust. used if $handle is falsy\n */\n _adjustValue($handle, value) {\n var val,\n step = this.options.step,\n div = parseFloat(step/2),\n left, previousVal, nextVal;\n if (!!$handle) {\n val = parseFloat($handle.attr('aria-valuenow'));\n }\n else {\n val = value;\n }\n if (val >= 0) {\n left = val % step;\n } else {\n left = step + (val % step);\n }\n previousVal = val - left;\n nextVal = previousVal + step;\n if (left === 0) {\n return val;\n }\n val = val >= previousVal + div ? nextVal : previousVal;\n return val;\n }\n\n /**\n * Adds event listeners to the slider elements.\n * @function\n * @private\n */\n _events() {\n this._eventsForHandle(this.$handle);\n if(this.handles[1]) {\n this._eventsForHandle(this.$handle2);\n }\n }\n\n\n /**\n * Adds event listeners a particular handle\n * @function\n * @private\n * @param {jQuery} $handle - the current handle to apply listeners to.\n */\n _eventsForHandle($handle) {\n var _this = this,\n curHandle;\n\n const handleChangeEvent = function(e) {\n const idx = _this.inputs.index($(this));\n _this._handleEvent(e, _this.handles.eq(idx), $(this).val());\n };\n\n // IE only triggers the change event when the input loses focus which strictly follows the HTML specification\n // listen for the enter key and trigger a change\n // @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events\n this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function (e) {\n if(e.keyCode === 13) handleChangeEvent.call(this, e);\n });\n\n this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);\n\n if (this.options.clickSelect) {\n this.$element.off('click.zf.slider').on('click.zf.slider', function(e) {\n if (_this.$element.data('dragging')) { return false; }\n\n if (!$(e.target).is('[data-slider-handle]')) {\n if (_this.options.doubleSided) {\n _this._handleEvent(e);\n } else {\n _this._handleEvent(e, _this.$handle);\n }\n }\n });\n }\n\n if (this.options.draggable) {\n this.handles.addTouch();\n\n var $body = $('body');\n $handle\n .off('mousedown.zf.slider')\n .on('mousedown.zf.slider', function(e) {\n $handle.addClass('is-dragging');\n _this.$fill.addClass('is-dragging');//\n _this.$element.data('dragging', true);\n\n curHandle = $(e.currentTarget);\n\n $body.on('mousemove.zf.slider', function(ev) {\n ev.preventDefault();\n _this._handleEvent(ev, curHandle);\n\n }).on('mouseup.zf.slider', function(ev) {\n _this._handleEvent(ev, curHandle);\n\n $handle.removeClass('is-dragging');\n _this.$fill.removeClass('is-dragging');\n _this.$element.data('dragging', false);\n\n $body.off('mousemove.zf.slider mouseup.zf.slider');\n });\n })\n // prevent events triggered by touch\n .on('selectstart.zf.slider touchmove.zf.slider', function(e) {\n e.preventDefault();\n });\n }\n\n $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) {\n var _$handle = $(this),\n idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,\n oldValue = parseFloat($handle.attr('aria-valuenow')),\n newValue;\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Slider', {\n decrease: function() {\n newValue = oldValue - _this.options.step;\n },\n increase: function() {\n newValue = oldValue + _this.options.step;\n },\n decreaseFast: function() {\n newValue = oldValue - _this.options.step * 10;\n },\n increaseFast: function() {\n newValue = oldValue + _this.options.step * 10;\n },\n min: function() {\n newValue = _this.options.start;\n },\n max: function() {\n newValue = _this.options.end;\n },\n handled: function() { // only set handle pos when event was handled specially\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }\n });\n /*if (newValue) { // if pressed key has special function, update value\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }*/\n });\n }\n\n /**\n * Destroys the slider plugin.\n */\n _destroy() {\n this.handles.off('.zf.slider');\n this.inputs.off('.zf.slider');\n this.$element.off('.zf.slider');\n\n clearTimeout(this.timeout);\n }\n}\n\nSlider.defaults = {\n /**\n * Minimum value for the slider scale.\n * @option\n * @type {number}\n * @default 0\n */\n start: 0,\n /**\n * Maximum value for the slider scale.\n * @option\n * @type {number}\n * @default 100\n */\n end: 100,\n /**\n * Minimum value change per change event.\n * @option\n * @type {number}\n * @default 1\n */\n step: 1,\n /**\n * Value at which the handle/input *(left handle/first input)* should be set to on initialization.\n * @option\n * @type {number}\n * @default 0\n */\n initialStart: 0,\n /**\n * Value at which the right handle/second input should be set to on initialization.\n * @option\n * @type {number}\n * @default 100\n */\n initialEnd: 100,\n /**\n * Allows the input to be located outside the container and visible. Set to by the JS\n * @option\n * @type {boolean}\n * @default false\n */\n binding: false,\n /**\n * Allows the user to click/tap on the slider bar to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n clickSelect: true,\n /**\n * Set to true and use the `vertical` class to change alignment to vertical.\n * @option\n * @type {boolean}\n * @default false\n */\n vertical: false,\n /**\n * Allows the user to drag the slider handle(s) to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n draggable: true,\n /**\n * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.\n * @option\n * @type {boolean}\n * @default false\n */\n disabled: false,\n /**\n * Allows the use of two handles. Double checked by the JS. Changes some logic handling.\n * @option\n * @type {boolean}\n * @default false\n */\n doubleSided: false,\n /**\n * Potential future feature.\n */\n // steps: 100,\n /**\n * Number of decimal places the plugin should go to for floating point precision.\n * @option\n * @type {number}\n * @default 2\n */\n decimal: 2,\n /**\n * Time delay for dragged elements.\n */\n // dragDelay: 0,\n /**\n * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.\n * @option\n * @type {number}\n * @default 200\n */\n moveTime: 200,//update this if changing the transition time in the sass\n /**\n * Class applied to disabled sliders.\n * @option\n * @type {string}\n * @default 'disabled'\n */\n disabledClass: 'disabled',\n /**\n * Will invert the default layout for a vertical<span data-tooltip title=\"who would do this???\"> </span>slider.\n * @option\n * @type {boolean}\n * @default false\n */\n invertVertical: false,\n /**\n * Milliseconds before the `changed.zf-slider` event is triggered after value change.\n * @option\n * @type {number}\n * @default 500\n */\n changedDelay: 500,\n /**\n * Basevalue for non-linear sliders\n * @option\n * @type {number}\n * @default 5\n */\n nonLinearBase: 5,\n /**\n * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.\n * @option\n * @type {string}\n * @default 'linear'\n */\n positionValueFunction: 'linear',\n};\n\nfunction percent(frac, num) {\n return (frac / num);\n}\nfunction absPosition($handle, dir, clickPos, param) {\n return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos);\n}\nfunction baseLog(base, value) {\n return Math.log(value)/Math.log(base)\n}\n\nexport {Slider};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") === \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor === \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor === \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function() {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function() {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css.bottom = 'auto';\n if(isTop) {\n css.top = 0;\n } else {\n css.top = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n var newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n // Recalculate the height only if it is \"dynamic\"\n if (this.options.dynamicHeight || !this.containerHeight) {\n // Get the sticked element height and apply it to the container to \"hold the place\"\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n newContainerHeight = this.$element.css(\"display\") === \"none\" ? 0 : newContainerHeight;\n this.$container.css('height', newContainerHeight);\n this.containerHeight = newContainerHeight;\n }\n this.elemHeight = this.containerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(this.containerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */\n container: '<div data-sticky-container></div>',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */\n dynamicHeight: true,\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n /**\n * Creates a new instance of tabs.\n * @class\n * @name Tabs\n * @fires Tabs#init\n * @param {jQuery} element - jQuery object to make into tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n this.className = 'Tabs'; // ie9 back compat\n\n this._init();\n Keyboard.register('Tabs', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'previous',\n 'ARROW_DOWN': 'next',\n 'ARROW_LEFT': 'previous'\n // 'TAB': 'next',\n // 'SHIFT_TAB': 'previous'\n });\n }\n\n /**\n * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n * @private\n */\n _init() {\n var _this = this;\n this._isInitializing = true;\n\n this.$element.attr({'role': 'tablist'});\n this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n this.$tabTitles.each(function(){\n var $elem = $(this),\n $link = $elem.find('a'),\n isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n $tabContent = $(`#${hash}`);\n\n $elem.attr({'role': 'presentation'});\n\n $link.attr({\n 'role': 'tab',\n 'aria-controls': hash,\n 'aria-selected': isActive,\n 'id': linkId,\n 'tabindex': isActive ? '0' : '-1'\n });\n\n $tabContent.attr({\n 'role': 'tabpanel',\n 'aria-labelledby': linkId\n });\n\n // Save up the initial hash to return to it later when going back in history\n if (isActive) {\n _this._initialAnchor = `#${hash}`;\n }\n\n if(!isActive) {\n $tabContent.attr('aria-hidden', 'true');\n }\n\n if(isActive && _this.options.autoFocus){\n _this.onLoadListener = onLoad($(window), function() {\n $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n $link.focus();\n });\n });\n }\n });\n\n if(this.options.matchHeight) {\n var $images = this.$tabContent.find('img');\n\n if ($images.length) {\n onImagesLoaded($images, this._setHeight.bind(this));\n } else {\n this._setHeight();\n }\n }\n\n // Current context-bound function to open tabs on page load or history hashchange\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, select it\n if ($anchor && $anchor.length && $link && $link.length) {\n this.selectTab($anchor, true);\n }\n // Otherwise, collapse everything\n else {\n this._collapse();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset}, this.options.deepLinkSmudgeDelay);\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */\n this.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the tabs.\n * @private\n */\n _events() {\n this._addKeyHandler();\n this._addClickHandler();\n this._setHeightMqHandler = null;\n\n if (this.options.matchHeight) {\n this._setHeightMqHandler = this._setHeight.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n\n if(this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Adds click handlers for items within the tabs.\n * @private\n */\n _addClickHandler() {\n var _this = this;\n\n this.$element\n .off('click.zf.tabs')\n .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n e.preventDefault();\n _this._handleTabChange($(this));\n });\n }\n\n /**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */\n _addKeyHandler() {\n var _this = this;\n\n this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n if (e.which === 9) return;\n\n\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n if (_this.options.wrapOnKeys) {\n $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n } else {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n }\n return;\n }\n });\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Tabs', {\n open: function() {\n $element.find('[role=\"tab\"]').focus();\n _this._handleTabChange($element);\n },\n previous: function() {\n $prevElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($prevElement);\n },\n next: function() {\n $nextElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($nextElement);\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */\n _handleTabChange($target, historyHandled) {\n\n // With `activeCollapse`, if the target is the active Tab, collapse it.\n if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n if(this.options.activeCollapse) {\n this._collapse();\n }\n return;\n }\n\n var $oldTab = this.$element.\n find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n $tabLink = $target.find('[role=\"tab\"]'),\n target = $tabLink.attr('data-tabs-target'),\n anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n $targetContent = this.$tabContent.find(anchor);\n\n //close old tab\n this._collapseTab($oldTab);\n\n //open new tab\n this._openTab($target);\n\n //either replace or update browser history\n if (this.options.deepLink && !historyHandled) {\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n\n /**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */\n this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n //fire to children a mutation event\n $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */\n _openTab($target) {\n var $tabLink = $target.find('[role=\"tab\"]'),\n hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n $targetContent = this.$tabContent.find(`#${hash}`);\n\n $target.addClass(`${this.options.linkActiveClass}`);\n\n $tabLink.attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n });\n\n $targetContent\n .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n }\n\n /**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */\n _collapseTab($target) {\n var $targetAnchor = $target\n .removeClass(`${this.options.linkActiveClass}`)\n .find('[role=\"tab\"]')\n .attr({\n 'aria-selected': 'false',\n 'tabindex': -1\n });\n\n $(`#${$targetAnchor.attr('aria-controls')}`)\n .removeClass(`${this.options.panelActiveClass}`)\n .attr({ 'aria-hidden': 'true' })\n }\n\n /**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */\n _collapse() {\n var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n if ($activeTab.length) {\n this._collapseTab($activeTab);\n\n /**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */\n this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n }\n }\n\n /**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */\n selectTab(elem, historyHandled) {\n var idStr, hashIdStr;\n\n if (typeof elem === 'object') {\n idStr = elem[0].id;\n } else {\n idStr = elem;\n }\n\n if (idStr.indexOf('#') < 0) {\n hashIdStr = `#${idStr}`;\n } else {\n hashIdStr = idStr;\n idStr = idStr.slice(1);\n }\n\n var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n this._handleTabChange($target, historyHandled);\n };\n\n /**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */\n _setHeight() {\n var max = 0,\n _this = this; // Lock down the `this` value for the root tabs object\n\n if (!this.$tabContent) {\n return;\n }\n\n this.$tabContent\n .find(`.${this.options.panelClass}`)\n .css('min-height', '')\n .each(function() {\n\n var panel = $(this),\n isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n if (!isActive) {\n panel.css({'visibility': 'hidden', 'display': 'block'});\n }\n\n var temp = this.getBoundingClientRect().height;\n\n if (!isActive) {\n panel.css({\n 'visibility': '',\n 'display': ''\n });\n }\n\n max = temp > max ? temp : max;\n })\n .css('min-height', `${max}px`);\n }\n\n /**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */\n _destroy() {\n this.$element\n .find(`.${this.options.linkClass}`)\n .off('.zf.tabs').hide().end()\n .find(`.${this.options.panelClass}`)\n .hide();\n\n if (this.options.matchHeight) {\n if (this._setHeightMqHandler != null) {\n $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n }\n\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n if (this.onLoadListener) {\n $(window).off(this.onLoadListener);\n }\n }\n}\n\nTabs.defaults = {\n /**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n\n /**\n * If `deepLinkSmudge` is enabled, animation offset from the top for the deep link adjustment\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n\n /**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n\n /**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n\n /**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */\n wrapOnKeys: true,\n\n /**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */\n matchHeight: false,\n\n /**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */\n activeCollapse: false,\n\n /**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */\n linkClass: 'tabs-title',\n\n /**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n linkActiveClass: 'is-active',\n\n /**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */\n panelClass: 'tabs-panel',\n\n /**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n","import $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n /**\n * Creates a new instance of Toggler.\n * @class\n * @name Toggler\n * @fires Toggler#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n * @function\n * @private\n */\n _init() {\n // Collect triggers to set ARIA attributes to\n var id = this.$element[0].id,\n $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n var input;\n // Parse animation classes if they were set\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n // - aria-expanded: according to the element visibility.\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n }\n // Otherwise, parse toggle class\n else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error(`The 'toggler' option containing the target class is required, got \"${input}\"`);\n }\n // Allow for a . at the beginning of the string\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n // - aria-expanded: according to the elements class set.\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n // - aria-controls: adding the element id to it if not already in it.\n $triggers.each((index, trigger) => {\n const $trigger = $(trigger);\n const controls = $trigger.attr('aria-controls') || '';\n\n const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n });\n }\n\n /**\n * Initializes events for the toggle trigger.\n * @function\n * @private\n */\n _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n\n /**\n * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n * @function\n * @fires Toggler#on\n * @fires Toggler#off\n */\n toggle() {\n this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n\n _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n /**\n * Fires if the target element has the class after a toggle.\n * @event Toggler#on\n */\n this.$element.trigger('on.zf.toggler');\n }\n else {\n /**\n * Fires if the target element does not have the class after a toggle.\n * @event Toggler#off\n */\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n\n _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n Motion.animateIn(this.$element, this.animationIn, function() {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$element, this.animationOut, function() {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n\n _updateARIA(isOn) {\n var id = this.$element[0].id;\n $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n .attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n\n /**\n * Destroys the instance of Toggler on the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.toggler');\n }\n}\n\nToggler.defaults = {\n /**\n * Class of the element to toggle. It can be provided with or without \".\"\n * @option\n * @type {string}\n */\n toggler: undefined,\n /**\n * Tells the plugin if the element should animated when toggled.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport {Toggler};\n","import $ from 'jquery';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\nimport { Positionable } from './foundation.positionable';\n\n/**\n * Tooltip module.\n * @module foundation.tooltip\n * @requires foundation.util.box\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass Tooltip extends Positionable {\n /**\n * Creates a new instance of a Tooltip.\n * @class\n * @name Tooltip\n * @fires Tooltip#init\n * @param {jQuery} element - jQuery object to attach a tooltip to.\n * @param {Object} options - object to extend the default configuration.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);\n this.className = 'Tooltip'; // ie9 back compat\n\n this.isActive = false;\n this.isClick = false;\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.\n * @private\n */\n _init() {\n MediaQuery._init();\n var elemId = this.$element.attr('aria-describedby') || GetYoDigits(6, 'tooltip');\n\n this.options.tipText = this.options.tipText || this.$element.attr('title');\n this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);\n\n if (this.options.allowHtml) {\n this.template.appendTo(document.body)\n .html(this.options.tipText)\n .hide();\n } else {\n this.template.appendTo(document.body)\n .text(this.options.tipText)\n .hide();\n }\n\n this.$element.attr({\n 'title': '',\n 'aria-describedby': elemId,\n 'data-yeti-box': elemId,\n 'data-toggle': elemId,\n 'data-resize': elemId\n }).addClass(this.options.triggerClass);\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var elementClassName = this.$element[0].className;\n if (this.$element[0] instanceof SVGElement) {\n elementClassName = elementClassName.baseVal;\n }\n var position = elementClassName.match(/\\b(top|left|right|bottom)\\b/g);\n return position ? position[0] : 'top';\n }\n\n _getDefaultAlignment() {\n return 'center';\n }\n\n _getHOffset() {\n if(this.position === 'left' || this.position === 'right') {\n return this.options.hOffset + this.options.tooltipWidth;\n } else {\n return this.options.hOffset\n }\n }\n\n _getVOffset() {\n if(this.position === 'top' || this.position === 'bottom') {\n return this.options.vOffset + this.options.tooltipHeight;\n } else {\n return this.options.vOffset\n }\n }\n\n /**\n * builds the tooltip element, adds attributes, and returns the template.\n * @private\n */\n _buildTemplate(id) {\n var templateClasses = (`${this.options.tooltipClass} ${this.options.templateClasses}`).trim();\n var $template = $('<div></div>').addClass(templateClasses).attr({\n 'role': 'tooltip',\n 'aria-hidden': true,\n 'data-is-active': false,\n 'data-is-focus': false,\n 'id': id\n });\n return $template;\n }\n\n /**\n * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.\n * if the tooltip is larger than the screen width, default to full width - any user selected margin\n * @private\n */\n _setPosition() {\n super._setPosition(this.$element, this.template);\n }\n\n /**\n * reveals the tooltip, and fires an event to close any other open tooltips on the page\n * @fires Tooltip#closeme\n * @fires Tooltip#show\n * @function\n */\n show() {\n if (this.options.showOn !== 'all' && !MediaQuery.is(this.options.showOn)) {\n // console.error('The screen is too small to display this tooltip');\n return false;\n }\n\n var _this = this;\n this.template.css('visibility', 'hidden').show();\n this._setPosition();\n this.template.removeClass('top bottom left right').addClass(this.position)\n this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);\n\n /**\n * Fires to close all other open tooltips on the page\n * @event Closeme#tooltip\n */\n this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));\n\n\n this.template.attr({\n 'data-is-active': true,\n 'aria-hidden': false\n });\n _this.isActive = true;\n this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() {\n //maybe do stuff?\n });\n /**\n * Fires when the tooltip is shown\n * @event Tooltip#show\n */\n this.$element.trigger('show.zf.tooltip');\n }\n\n /**\n * Hides the current tooltip, and resets the positioning class if it was changed due to collision\n * @fires Tooltip#hide\n * @function\n */\n hide() {\n var _this = this;\n this.template.stop().attr({\n 'aria-hidden': true,\n 'data-is-active': false\n }).fadeOut(this.options.fadeOutDuration, function() {\n _this.isActive = false;\n _this.isClick = false;\n });\n /**\n * fires when the tooltip is hidden\n * @event Tooltip#hide\n */\n this.$element.trigger('hide.zf.tooltip');\n }\n\n /**\n * adds event listeners for the tooltip and its anchor\n * TODO combine some of the listeners like focus and mouseenter, etc.\n * @private\n */\n _events() {\n const _this = this;\n const hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n var isFocus = false;\n\n // `disableForTouch: Fully disable the tooltip on touch devices\n if (hasTouch && this.options.disableForTouch) return;\n\n if (!this.options.disableHover) {\n this.$element\n .on('mouseenter.zf.tooltip', function() {\n if (!_this.isActive) {\n _this.timeout = setTimeout(function() {\n _this.show();\n }, _this.options.hoverDelay);\n }\n })\n .on('mouseleave.zf.tooltip', ignoreMousedisappear(function() {\n clearTimeout(_this.timeout);\n if (!isFocus || (_this.isClick && !_this.options.clickOpen)) {\n _this.hide();\n }\n }));\n }\n\n if (hasTouch) {\n this.$element\n .on('tap.zf.tooltip touchend.zf.tooltip', function () {\n _this.isActive ? _this.hide() : _this.show();\n });\n }\n\n if (this.options.clickOpen) {\n this.$element.on('mousedown.zf.tooltip', function() {\n if (_this.isClick) {\n //_this.hide();\n // _this.isClick = false;\n } else {\n _this.isClick = true;\n if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {\n _this.show();\n }\n }\n });\n } else {\n this.$element.on('mousedown.zf.tooltip', function() {\n _this.isClick = true;\n });\n }\n\n this.$element.on({\n // 'toggle.zf.trigger': this.toggle.bind(this),\n // 'close.zf.trigger': this.hide.bind(this)\n 'close.zf.trigger': this.hide.bind(this)\n });\n\n this.$element\n .on('focus.zf.tooltip', function() {\n isFocus = true;\n if (_this.isClick) {\n // If we're not showing open on clicks, we need to pretend a click-launched focus isn't\n // a real focus, otherwise on hover and come back we get bad behavior\n if(!_this.options.clickOpen) { isFocus = false; }\n return false;\n } else {\n _this.show();\n }\n })\n\n .on('focusout.zf.tooltip', function() {\n isFocus = false;\n _this.isClick = false;\n _this.hide();\n })\n\n .on('resizeme.zf.trigger', function() {\n if (_this.isActive) {\n _this._setPosition();\n }\n });\n }\n\n /**\n * adds a toggle method, in addition to the static show() & hide() functions\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Destroys an instance of tooltip, removes template element from the view.\n * @function\n */\n _destroy() {\n this.$element.attr('title', this.template.text())\n .off('.zf.trigger .zf.tooltip')\n .removeClass(this.options.triggerClass)\n .removeClass('top right left bottom')\n .removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');\n\n this.template.remove();\n }\n}\n\nTooltip.defaults = {\n /**\n * Time, in ms, before a tooltip should open on hover.\n * @option\n * @type {number}\n * @default 200\n */\n hoverDelay: 200,\n /**\n * Time, in ms, a tooltip should take to fade into view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeInDuration: 150,\n /**\n * Time, in ms, a tooltip should take to fade out of view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeOutDuration: 150,\n /**\n * Disables hover events from opening the tooltip if set to true\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disable the tooltip for touch devices.\n * This can be useful to make elements with a tooltip on it trigger their\n * action on the first tap instead of displaying the tooltip.\n * @option\n * @type {booelan}\n * @default false\n */\n disableForTouch: false,\n /**\n * Optional addtional classes to apply to the tooltip template on init.\n * @option\n * @type {string}\n * @default ''\n */\n templateClasses: '',\n /**\n * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.\n * @option\n * @type {string}\n * @default 'tooltip'\n */\n tooltipClass: 'tooltip',\n /**\n * Class applied to the tooltip anchor element.\n * @option\n * @type {string}\n * @default 'has-tip'\n */\n triggerClass: 'has-tip',\n /**\n * Minimum breakpoint size at which to open the tooltip.\n * @option\n * @type {string}\n * @default 'small'\n */\n showOn: 'small',\n /**\n * Custom template to be used to generate markup for tooltip.\n * @option\n * @type {string}\n * @default ''\n */\n template: '',\n /**\n * Text displayed in the tooltip template on open.\n * @option\n * @type {string}\n * @default ''\n */\n tipText: '',\n touchCloseText: 'Tap to close.',\n /**\n * Allows the tooltip to remain open if triggered with a click or touch event.\n * @option\n * @type {boolean}\n * @default true\n */\n clickOpen: true,\n /**\n * Position of tooltip. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, tooltip will first try to\n * position as defined by data-position and data-alignment, but reposition if\n * it would cause an overflow. @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * Less common for tooltips.\n * @option\n * @type {boolean}\n * @default false\n */\n allowBottomOverlap: false,\n /**\n * Distance, in pixels, the template should push away from the anchor on the Y axis.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Distance, in pixels, the template should push away from the anchor on the X axis\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip\n * @option\n * @type {number}\n * @default 14\n */\n tooltipHeight: 14,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip\n * @option\n * @type {number}\n * @default 12\n */\n tooltipWidth: 12,\n /**\n * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,\n * allowing HTML may open yourself up to XSS attacks.\n * @option\n * @type {boolean}\n * @default false\n */\n allowHtml: false\n};\n\n/**\n * TODO utilize resize event trigger\n */\n\nexport {Tooltip};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n tabs: {\n cssClass: 'tabs',\n plugin: Tabs,\n open: (plugin, target) => plugin.selectTab(target),\n close: null /* not supported */,\n toggle: null /* not supported */,\n },\n accordion: {\n cssClass: 'accordion',\n plugin: Accordion,\n open: (plugin, target) => plugin.down($(target)),\n close: (plugin, target) => plugin.up($(target)),\n toggle: (plugin, target) => plugin.toggle($(target)),\n }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n constructor(element, options) {\n super(element, options);\n return this.options.reflow && this.storezfData || this;\n }\n\n /**\n * Creates a new instance of a responsive accordion tabs.\n * @class\n * @name ResponsiveAccordionTabs\n * @fires ResponsiveAccordionTabs#init\n * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.$element.data('zfPluginBase', this);\n this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n this.rules = this.$element.data('responsive-accordion-tabs');\n this.currentMq = null;\n this.currentRule = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n if (!this.$element.attr('id')) {\n this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n }\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n this._getAllOptions();\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n }\n\n _getAllOptions() {\n //get all defaults and options\n var _this = this;\n _this.allOptions = {};\n for (var key in MenuPlugins) {\n if (MenuPlugins.hasOwnProperty(key)) {\n var obj = MenuPlugins[key];\n try {\n var dummyPlugin = $('<ul></ul>');\n var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n for (var keyKey in tmpPlugin.options) {\n if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n var objObj = tmpPlugin.options[keyKey];\n _this.allOptions[keyKey] = objObj;\n }\n }\n tmpPlugin.destroy();\n }\n catch(e) {\n console.warn(`Warning: Problems getting Accordion/Tab options: ${e}`);\n }\n }\n }\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) {\n //don't know why but on nested elements data zfPlugin get's lost\n if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n this.currentPlugin.destroy();\n }\n this._handleMarkup(this.rules[matchedMq].cssClass);\n this.currentRule = this.rules[matchedMq];\n this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n }\n\n _handleMarkup(toSet){\n var _this = this, fromString = 'accordion';\n var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n if ($panels.length) fromString = 'tabs';\n if (fromString === toSet) {\n return;\n }\n\n var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n this.$element.removeAttr('role');\n var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n if (fromString === 'tabs') {\n $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n } else {\n $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n }\n\n $panels.css({display:'',visibility:''});\n $liHeads.css({display:'',visibility:''});\n if (toSet === 'accordion') {\n $panels.each(function(key,value){\n $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n $('[data-tabs-content='+_this.$element.attr('id')+']').after('<div id=\"tabs-placeholder-'+_this.$element.attr('id')+'\"></div>').detach();\n $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n $liHeadsA.addClass('accordion-title');\n });\n } else if (toSet === 'tabs') {\n var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n if ($placeholder.length) {\n $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n $placeholder.remove();\n } else {\n $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n }\n $panels.each(function(key,value){\n var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n var hash = $liHeadsA.get(key).hash.slice(1);\n var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n if (hash !== id) {\n if (hash !== '') {\n $(value).attr('id',hash);\n } else {\n hash = id;\n $(value).attr('id',hash);\n $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n }\n }\n var isActive = $($liHeads.get(key)).hasClass('is-active');\n if (isActive) {\n tempValue.addClass('is-active');\n }\n });\n $liHeads.addClass(tabsTitle);\n };\n }\n\n /**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */\n open() {\n if (this.currentRule && typeof this.currentRule.open === 'function') {\n return this.currentRule.open(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */\n close() {\n if (this.currentRule && typeof this.currentRule.close === 'function') {\n return this.currentRule.close(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */\n toggle() {\n if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n return this.currentRule.toggle(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n if (this.currentPlugin) this.currentPlugin.destroy();\n $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n","import $ from 'jquery';\n\nimport { Foundation } from '../foundation.core';\nimport * as CoreUtils from '../foundation.core.utils';\nimport { Box } from '../foundation.util.box'\nimport { onImagesLoaded } from '../foundation.util.imageLoader';\nimport { Keyboard } from '../foundation.util.keyboard';\nimport { MediaQuery } from '../foundation.util.mediaQuery';\nimport { Motion, Move } from '../foundation.util.motion';\nimport { Nest } from '../foundation.util.nest';\nimport { Timer } from '../foundation.util.timer';\nimport { Touch } from '../foundation.util.touch';\nimport { Triggers } from '../foundation.util.triggers';\nimport { Abide } from '../foundation.abide';\nimport { Accordion } from '../foundation.accordion';\nimport { AccordionMenu } from '../foundation.accordionMenu';\nimport { Drilldown } from '../foundation.drilldown';\nimport { Dropdown } from '../foundation.dropdown';\nimport { DropdownMenu } from '../foundation.dropdownMenu';\nimport { Equalizer } from '../foundation.equalizer';\nimport { Interchange } from '../foundation.interchange';\nimport { Magellan } from '../foundation.magellan';\nimport { OffCanvas } from '../foundation.offcanvas';\nimport { Orbit } from '../foundation.orbit';\nimport { ResponsiveMenu } from '../foundation.responsiveMenu';\nimport { ResponsiveToggle } from '../foundation.responsiveToggle';\nimport { Reveal } from '../foundation.reveal';\nimport { Slider } from '../foundation.slider';\nimport { SmoothScroll } from '../foundation.smoothScroll';\nimport { Sticky } from '../foundation.sticky';\nimport { Tabs } from '../foundation.tabs';\nimport { Toggler } from '../foundation.toggler';\nimport { Tooltip } from '../foundation.tooltip';\nimport { ResponsiveAccordionTabs } from '../foundation.responsiveAccordionTabs';\n\nFoundation.addToJquery($);\n\n// Add Foundation Utils to Foundation global namespace for backwards\n// compatibility.\nFoundation.rtl = CoreUtils.rtl;\nFoundation.GetYoDigits = CoreUtils.GetYoDigits;\nFoundation.transitionend = CoreUtils.transitionend;\nFoundation.RegExpEscape = CoreUtils.RegExpEscape;\nFoundation.onLoad = CoreUtils.onLoad;\n\nFoundation.Box = Box;\nFoundation.onImagesLoaded = onImagesLoaded;\nFoundation.Keyboard = Keyboard;\nFoundation.MediaQuery = MediaQuery;\nFoundation.Motion = Motion;\nFoundation.Move = Move;\nFoundation.Nest = Nest;\nFoundation.Timer = Timer;\n\n// Touch and Triggers previously were almost purely sede effect driven,\n// so no need to add it to Foundation, just init them.\nTouch.init($);\nTriggers.init($, Foundation);\nMediaQuery._init();\n\nFoundation.plugin(Abide, 'Abide');\nFoundation.plugin(Accordion, 'Accordion');\nFoundation.plugin(AccordionMenu, 'AccordionMenu');\nFoundation.plugin(Drilldown, 'Drilldown');\nFoundation.plugin(Dropdown, 'Dropdown');\nFoundation.plugin(DropdownMenu, 'DropdownMenu');\nFoundation.plugin(Equalizer, 'Equalizer');\nFoundation.plugin(Interchange, 'Interchange');\nFoundation.plugin(Magellan, 'Magellan');\nFoundation.plugin(OffCanvas, 'OffCanvas');\nFoundation.plugin(Orbit, 'Orbit');\nFoundation.plugin(ResponsiveMenu, 'ResponsiveMenu');\nFoundation.plugin(ResponsiveToggle, 'ResponsiveToggle');\nFoundation.plugin(Reveal, 'Reveal');\nFoundation.plugin(Slider, 'Slider');\nFoundation.plugin(SmoothScroll, 'SmoothScroll');\nFoundation.plugin(Sticky, 'Sticky');\nFoundation.plugin(Tabs, 'Tabs');\nFoundation.plugin(Toggler, 'Toggler');\nFoundation.plugin(Tooltip, 'Tooltip');\nFoundation.plugin(ResponsiveAccordionTabs, 'ResponsiveAccordionTabs');\n\nexport {\n Foundation,\n CoreUtils,\n Box,\n onImagesLoaded,\n Keyboard,\n MediaQuery,\n Motion,\n Nest,\n Timer,\n Touch,\n Triggers,\n Abide,\n Accordion,\n AccordionMenu,\n Drilldown,\n Dropdown,\n DropdownMenu,\n Equalizer,\n Interchange,\n Magellan,\n OffCanvas,\n Orbit,\n ResponsiveMenu,\n ResponsiveToggle,\n Reveal,\n Slider,\n SmoothScroll,\n Sticky,\n Tabs,\n Toggler,\n Tooltip,\n ResponsiveAccordionTabs\n}\n\nexport default Foundation;\n\n","var DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue;\n\n // document-fragments dont have attributes so lets not do anything\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n }\n\n // update attributes on original DOM element\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n if (fromValue !== attrValue) {\n if (attr.prefix === 'xmlns'){\n attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n }\n\n // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n var fromNodeAttrs = fromNode.attributes;\n\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\n\nvar doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement('template');\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement('body');\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\nfunction toElement(str) {\n str = str.trim();\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `<tr><th>Hi</th></tr>` which\n // createContextualFragment doesn't support\n // <template> support not available in IE\n return createFragmentFromTemplate(str);\n } else if (HAS_RANGE_SUPPORT) {\n return createFragmentFromRange(str);\n }\n\n return createFragmentFromWrap(str);\n}\n\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n * nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */\nfunction compareNodeNames(fromEl, toEl) {\n var fromNodeName = fromEl.nodeName;\n var toNodeName = toEl.nodeName;\n var fromCodeStart, toCodeStart;\n\n if (fromNodeName === toNodeName) {\n return true;\n }\n\n fromCodeStart = fromNodeName.charCodeAt(0);\n toCodeStart = toNodeName.charCodeAt(0);\n\n // If the target element is a virtual DOM node or SVG node then we may\n // need to normalize the tag name before comparing. Normal HTML elements that are\n // in the \"http://www.w3.org/1999/xhtml\"\n // are converted to upper case\n if (fromCodeStart <= 90 && toCodeStart >= 97) { // from is upper and to is lower\n return fromNodeName === toNodeName.toUpperCase();\n } else if (toCodeStart <= 90 && fromCodeStart >= 97) { // to is upper and from is lower\n return toNodeName === fromNodeName.toUpperCase();\n } else {\n return false;\n }\n}\n\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */\nfunction createElementNS(name, namespaceURI) {\n return !namespaceURI || namespaceURI === NS_XHTML ?\n doc.createElement(name) :\n doc.createElementNS(namespaceURI, name);\n}\n\n/**\n * Copies the children of one DOM element to another DOM element\n */\nfunction moveChildren(fromEl, toEl) {\n var curChild = fromEl.firstChild;\n while (curChild) {\n var nextChild = curChild.nextSibling;\n toEl.appendChild(curChild);\n curChild = nextChild;\n }\n return toEl;\n}\n\nfunction syncBooleanAttrProp(fromEl, toEl, name) {\n if (fromEl[name] !== toEl[name]) {\n fromEl[name] = toEl[name];\n if (fromEl[name]) {\n fromEl.setAttribute(name, '');\n } else {\n fromEl.removeAttribute(name);\n }\n }\n}\n\nvar specialElHandlers = {\n OPTION: function(fromEl, toEl) {\n var parentNode = fromEl.parentNode;\n if (parentNode) {\n var parentName = parentNode.nodeName.toUpperCase();\n if (parentName === 'OPTGROUP') {\n parentNode = parentNode.parentNode;\n parentName = parentNode && parentNode.nodeName.toUpperCase();\n }\n if (parentName === 'SELECT' && !parentNode.hasAttribute('multiple')) {\n if (fromEl.hasAttribute('selected') && !toEl.selected) {\n // Workaround for MS Edge bug where the 'selected' attribute can only be\n // removed if set to a non-empty value:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n fromEl.setAttribute('selected', 'selected');\n fromEl.removeAttribute('selected');\n }\n // We have to reset select element's selectedIndex to -1, otherwise setting\n // fromEl.selected using the syncBooleanAttrProp below has no effect.\n // The correct selectedIndex will be set in the SELECT special handler below.\n parentNode.selectedIndex = -1;\n }\n }\n syncBooleanAttrProp(fromEl, toEl, 'selected');\n },\n /**\n * The \"value\" attribute is special for the <input> element since it sets\n * the initial value. Changing the \"value\" attribute without changing the\n * \"value\" property will have no effect since it is only used to the set the\n * initial value. Similar for the \"checked\" attribute, and \"disabled\".\n */\n INPUT: function(fromEl, toEl) {\n syncBooleanAttrProp(fromEl, toEl, 'checked');\n syncBooleanAttrProp(fromEl, toEl, 'disabled');\n\n if (fromEl.value !== toEl.value) {\n fromEl.value = toEl.value;\n }\n\n if (!toEl.hasAttribute('value')) {\n fromEl.removeAttribute('value');\n }\n },\n\n TEXTAREA: function(fromEl, toEl) {\n var newValue = toEl.value;\n if (fromEl.value !== newValue) {\n fromEl.value = newValue;\n }\n\n var firstChild = fromEl.firstChild;\n if (firstChild) {\n // Needed for IE. Apparently IE sets the placeholder as the\n // node value and vise versa. This ignores an empty update.\n var oldValue = firstChild.nodeValue;\n\n if (oldValue == newValue || (!newValue && oldValue == fromEl.placeholder)) {\n return;\n }\n\n firstChild.nodeValue = newValue;\n }\n },\n SELECT: function(fromEl, toEl) {\n if (!toEl.hasAttribute('multiple')) {\n var selectedIndex = -1;\n var i = 0;\n // We have to loop through children of fromEl, not toEl since nodes can be moved\n // from toEl to fromEl directly when morphing.\n // At the time this special handler is invoked, all children have already been morphed\n // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n var curChild = fromEl.firstChild;\n var optgroup;\n var nodeName;\n while(curChild) {\n nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n if (nodeName === 'OPTGROUP') {\n optgroup = curChild;\n curChild = optgroup.firstChild;\n } else {\n if (nodeName === 'OPTION') {\n if (curChild.hasAttribute('selected')) {\n selectedIndex = i;\n break;\n }\n i++;\n }\n curChild = curChild.nextSibling;\n if (!curChild && optgroup) {\n curChild = optgroup.nextSibling;\n optgroup = null;\n }\n }\n }\n\n fromEl.selectedIndex = selectedIndex;\n }\n }\n};\n\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_FRAGMENT_NODE$1 = 11;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n if (node) {\n return (node.getAttribute && node.getAttribute('id')) || node.id;\n }\n}\n\nfunction morphdomFactory(morphAttrs) {\n\n return function morphdom(fromNode, toNode, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof toNode === 'string') {\n if (fromNode.nodeName === '#document' || fromNode.nodeName === 'HTML' || fromNode.nodeName === 'BODY') {\n var toNodeHtml = toNode;\n toNode = doc.createElement('html');\n toNode.innerHTML = toNodeHtml;\n } else {\n toNode = toElement(toNode);\n }\n }\n\n var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n var onNodeAdded = options.onNodeAdded || noop;\n var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n var onElUpdated = options.onElUpdated || noop;\n var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n var onNodeDiscarded = options.onNodeDiscarded || noop;\n var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n var childrenOnly = options.childrenOnly === true;\n\n // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n var fromNodesLookup = Object.create(null);\n var keyedRemovalList = [];\n\n function addKeyedRemoval(key) {\n keyedRemovalList.push(key);\n }\n\n function walkDiscardedChildNodes(node, skipKeyedNodes) {\n if (node.nodeType === ELEMENT_NODE) {\n var curChild = node.firstChild;\n while (curChild) {\n\n var key = undefined;\n\n if (skipKeyedNodes && (key = getNodeKey(curChild))) {\n // If we are skipping keyed nodes then we add the key\n // to a list so that it can be handled at the very end.\n addKeyedRemoval(key);\n } else {\n // Only report the node as discarded if it is not keyed. We do this because\n // at the end we loop through all keyed elements that were unmatched\n // and then discard them in one final pass.\n onNodeDiscarded(curChild);\n if (curChild.firstChild) {\n walkDiscardedChildNodes(curChild, skipKeyedNodes);\n }\n }\n\n curChild = curChild.nextSibling;\n }\n }\n }\n\n /**\n * Removes a DOM node out of the original DOM\n *\n * @param {Node} node The node to remove\n * @param {Node} parentNode The nodes parent\n * @param {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n * @return {undefined}\n */\n function removeNode(node, parentNode, skipKeyedNodes) {\n if (onBeforeNodeDiscarded(node) === false) {\n return;\n }\n\n if (parentNode) {\n parentNode.removeChild(node);\n }\n\n onNodeDiscarded(node);\n walkDiscardedChildNodes(node, skipKeyedNodes);\n }\n\n // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future\n // function indexTree(root) {\n // var treeWalker = document.createTreeWalker(\n // root,\n // NodeFilter.SHOW_ELEMENT);\n //\n // var el;\n // while((el = treeWalker.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n\n // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future\n //\n // function indexTree(node) {\n // var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);\n // var el;\n // while((el = nodeIterator.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n\n function indexTree(node) {\n if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n var curChild = node.firstChild;\n while (curChild) {\n var key = getNodeKey(curChild);\n if (key) {\n fromNodesLookup[key] = curChild;\n }\n\n // Walk recursively\n indexTree(curChild);\n\n curChild = curChild.nextSibling;\n }\n }\n }\n\n indexTree(fromNode);\n\n function handleNodeAdded(el) {\n onNodeAdded(el);\n\n var curChild = el.firstChild;\n while (curChild) {\n var nextSibling = curChild.nextSibling;\n\n var key = getNodeKey(curChild);\n if (key) {\n var unmatchedFromEl = fromNodesLookup[key];\n // if we find a duplicate #id node in cache, replace `el` with cache value\n // and morph it to the child node.\n if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n morphEl(unmatchedFromEl, curChild);\n } else {\n handleNodeAdded(curChild);\n }\n } else {\n // recursively call for curChild and it's children to see if we find something in\n // fromNodesLookup\n handleNodeAdded(curChild);\n }\n\n curChild = nextSibling;\n }\n }\n\n function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n // We have processed all of the \"to nodes\". If curFromNodeChild is\n // non-null then we still have some from nodes left over that need\n // to be removed\n while (curFromNodeChild) {\n var fromNextSibling = curFromNodeChild.nextSibling;\n if ((curFromNodeKey = getNodeKey(curFromNodeChild))) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = fromNextSibling;\n }\n }\n\n function morphEl(fromEl, toEl, childrenOnly) {\n var toElKey = getNodeKey(toEl);\n\n if (toElKey) {\n // If an element with an ID is being morphed then it will be in the final\n // DOM so clear it out of the saved elements collection\n delete fromNodesLookup[toElKey];\n }\n\n if (!childrenOnly) {\n // optional\n if (onBeforeElUpdated(fromEl, toEl) === false) {\n return;\n }\n\n // update attributes on original DOM element first\n morphAttrs(fromEl, toEl);\n // optional\n onElUpdated(fromEl);\n\n if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {\n return;\n }\n }\n\n if (fromEl.nodeName !== 'TEXTAREA') {\n morphChildren(fromEl, toEl);\n } else {\n specialElHandlers.TEXTAREA(fromEl, toEl);\n }\n }\n\n function morphChildren(fromEl, toEl) {\n var curToNodeChild = toEl.firstChild;\n var curFromNodeChild = fromEl.firstChild;\n var curToNodeKey;\n var curFromNodeKey;\n\n var fromNextSibling;\n var toNextSibling;\n var matchingFromEl;\n\n // walk the children\n outer: while (curToNodeChild) {\n toNextSibling = curToNodeChild.nextSibling;\n curToNodeKey = getNodeKey(curToNodeChild);\n\n // walk the fromNode children all the way through\n while (curFromNodeChild) {\n fromNextSibling = curFromNodeChild.nextSibling;\n\n if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n\n curFromNodeKey = getNodeKey(curFromNodeChild);\n\n var curFromNodeType = curFromNodeChild.nodeType;\n\n // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n var isCompatible = undefined;\n\n if (curFromNodeType === curToNodeChild.nodeType) {\n if (curFromNodeType === ELEMENT_NODE) {\n // Both nodes being compared are Element nodes\n\n if (curToNodeKey) {\n // The target node has a key so we want to match it up with the correct element\n // in the original DOM tree\n if (curToNodeKey !== curFromNodeKey) {\n // The current element in the original DOM tree does not have a matching key so\n // let's check our lookup to see if there is a matching element in the original\n // DOM tree\n if ((matchingFromEl = fromNodesLookup[curToNodeKey])) {\n if (fromNextSibling === matchingFromEl) {\n // Special case for single element removals. To avoid removing the original\n // DOM node out of the tree (since that can break CSS transitions, etc.),\n // we will instead discard the current node and wait until the next\n // iteration to properly match up the keyed target element with its matching\n // element in the original tree\n isCompatible = false;\n } else {\n // We found a matching keyed element somewhere in the original DOM tree.\n // Let's move the original DOM node into the current position and morph\n // it.\n\n // NOTE: We use insertBefore instead of replaceChild because we want to go through\n // the `removeNode()` function for the node that is being discarded so that\n // all lifecycle hooks are correctly invoked\n fromEl.insertBefore(matchingFromEl, curFromNodeChild);\n\n // fromNextSibling = curFromNodeChild.nextSibling;\n\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n\n curFromNodeChild = matchingFromEl;\n }\n } else {\n // The nodes are not compatible since the \"to\" node has a key and there\n // is no matching keyed node in the source tree\n isCompatible = false;\n }\n }\n } else if (curFromNodeKey) {\n // The original has a key\n isCompatible = false;\n }\n\n isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n if (isCompatible) {\n // We found compatible DOM elements so transform\n // the current \"from\" node to match the current\n // target DOM node.\n // MORPH\n morphEl(curFromNodeChild, curToNodeChild);\n }\n\n } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n // Both nodes being compared are Text or Comment nodes\n isCompatible = true;\n // Simply update nodeValue on the original node to\n // change the text value\n if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n }\n\n }\n }\n\n if (isCompatible) {\n // Advance both the \"to\" child and the \"from\" child since we found a match\n // Nothing else to do as we already recursively called morphChildren above\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n\n // No compatible match so remove the old node from the DOM and continue trying to find a\n // match in the original DOM. However, we only do this if the from node is not keyed\n // since it is possible that a keyed node might match up with a node somewhere else in the\n // target tree and we don't want to discard it just yet since it still might find a\n // home in the final DOM tree. After everything is done we will remove any keyed nodes\n // that didn't find a home\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n\n curFromNodeChild = fromNextSibling;\n } // END: while(curFromNodeChild) {}\n\n // If we got this far then we did not find a candidate match for\n // our \"to node\" and we exhausted all of the children \"from\"\n // nodes. Therefore, we will just append the current \"to\" node\n // to the end\n if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n fromEl.appendChild(matchingFromEl);\n // MORPH\n morphEl(matchingFromEl, curToNodeChild);\n } else {\n var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);\n if (onBeforeNodeAddedResult !== false) {\n if (onBeforeNodeAddedResult) {\n curToNodeChild = onBeforeNodeAddedResult;\n }\n\n if (curToNodeChild.actualize) {\n curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n }\n fromEl.appendChild(curToNodeChild);\n handleNodeAdded(curToNodeChild);\n }\n }\n\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n }\n\n cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n\n var specialElHandler = specialElHandlers[fromEl.nodeName];\n if (specialElHandler) {\n specialElHandler(fromEl, toEl);\n }\n } // END: morphChildren(...)\n\n var morphedNode = fromNode;\n var morphedNodeType = morphedNode.nodeType;\n var toNodeType = toNode.nodeType;\n\n if (!childrenOnly) {\n // Handle the case where we are given two DOM nodes that are not\n // compatible (e.g. <div> --> <span> or <div> --> TEXT)\n if (morphedNodeType === ELEMENT_NODE) {\n if (toNodeType === ELEMENT_NODE) {\n if (!compareNodeNames(fromNode, toNode)) {\n onNodeDiscarded(fromNode);\n morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n }\n } else {\n // Going from an element node to a text node\n morphedNode = toNode;\n }\n } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) { // Text or comment node\n if (toNodeType === morphedNodeType) {\n if (morphedNode.nodeValue !== toNode.nodeValue) {\n morphedNode.nodeValue = toNode.nodeValue;\n }\n\n return morphedNode;\n } else {\n // Text node to something else\n morphedNode = toNode;\n }\n }\n }\n\n if (morphedNode === toNode) {\n // The \"to node\" was not compatible with the \"from node\" so we had to\n // toss out the \"from node\" and use the \"to node\"\n onNodeDiscarded(fromNode);\n } else {\n if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {\n return;\n }\n\n morphEl(morphedNode, toNode, childrenOnly);\n\n // We now need to loop over any keyed nodes that might need to be\n // removed. We only do the removal if we know that the keyed node\n // never found a match. When a keyed node is matched up we remove\n // it out of fromNodesLookup and we use fromNodesLookup to determine\n // if a keyed node has been matched up or not\n if (keyedRemovalList) {\n for (var i=0, len=keyedRemovalList.length; i<len; i++) {\n var elToRemove = fromNodesLookup[keyedRemovalList[i]];\n if (elToRemove) {\n removeNode(elToRemove, elToRemove.parentNode, false);\n }\n }\n }\n }\n\n if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {\n if (morphedNode.actualize) {\n morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);\n }\n // If we had to swap out the from node with a new node because the old\n // node was not compatible with the target node then we need to\n // replace the old DOM node in the original DOM tree. This is only\n // possible if the original DOM node was part of a DOM tree which\n // we know is the case if it has a parent node.\n fromNode.parentNode.replaceChild(morphedNode, fromNode);\n }\n\n return morphedNode;\n };\n}\n\nvar morphdom = morphdomFactory(morphAttrs);\n\nexport default morphdom;\n","/* eslint-disable camelcase */\n\nimport TomSelect from \"tom-select/dist/cjs/tom-select.popular\";\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const tagContainers = document.querySelectorAll(\".js-tags-container\");\n const config = {\n plugins: [\"remove_button\"],\n create: true,\n render: {\n no_results: null\n }\n };\n\n tagContainers.forEach((container) => new TomSelect(container, config))\n});\n","/* eslint no-unused-vars: 0 */\nimport Tribute from \"src/decidim/vendor/tribute\"\n\n$(() => {\n const $hashtagContainer = $(\".js-hashtags\");\n const nodatafound = $hashtagContainer.attr(\"data-noresults\");\n\n // The editor implements hashtags functionality by itself so it is not needed\n // to attach tribute to the rich text editor.\n if ($hashtagContainer.parent().hasClass(\"editor\")) {\n return;\n }\n\n let noMatchTemplate = null\n if (nodatafound) {\n noMatchTemplate = () => `<li>${nodatafound}</li>`;\n }\n\n /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n let remoteSearch = function(text, cb) {\n $.post(window.Decidim.config.get(\"api_path\"), {query: `{hashtags(name:\"${text}\") {name}}`}).\n\n then((response) => {\n let data = response.data.hashtags || {};\n cb(data)\n }).fail(function() {\n cb([])\n }).always(() => {\n // This function runs Tribute every single time you type something\n // So we must evalute DOM properties after each\n const $parent = $(tribute.current.element).parent()\n $parent.addClass(\"is-active\")\n\n // We need to move the container to the wrapper selected\n const $tribute = $parent.find(\".tribute-container\");\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n })\n };\n\n // tribute.js docs - http://github.com/zurb/tribute\n /* global Tribute*/\n let tribute = new Tribute({\n trigger: \"#\",\n values: function (text, cb) {\n remoteSearch(text, (hashtags) => cb(hashtags));\n },\n positionMenu: true,\n menuContainer: null,\n fillAttr: \"name\",\n noMatchTemplate: noMatchTemplate,\n lookup: (item) => item.name,\n selectTemplate: function(item) {\n if (typeof item === \"undefined\") {\n return null;\n }\n return `#${item.original.name}`;\n },\n menuItemTemplate: function(item) {\n let tpl = `<strong>${item.original.name}</strong>`;\n return tpl;\n }\n });\n\n // DOM manipulation\n $hashtagContainer.on(\"focusin\", (event) => {\n // Set the parent container relative to the current element\n\n tribute.menuContainer = event.target.parentNode;\n });\n $hashtagContainer.on(\"focusout\", (event) => {\n let $parent = $(event.target).parent();\n\n if ($parent.hasClass(\"is-active\")) {\n $parent.removeClass(\"is-active\");\n }\n });\n $hashtagContainer.on(\"input\", (event) => {\n let $parent = $(event.target).parent();\n\n if (tribute.isActive) {\n // We need to move the container to the wrapper selected\n let $tribute = $(\".tribute-container\");\n $tribute.appendTo($parent);\n // Parent adaptation\n $parent.addClass(\"is-active\");\n } else {\n $parent.removeClass(\"is-active\");\n }\n });\n});\n","/* eslint no-unused-vars: 0 */\nimport Tribute from \"src/decidim/vendor/tribute\"\n\nconst mentionsInitializer = () => {\n const $mentionContainer = $(\".js-mentions\");\n const nodatafound = $mentionContainer.attr(\"data-noresults\");\n\n // The editor implements hashtags functionality by itself so it is not needed\n // to attach tribute to the rich text editor.\n if ($mentionContainer.parent().hasClass(\"editor\")) {\n return;\n }\n\n let noMatchTemplate = null\n if (nodatafound) {\n noMatchTemplate = () => `<li>${nodatafound}</li>`;\n }\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds\n /* eslint no-invalid-this: 0 */\n /* eslint consistent-this: 0 */\n /* eslint prefer-reflect: 0 */\n const debounce = function(callback, wait) {\n let timeout = null;\n return (...args) => {\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(() => callback.apply(context, args), wait);\n };\n }\n\n /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n let remoteSearch = function(text, cb) {\n let query = `{users(filter:{wildcard:\"${text}\"}){nickname,name,avatarUrl,__typename,...on UserGroup{membersCount}}}`;\n $.post(window.Decidim.config.get(\"api_path\"), {query: query}).\n then((response) => {\n let data = response.data.users || {};\n cb(data)\n }).fail(function() {\n cb([])\n }).always(() => {\n // This function runs Tribute every single time you type something\n // So we must evalute DOM properties after each\n const $parent = $(tribute.current.element).parent();\n $parent.addClass(\"is-active\");\n\n // We need to move the container to the wrapper selected\n const $tribute = $parent.find(\".tribute-container\");\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n })\n };\n\n // tribute.js docs - http://github.com/zurb/tribute\n /* global Tribute*/\n let tribute = new Tribute({\n trigger: \"@\",\n // avoid overloading the API if the user types too fast\n values: debounce(function (text, cb) {\n remoteSearch(text, (users) => cb(users));\n }, 250),\n positionMenu: true,\n menuContainer: null,\n allowSpaces: true,\n menuItemLimit: 5,\n fillAttr: \"nickname\",\n selectClass: \"highlight\",\n noMatchTemplate: noMatchTemplate,\n lookup: (item) => item.nickname + item.name,\n selectTemplate: function(item) {\n if (typeof item === \"undefined\") {\n return null;\n }\n return item.original.nickname;\n },\n menuItemTemplate: function(item) {\n let svg = \"\";\n if (window.Decidim && item.original.__typename === \"UserGroup\") {\n const iconsPath = window.Decidim.config.get(\"icons_path\");\n\n svg = `<span class=\"is-group\">${item.original.membersCount}x <svg class=\"icon--members icon\"><use href=\"${iconsPath}#ri-team-line\"/></svg></span>`;\n }\n return `\n <img src=\"${item.original.avatarUrl}\" alt=\"author-avatar\">\n <strong>${item.original.nickname}</strong>\n <small>${item.original.name}</small>\n ${svg}\n `;\n }\n });\n\n let setupEvents = function($element) {\n // DOM manipulation\n $element.on(\"focusin\", (event) => {\n // Set the parent container relative to the current element\n tribute.menuContainer = event.target.parentNode;\n });\n $element.on(\"focusout\", (event) => {\n let $parent = $(event.target).parent();\n\n if ($parent.hasClass(\"is-active\")) {\n $parent.removeClass(\"is-active\");\n }\n });\n $element.on(\"input\", (event) => {\n let $parent = $(event.target).parent();\n\n if (tribute.isActive) {\n // We need to move the container to the wrapper selected\n let $tribute = $(\".tribute-container\");\n $tribute.appendTo($parent);\n\n // Parent adaptation\n $parent.addClass(\"is-active\");\n } else {\n $parent.removeClass(\"is-active\");\n }\n });\n };\n\n setupEvents($mentionContainer);\n\n // This allows external libraries (like React) to use the component\n // by simply firing and event targeting the element where to attach Tribute\n $(document).on(\"attach-mentions-element\", (event, element) => {\n if (!element) {\n return;\n }\n tribute.attach(element);\n // Due a bug in Tribute, re-add menu to DOM if it has been removed\n // See https://github.com/zurb/tribute/issues/140\n if (tribute.menu && !document.body.contains(tribute.menu)) {\n tribute.range.getDocument().body.appendChild(tribute.menu);\n }\n setupEvents($(element));\n });\n\n tribute.attach($mentionContainer);\n}\n\n$(() => mentionsInitializer());\n","/* eslint max-lines: [\"error\", 350] */\n\nimport AutoCompleteJS from \"@tarekraafat/autocomplete.js\";\n// Styles from node_modules/@tarekraafat/autocomplete.js\n// It needs to be done in JS because postcss-import does not find files in node_modules/\nimport \"@tarekraafat/autocomplete.js/dist/css/autoComplete.02.css\";\n\nexport default class AutoComplete {\n constructor(el, options = {}) {\n this.element = el;\n this.stickySelectedSpan = null;\n this.clearStickySelectionSpan = null;\n this.stickyHiddenInput = null;\n this.promptDiv = null;\n const thresholdTemp = options.threshold || 2;\n this.options = Object.assign({\n // Defines name of the hidden input (e.g. assembly_member[user_id])\n name: null,\n // Placeholder of the visible input field\n placeholder: \"\",\n // Defines what happens after user has selected value from suggestions\n // sticky - Allows selecting a single value and not editing the value after selected (e.g. as the admin autocomplete fields)\n // single - Allows selecting a single value and editing the selected text after the selection (e.g. geocoding field)\n // multi - Allows selecting multiple values\n // null (default) - Disable selection event handling in this class\n mode: null,\n // Defines if we show input help (e.g. \"Type at least three characters to search\") or not.\n searchPrompt: false,\n // Defines search prompt message, only shown if showPrompt is enabled!\n searchPromptText: `Type at least ${thresholdTemp} characters to search`,\n // Defines items that are selected already when page is loaded before user selects them. (e.g. when form submit fails)\n selected: null,\n // Defines how many characters input has to have before we start searching\n threshold: thresholdTemp,\n // Defines how many results to show in the autocomplete selection list\n // by maximum.\n maxResults: 10,\n // Defines the data keys against which to match the user input when\n // searching through the results. For example, when the following\n // data is returned by the API:\n // { id: 123, name: \"John\", nickname: \"john\", __typename: \"User\" }\n //\n // You can define the data keys array as [\"name\", \"nickname\"] in\n // which case the results shown to user would be only those that\n // have matching text in these defined fields.\n dataMatchKeys: null,\n // The data source is a method that gets the callback parameter as\n // its first argument which should be called with the results array\n // once they are returned by the API.\n // For example:\n // (query, callback) => {\n // (async () => {\n // const results = await callAjax(`/api/url?query=${query}`);\n // callback(results);\n // })();\n // }\n //\n // Signature: (callback: Function)\n dataSource: () => [],\n // Filters the data list returned by the data source before it is shown\n // to the user. Can be used e.g. to hide already selected values from\n // the list.\n dataFilter: null,\n // Delay in milliseconds how long to wait after user action before\n // doing a backend request.\n delay: 200,\n // Allows modifying the suggested list before they are displayed\n // Signature: (element: HTMLElement, value: Object)\n modifyList: null,\n // Allows modifying the suggested items before they are displayed in the list\n // Signature: (element: HTMLElement, value: Object)\n modifyResult: null\n }, options);\n\n this.autocomplete = new AutoCompleteJS({\n selector: () => this.element,\n diacritics: true,\n placeHolder: options.placeholder,\n // Delay (milliseconds) before autocomplete engine starts. It is preventing many queries when user is typing fast.\n debounce: 200,\n threshold: this.options.threshold,\n data: {\n keys: this.options.dataMatchKeys,\n src: async (query) => {\n const fetchResults = () => {\n return new Promise((resolve) => {\n this.options.dataSource(query, resolve);\n });\n }\n\n try {\n return await fetchResults();\n } catch (error) {\n return error;\n }\n },\n filter: (list) => {\n const results = list.filter(\n (item, idx, arr) => {\n return arr.findIndex((val) => val.value === item.value) === idx;\n }\n );\n\n if (this.options.dataFilter) {\n return this.options.dataFilter(results);\n }\n\n return results;\n }\n },\n resultsList: {\n maxResults: this.options.maxResults,\n element: (item, data) => {\n if (!this.options.modifyList) {\n return;\n }\n\n this.options.modifyList(item, data);\n }\n },\n resultItem: {\n element: (item, data) => {\n if (!this.options.modifyResult) {\n return;\n }\n\n this.options.modifyResult(item, data.value);\n }\n },\n events: {\n input: {\n blur: () => {\n this.promptDiv.style.display = \"none\";\n }\n }\n }\n });\n\n this.acWrapper = this.element.closest(\".autoComplete_wrapper\");\n this.element.ac = this.autocomplete;\n\n // Stop input field from bubbling open and close events to parent elements,\n // because foundation closes modal from these events.\n const stopPropagation = (event) => {\n event.stopPropagation();\n }\n this.element.addEventListener(\"close\", stopPropagation);\n this.element.addEventListener(\"open\", stopPropagation);\n\n this.createPromptDiv();\n\n switch (this.options.mode) {\n case \"sticky\":\n this.createStickySelect(this.options.name);\n break;\n case \"multi\":\n this.createMultiSelect(this.options.name);\n break;\n default:\n }\n }\n\n setInput(value) {\n this.autocomplete.input.value = value;\n }\n\n handleEvent(event) {\n switch (this.options.mode) {\n case \"single\":\n this.setInput(event.detail.selection.value[event.detail.selection.key]);\n break;\n case \"sticky\":\n this.handleStickyEvents(event);\n break;\n case \"multi\":\n this.handleMultiEvents(event);\n break;\n default:\n }\n }\n\n handleMultiEvents(event) {\n switch (event.type) {\n case \"selection\":\n this.addMultiSelectItem(event.detail.selection);\n break;\n default:\n }\n }\n\n handleStickyEvents(event) {\n switch (event.type) {\n case \"selection\":\n this.addStickySelectItem(event.detail.selection);\n break;\n case \"click\":\n if (event.target === this.clearStickySelectionSpan) {\n this.removeStickySelection();\n }\n break;\n case \"keyup\":\n if (this.stickyHiddenInput.value !== \"\" && event.target === this.element && ([\"Escape\", \"Backspace\", \"Delete\"].includes(event.key) || (/^[a-z0-9]$/i).test(event.key))) {\n this.removeStickySelection();\n } else if (this.options.searchPrompt) {\n if (this.stickyHiddenInput.value === \"\" && this.element.value.length < this.options.threshold) {\n this.promptDiv.style.display = \"block\";\n } else {\n this.promptDiv.style.display = \"none\";\n }\n }\n break;\n default:\n }\n }\n\n createHiddenInput(value) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.name = this.options.name;\n hiddenInput.type = \"hidden\";\n if (value) {\n hiddenInput.value = value;\n }\n this.acWrapper.prepend(hiddenInput);\n return hiddenInput;\n }\n\n removeStickySelection() {\n this.stickyHiddenInput.value = \"\";\n this.element.placeholder = this.options.placeholder;\n this.clearStickySelectionSpan.style.display = \"none\";\n this.stickySelectedSpan.style.display = \"none\";\n }\n\n addStickySelectItem(selection) {\n this.stickyHiddenInput.value = selection.value.value;\n this.element.placeholder = \"\";\n this.stickySelectedSpan.innerHTML = selection.value[selection.key];\n this.stickySelectedSpan.style.display = \"block\";\n this.clearStickySelectionSpan.style.display = \"block\";\n this.setInput(\"\");\n }\n\n addMultiSelectItem(selection) {\n this.setInput(\"\");\n const chosen = document.createElement(\"span\");\n chosen.classList.add(\"label\", \"primary\", \"autocomplete__selected-item\", \"multi\");\n chosen.innerHTML = selection.value[selection.key];\n const clearSelection = document.createElement(\"span\");\n clearSelection.classList.add(\"clear-multi-selection\");\n clearSelection.innerHTML = \"×\";\n clearSelection.setAttribute(\"data-remove\", selection.value.value);\n clearSelection.addEventListener(\"click\", (evt) => {\n const hiddenInput = this.acWrapper.querySelector(`input[type='hidden'][value='${selection.value.value}']`);\n if (hiddenInput) {\n hiddenInput.remove();\n evt.target.parentElement.remove();\n }\n });\n chosen.appendChild(clearSelection);\n\n const multiSelectWrapper = this.acWrapper.querySelector(\".multiselect\");\n const inputContainer = multiSelectWrapper.querySelector(\"span.input-container\");\n multiSelectWrapper.insertBefore(chosen, inputContainer);\n this.createHiddenInput(selection.value.value);\n }\n\n createStickySelect() {\n this.stickySelectedSpan = document.createElement(\"span\");\n this.stickySelectedSpan.classList.add(\"autocomplete__selected-item\", \"sticky\");\n this.stickySelectedSpan.style.display = \"none\";\n this.stickySelectedSpan.addEventListener(\"click\", () => this.element.focus());\n this.stickyHiddenInput = this.createHiddenInput();\n\n this.clearStickySelectionSpan = document.createElement(\"span\");\n this.clearStickySelectionSpan.className = \"clear-sticky-selection\";\n this.clearStickySelectionSpan.innerHTML = \"×\";\n this.clearStickySelectionSpan.style.display = \"none\";\n this.clearStickySelectionSpan.addEventListener(\"click\", this);\n\n this.element.addEventListener(\"selection\", this);\n this.element.addEventListener(\"keyup\", this);\n\n this.acWrapper.insertBefore(this.clearStickySelectionSpan, this.element);\n this.acWrapper.insertBefore(this.stickySelectedSpan, this.element);\n if (this.options.selected) {\n this.addStickySelectItem(this.options.selected);\n }\n }\n\n createMultiSelect() {\n const multiSelectWrapper = document.createElement(\"div\");\n multiSelectWrapper.classList.add(\"multiselect\");\n\n const inputContainer = document.createElement(\"span\");\n inputContainer.classList.add(\"input-container\");\n\n multiSelectWrapper.appendChild(inputContainer);\n this.acWrapper.prepend(multiSelectWrapper);\n inputContainer.appendChild(this.element);\n\n this.element.addEventListener(\"selection\", this);\n multiSelectWrapper.addEventListener(\"click\", () => {\n this.element.focus();\n })\n\n if (this.options.selected) {\n this.options.selected.forEach((selection) => {\n this.addMultiSelectItem(selection);\n })\n }\n }\n\n createPromptDiv() {\n this.promptDiv = document.createElement(\"div\");\n this.promptDiv.classList.add(\"search-prompt\");\n this.promptDiv.style.display = \"none\";\n this.promptDiv.innerHTML = this.options.searchPromptText;\n this.acWrapper.appendChild(this.promptDiv);\n }\n}\n","const DEFAULT_ATTRIBUTES = {\n role: \"img\",\n \"aria-hidden\": \"true\"\n};\n\n/**\n * Generates a Decidim icon element and returns it as a string.\n * @param {String} iconKey - the key of the icon to be generated\n * @param {Object} attributes - extra attributes to define for the icon SVG\n * @param {int} wait - number of milliseconds to wait before executing the function.\n * @private\n * @returns {Void} - Returns nothing.\n */\nexport default function icon(iconKey, attributes = {}) {\n const iconAttributes = { ...DEFAULT_ATTRIBUTES, ...attributes };\n const htmlAttributes = { width: \"0.75em\", height: \"0.75em\" };\n\n Object.keys(iconAttributes).forEach((key) => {\n // Convert the key to dash-format.\n const newKey = key.replace(/([A-Z])/g, (ucw) => `-${ucw[0].toLowerCase()}`);\n if (typeof htmlAttributes[key] === \"undefined\") {\n htmlAttributes[newKey] = iconAttributes[key];\n } else {\n htmlAttributes[newKey] = `${htmlAttributes[newKey]} ${iconAttributes[key]}`;\n }\n });\n\n const svg = document.createElement(\"svg\")\n const use = document.createElement(\"use\")\n const title = document.createElement(\"title\")\n\n title.innerHTML = iconAttributes.title || iconAttributes.ariaLabel || iconKey\n use.setAttribute(\"href\", `${window.Decidim.config.get(\"icons_path\")}#ri-${iconKey}`)\n Object.entries(htmlAttributes).forEach(([key, value]) => svg.setAttribute(key, value))\n\n svg.appendChild(title)\n svg.appendChild(use)\n\n return svg.outerHTML;\n}\n","import AutoComplete from \"src/decidim/autocomplete\";\nimport icon from \"src/decidim/icon\";\n\nconst updateSubmitButton = ($fieldContainer, $selectedItems) => {\n const $form = $fieldContainer.closest(\"form\");\n if ($form.length < 1) {\n return;\n }\n\n const $submitButton = $form.find(\"button[type='submit']\");\n if ($selectedItems.children().length === 0) {\n $submitButton.prop(\"disabled\", true);\n } else {\n $submitButton.prop(\"disabled\", false);\n }\n}\n\n$(() => {\n const $fieldContainer = $(\".js-multiple-mentions\");\n if ($fieldContainer.length < 1) {\n return;\n }\n\n const allMessages = window.Decidim.config.get(\"messages\");\n const messages = allMessages.mentionsModal || {};\n\n const $searchInput = $(\"input\", $fieldContainer);\n const $selectedItems = $(`ul.${$searchInput.data().selected}`);\n const options = $fieldContainer.data();\n let selected = [];\n const removeLabel = messages.removeRecipient || \"Remove recipient %name%\";\n\n let emptyFocusElement = $fieldContainer[0].querySelector(\".empty-list\");\n if (!emptyFocusElement) {\n emptyFocusElement = document.createElement(\"div\");\n emptyFocusElement.tabIndex = \"-1\";\n emptyFocusElement.className = \"empty-list\";\n $selectedItems.before(emptyFocusElement);\n }\n\n updateSubmitButton($fieldContainer, $selectedItems);\n const autoComplete = new AutoComplete($searchInput[0], {\n dataMatchKeys: [\"name\", \"nickname\"],\n dataSource: (query, callback) => {\n $.post(window.Decidim.config.get(\"api_path\"), {\n \"query\": `\n {\n users(filter:{wildcard:\"${query}\",excludeIds:[]})\n {\n id,nickname,name,avatarUrl,__typename,...on UserGroup{membersCount},...on User{\n directMessagesEnabled\n }\n }\n }`\n }).then((response) => {\n callback(response.data.users);\n });\n },\n dataFilter: (list) => {\n return list.filter(\n (item) => !selected.includes(item.value.id)\n );\n },\n modifyResult: (element, value) => {\n $(element).html(`\n <img src=\"${value.avatarUrl}\" alt=\"${value.name}\">\n <span>${value.nickname}</span>\n <small>${value.name}</small>\n `);\n if (value.directMessagesEnabled === \"false\") {\n $(element).addClass(\"disabled\");\n $(element).append(`<small>${$searchInput.data().directMessagesDisabled}</small>`);\n }\n if (value.membersCount) {\n $(element).append(`<small class=\"is-group\">${value.membersCount}x ${icon(\"group-2-fill\")}</small>`);\n }\n }\n });\n\n $searchInput.on(\"selection\", (event) => {\n const feedback = event.detail;\n const selection = feedback.selection;\n const id = selection.value.id;\n if (selected.length >= 9 || selection.value.directMessagesEnabled === \"false\") {\n return;\n }\n\n const label = removeLabel.replace(\"%name%\", selection.value.name);\n $selectedItems.append(`\n <li tabindex=\"-1\">\n <input type=\"hidden\" name=\"${options.name}\" value=\"${id}\">\n <img src=\"${selection.value.avatarUrl}\" alt=\"${selection.value.name}\">\n <span>${selection.value.name}</span>\n <button type=\"button\" data-remove=\"${id}\" tabindex=\"0\" aria-controls=\"0\" aria-label=\"${label}\">${icon(\"delete-bin-line\")}</button>\n </li>\n `);\n\n autoComplete.setInput(\"\");\n selected.push(id);\n updateSubmitButton($fieldContainer, $selectedItems);\n\n $selectedItems.find(`*[data-remove=\"${id}\"]`).on(\"keypress click\", (evt) => {\n const target = evt.currentTarget.parentNode;\n if (target.tagName === \"LI\") {\n const focusElement = target.nextElementSibling || target.previousElementSibling || emptyFocusElement;\n\n selected = selected.filter((identifier) => identifier !== id);\n target.remove();\n\n updateSubmitButton($fieldContainer, $selectedItems);\n focusElement.focus();\n }\n })\n })\n})\n","/* eslint-disable require-jsdoc */\n/* eslint-disable no-prototype-builtins, no-restricted-syntax, no-param-reassign */\n\nlet callbacks = {};\n\nexport default function registerCallback(callbackId, callback) {\n callbacks[callbackId] = callback;\n}\n\nconst unregisterCallback = (callbackId) => {\n callbacks[callbackId] = null;\n}\n\nconst pushState = (url, state = null) => {\n if (window.history) {\n window.history.pushState(state, null, url);\n }\n};\n\nconst replaceState = (url, state = null) => {\n if (window.history) {\n window.history.replaceState(state, null, url);\n }\n};\n\nconst state = () => {\n if (window.history) {\n return window.history.state;\n }\n return null;\n};\n\nwindow.onpopstate = (event) => {\n // Ensure the event is caused by user action\n if (event.isTrusted) {\n for (let callbackId in callbacks) {\n if (callbacks.hasOwnProperty(callbackId)) {\n callbacks[callbackId](event.state);\n }\n }\n }\n}\n\nexport { registerCallback, unregisterCallback, pushState, replaceState, state };\n","import select from \"select\";\n\n/**\n * This provides functionality to add clipboard copy functionality to buttons\n * on the page. The element to be copied from has to be defined for the button\n * using a `data` attribute and the target element has to be a form input.\n *\n * Usage:\n * 1. Create the button:\n * <button class=\"button\"\n * data-clipboard-copy=\"#target-input-element\"\n * data-clipboard-copy-label=\"Copied!\"\n * data-clipboard-copy-message=\"The text was successfully copied to clipboard.\"\n * aria-label=\"Copy the text to clipboard\">\n * <%= icon \"clipboard\", role: \"presentation\", \"aria-hidden\": true %>\n * Copy to clipboard\n * </button>\n *\n * 2. Make sure the target element exists on the page:\n * <input id=\"target-input-element\" type=\"text\" value=\"This text will be copied.\">\n *\n * Options through data attributes:\n * - `data-clipboard-copy` = The jQuery selector for the target input element\n * where text will be copied from.\n * - `data-clipboard-copy-label` = The label that will be shown in the button\n * after a succesful copy.\n * - `data-clipboard-copy-message` = The text that will be announced to screen\n * readers after a successful copy.\n */\n\n// How long the \"copied\" text is shown in the copy element after successful\n// copy.\nconst CLIPBOARD_COPY_TIMEOUT = 5000;\n\n$(() => {\n $(document).on(\"click\", \"[data-clipboard-copy]\", (ev) => {\n const $el = $(ev.currentTarget);\n if (!$el.data(\"clipboard-copy\") || $el.data(\"clipboard-copy\").length < 1) {\n return;\n }\n\n const $input = $($el.data(\"clipboard-copy\"));\n if ($input.length < 1 || !$input.is(\"input, textarea, select\")) {\n return;\n }\n\n // Get the available text to clipboard.\n const selectedText = select($input[0]);\n if (!selectedText || selectedText.length < 1) {\n return;\n }\n\n // Move the selected text to clipboard.\n const $temp = $(`<textarea>${selectedText}</textarea>`).css({\n width: 1,\n height: 1\n });\n $el.after($temp);\n $temp.select();\n\n const copyDone = () => {\n $temp.remove();\n $el.focus();\n };\n try {\n // document.execCommand is deprecated but the Clipboard API is not\n // supported by IE (which unfortunately is still a thing).\n if (!document.execCommand(\"copy\")) {\n return;\n }\n } catch (err) {\n copyDone();\n return;\n }\n copyDone();\n\n // Change the label to indicate the copying was successful.\n const label = $el.data(\"clipboard-copy-label\");\n if (label) {\n let to = $el.data(\"clipboard-copy-label-timeout\");\n if (to) {\n clearTimeout(to);\n }\n\n if (!$el.data(\"clipboard-copy-label-original\")) {\n $el.data(\"clipboard-copy-label-original\", $el.html());\n }\n\n $el.html(label);\n to = setTimeout(() => {\n $el.html($el.data(\"clipboard-copy-label-original\"));\n $el.removeData(\"clipboard-copy-label-original\");\n $el.removeData(\"clipboard-copy-label-timeout\");\n }, CLIPBOARD_COPY_TIMEOUT);\n $el.data(\"clipboard-copy-label-timeout\", to)\n }\n\n // Alert the screen reader what just happened (the link was copied).\n let message = $el.data(\"clipboard-copy-message\");\n if (message) {\n let $msg = $el.data(\"clipboard-message-element\");\n if ($msg) {\n if ($msg.html() === message) {\n // Try to hint the screen reader to re-read the text in the message\n // element.\n message += \" \";\n }\n } else {\n $msg = $('<div aria-role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"sr-only\"></div>');\n $el.after($msg);\n $el.data(\"clipboard-message-element\", $msg);\n }\n\n // Add the non breaking space always to content to try to force the\n // screen reader to reannounce the added text.\n $msg.html(message);\n }\n });\n});\n","import \"@zeitiger/appendaround\"\n\n$(() => {\n let $appendableElements = $(\".js-append\");\n $appendableElements.appendAround();\n})\n","import icon from \"src/decidim/icon\"\n\nexport default class PasswordToggler {\n constructor(password) {\n this.password = password;\n this.input = this.password.querySelector('input[type=\"password\"]');\n this.form = this.input.closest(\"form\");\n this.texts = {\n showPassword: this.password.getAttribute(\"data-show-password\") || \"Show password\",\n hidePassword: this.password.getAttribute(\"data-hide-password\") || \"Hide password\",\n hiddenPassword: this.password.getAttribute(\"data-hidden-password\") || \"Your password is hidden\",\n shownPassword: this.password.getAttribute(\"data-shown-password\") || \"Your password is shown\"\n }\n this.icons = {\n show: icon(\"eye-line\"),\n hide: icon(\"eye-off-line\")\n }\n }\n\n // Call init() to hide the password confirmation and add a \"view password\" inline button\n init() {\n this.createControls();\n this.button.addEventListener(\"click\", (evt) => {\n this.toggleVisibility(evt);\n });\n // to prevent browsers trying to use autocomplete, turn the type back to password before submitting\n this.form.addEventListener(\"submit\", () => {\n this.hidePassword();\n });\n }\n\n // Call destroy() to switch back to the original password box\n destroy() {\n this.button.removeEventListener(\"click\");\n this.input.removeEventListener(\"change\");\n this.form.removeEventListener(\"submit\");\n const input = this.input.detach();\n this.inputGroup.replaceWith(input);\n }\n\n createControls() {\n this.createButton();\n this.createStatusText();\n this.addInputGroupWrapperAsParent();\n }\n\n createButton() {\n const button = document.createElement(\"button\");\n button.setAttribute(\"type\", \"button\");\n button.setAttribute(\"aria-controls\", this.input.getAttribute(\"id\"));\n button.setAttribute(\"aria-label\", this.texts.showPassword);\n button.innerHTML = this.icons.show;\n this.button = button;\n }\n\n createStatusText() {\n const statusText = document.createElement(\"span\");\n statusText.classList.add(\"sr-only\");\n statusText.setAttribute(\"aria-live\", \"polite\");\n statusText.textContent = this.texts.hiddenPassword;\n this.statusText = statusText;\n }\n\n addInputGroupWrapperAsParent() {\n const inputGroupWrapper = document.createElement(\"div\");\n inputGroupWrapper.classList.add(\"input-group__password\");\n\n this.input.parentNode.replaceChild(inputGroupWrapper, this.input);\n inputGroupWrapper.appendChild(this.input);\n this.input.before(this.button);\n\n const formError = this.password.querySelector(\".form-error\");\n if (formError) {\n this.input.after(formError);\n }\n }\n\n toggleVisibility(evt) {\n evt.preventDefault();\n if (this.isText()) {\n this.hidePassword();\n } else {\n this.showPassword();\n }\n }\n\n showPassword() {\n this.statusText.textContent = this.texts.shownPassword;\n this.button.setAttribute(\"aria-label\", this.texts.hidePassword);\n this.button.innerHTML = this.icons.hide;\n this.input.setAttribute(\"type\", \"text\");\n }\n\n hidePassword() {\n this.statusText.textContent = this.texts.hiddenPassword;\n this.button.setAttribute(\"aria-label\", this.texts.showPassword);\n this.button.innerHTML = this.icons.show;\n this.input.setAttribute(\"type\", \"password\");\n }\n\n isText() {\n return this.input.getAttribute(\"type\") === \"text\"\n }\n}\n","import PasswordToggler from \"src/decidim/password_toggler\";\n\n$(() => {\n const $userRegistrationForm = $(\"#register-form\");\n const $userGroupFields = $userRegistrationForm.find(\".user-group-fields\");\n const userPassword = document.querySelector(\".user-password\");\n const inputSelector = 'input[name=\"user[sign_up_as]\"]';\n const newsletterSelector = 'input[type=\"checkbox\"][name=\"user[newsletter]\"]';\n const $newsletterModal = $(\"#sign-up-newsletter-modal\");\n\n\n const setGroupFieldsVisibility = (value) => {\n if (value === \"user\") {\n $userGroupFields.hide();\n } else {\n $userGroupFields.show();\n }\n }\n\n const checkNewsletter = (check) => {\n $userRegistrationForm.find(newsletterSelector).prop(\"checked\", check);\n $newsletterModal.data(\"continue\", true);\n window.Decidim.currentDialogs[\"sign-up-newsletter-modal\"].close()\n $userRegistrationForm.submit();\n }\n\n setGroupFieldsVisibility($userRegistrationForm.find(`${inputSelector}:checked`).val());\n\n $userRegistrationForm.on(\"change\", inputSelector, (event) => {\n const value = event.target.value;\n\n setGroupFieldsVisibility(value);\n });\n\n $userRegistrationForm.on(\"submit\", (event) => {\n const newsletterChecked = $userRegistrationForm.find(newsletterSelector);\n if (!$newsletterModal.data(\"continue\")) {\n if (!newsletterChecked.prop(\"checked\")) {\n event.preventDefault();\n window.Decidim.currentDialogs[\"sign-up-newsletter-modal\"].open()\n }\n }\n });\n\n $newsletterModal.find(\"[data-check]\").on(\"click\", (event) => {\n checkNewsletter($(event.target).data(\"check\"));\n });\n\n if (userPassword) {\n new PasswordToggler(userPassword).init();\n }\n});\n","import PasswordToggler from \"src/decidim/password_toggler\";\n\nconst initializeAccountForm = () => {\n const newPasswordPanel = document.getElementById(\"panel-password\");\n const oldPasswordPanel = document.getElementById(\"panel-old-password\");\n const emailField = document.querySelector(\"input[type='email']\");\n if (!newPasswordPanel || !emailField) {\n return;\n }\n\n const originalEmail = emailField.dataset.original;\n let emailChanged = originalEmail !== emailField.value;\n let newPwVisible = false;\n\n const toggleNewPassword = () => {\n const input = newPasswordPanel.querySelector(\"input\")\n if (newPwVisible) {\n input.required = true;\n } else {\n input.required = false;\n input.value = \"\";\n }\n };\n const toggleOldPassword = () => {\n if (!oldPasswordPanel) {\n return;\n }\n\n const input = oldPasswordPanel.querySelector(\"input\");\n if (emailChanged || newPwVisible) {\n oldPasswordPanel.classList.remove(\"hidden\");\n input.required = true;\n } else {\n oldPasswordPanel.classList.add(\"hidden\");\n input.required = false;\n }\n }\n\n const observer = new MutationObserver(() => {\n let ariaHiddenValue = newPasswordPanel.getAttribute(\"aria-hidden\");\n newPwVisible = ariaHiddenValue === \"false\";\n\n toggleNewPassword();\n toggleOldPassword();\n });\n observer.observe(newPasswordPanel, { attributes: true });\n\n emailField.addEventListener(\"change\", () => {\n emailChanged = emailField.value !== originalEmail;\n toggleOldPassword();\n });\n};\n\n/**\n * Since the delete account has a modal to confirm it we need to copy the content of the\n * reason field to the hidden field in the form inside the modal.\n *\n * @return {void}\n */\nconst initializeDeleteAccount = () => {\n const $deleteAccountForm = $(\".delete-account\");\n const $deleteAccountModalForm = $(\".delete-account-modal\");\n\n if ($deleteAccountForm.length < 1) {\n return;\n }\n\n const $openModalButton = $(\".open-modal-button\");\n\n $openModalButton.on(\"click\", (event) => {\n try {\n const reasonValue = $deleteAccountForm.find(\"textarea#delete_account_delete_reason\").val();\n $deleteAccountModalForm.find(\"input#delete_account_delete_reason\").val(reasonValue);\n } catch (error) {\n console.error(error); // eslint-disable-line no-console\n }\n\n event.preventDefault();\n event.stopPropagation();\n return false;\n });\n};\n\nconst initializeOldPasswordToggler = () => {\n const oldUserPassword = document.querySelector(\".old-user-password\");\n\n if (oldUserPassword) {\n new PasswordToggler(oldUserPassword).init();\n }\n}\n\n$(() => {\n initializeAccountForm();\n initializeDeleteAccount();\n initializeOldPasswordToggler();\n});\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import Rails from \"@rails/ujs\";\n\n// Make the remote form submit buttons disabled when the form is being\n// submitted to avoid multiple submits.\ndocument.addEventListener(\"ajax:beforeSend\", (ev) => {\n if (!ev.target.matches(\"form[data-remote]\")) {\n return;\n }\n\n ev.target.querySelectorAll(\"[type=submit]\").forEach((submit) => {\n submit.disabled = true;\n });\n});\ndocument.addEventListener(\"ajax:complete\", (ev) => {\n if (!ev.target.matches(\"form[data-remote]\")) {\n return;\n }\n\n ev.target.querySelectorAll(\"[type=submit]\").forEach((submit) => {\n submit.disabled = false;\n });\n});\n\n// The forms that are attached to Foundation Abide do not work properly with\n// Rails UJS Ajax forms that have the `data-remote` attribute attached to\n// them. The reason is that in case Foundation Abide sees the form as valid,\n// it will submit it normally bypassing the Rails UJS functionality.\n// The submit events happens through jQuery in Foundation Abide which is why\n// we need to bind the event with jQuery.\n$(document).on(\"submit\", \"form[data-remote][data-abide]\", (ev) => {\n ev.preventDefault();\n\n if (ev.target.querySelectorAll(\"[data-invalid]\").length > 0) {\n return;\n }\n\n Reflect.apply(Rails.handleRemote, ev.target, [ev]);\n});\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live†collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value†part that can be\n // grouped, and fractional or exponential “suffix†part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","/* eslint-disable require-jsdoc, id-length, no-undefined, no-unused-vars, multiline-ternary, no-nested-ternary, no-invalid-this */\n/* eslint prefer-reflect: [\"error\", { \"exceptions\": [\"call\"] }] */\n/* eslint dot-location: [\"error\", \"property\"] */\n/* eslint no-unused-vars: 0 */\n\nimport { select, pointer } from \"d3-selection\";\nimport { min, max, extent, ascending, bisector } from \"d3-array\";\nimport { scaleTime, scaleLinear } from \"d3-scale\";\nimport { axisLeft, axisBottom } from \"d3-axis\";\nimport { timeMonth } from \"d3-time\";\nimport { timeFormat, isoParse } from \"d3-time-format\";\nimport { area, line } from \"d3-shape\";\n\n// lib\nexport default function areachart(opts = {}) {\n\n const parseData = (data) => {\n // format the data\n data.forEach((d) => {\n d.key = isoParse(d.key)\n d.value = Number(d.value)\n });\n\n // order by date\n return data.sort((x, y) => ascending(x.key, y.key))\n }\n\n // OPTIONAL: Helper function to accumulates all data values\n const aggregate = (agg) => agg.map((item, index, array) => {\n if (index > 0) {\n item.value += array[index - 1].value\n }\n return item\n })\n\n // parse opts\n let data = parseData(opts.data)\n let title = opts.title\n let objectName = opts.objectName || \"\"\n let container = select(opts.container)\n let showAxis = opts.axis || false\n let ratio = (opts.ratio || \"\").split(\":\").reduce((a, b) => a / b) || (4 / 3)\n let showTooltip = Object.is(opts.tip, undefined) ? true : opts.tip\n let cumulative = opts.agg || false\n\n if (cumulative) {\n data = aggregate(data)\n }\n\n // set the dimensions and margins of the graph\n let margin = {\n top: 40,\n right: 0,\n bottom: 0,\n left: 0\n }\n\n let width = Number(container.node().getBoundingClientRect().width) - margin.left - margin.right\n let height = (width / ratio) - margin.top - margin.bottom\n let titlePadding = min([width / 10, 32])\n\n // set the ranges\n let x = scaleTime().range([0, width]);\n let y = scaleLinear().range([height, 0]);\n\n // define the area\n let _area = area()\n .x((d) => x(d.key))\n .y0(height)\n .y1((d) => y(d.value));\n\n // define the line\n let valueline = line()\n .x((d) => x(d.key))\n .y((d) => y(d.value));\n\n let svg = container.append(\"svg\")\n .attr(\"width\", width + margin.left + margin.right)\n .attr(\"height\", height + margin.top + margin.bottom)\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n // scale the range of the data\n x.domain(extent(data, (d) => d.key));\n y.domain([0, max(data, (d) => d.value)]).nice();\n\n // add the valueline path.\n let topLine = svg.append(\"path\")\n .data([data])\n .attr(\"class\", \"line\")\n .attr(\"d\", valueline)\n\n // add the area\n svg.append(\"path\")\n .data([data])\n .attr(\"class\", \"area\")\n .attr(\"d\", _area)\n\n if (showTooltip) {\n // tooltip\n let circle = svg.append(\"circle\")\n .attr(\"class\", \"circle\")\n .attr(\"r\", 6)\n .style(\"display\", \"none\")\n\n let tooltip = select(\"body\").append(\"div\")\n .attr(\"id\", `${container.node().id}-metric-tooltip`)\n .style(\"opacity\", 0)\n\n svg\n .on(\"mouseover\", () => {\n circle.style(\"display\", null)\n tooltip.style(\"opacity\", 1)\n })\n .on(\"mouseout\", () => {\n circle.style(\"display\", \"none\")\n tooltip.style(\"opacity\", 0)\n })\n .on(\"mousemove\", function(event) {\n let x0 = x.invert(pointer(event)[0])\n let i = bisector((d) => d.key).left(data, x0, 1)\n let d0 = data[i - 1]\n let d1 = data[i]\n let d = (x0 - d0.key > d1.key - x0) ? d1 : d0\n\n // svg position relative to document\n let coords = {\n x: window.pageXOffset + container.node().getBoundingClientRect().left,\n y: window.pageYOffset + container.node().getBoundingClientRect().top\n }\n\n let tooltipContent = `\n <div>\n ${timeFormat(\"%e %B %Y\")(d.key)}<br />\n ${d.value.toLocaleString()} ${objectName}\n </div>`\n\n circle.attr(\"transform\", `translate(${x(d.key)},${y(d.value)})`)\n tooltip.html(tooltipContent)\n .style(\"left\", `${coords.x + x(d.key)}px`)\n .style(\"top\", `${coords.y + y(d.value)}px`)\n })\n }\n\n if (showAxis) {\n let xAxis = axisBottom(x)\n .ticks(timeMonth)\n .tickFormat(timeFormat(\"%b %y\"))\n .tickSize(-height)\n let yAxis = axisLeft(y)\n .ticks(5)\n .tickSize(8)\n\n let _xAxis = (g) => {\n g.call(xAxis)\n g.select(\".domain\").remove()\n g.selectAll(\".tick line\").attr(\"class\", \"dashed\")\n g.selectAll(\".tick text\").attr(\"y\", 6)\n }\n let _yAxis = (g) => {\n g.call(yAxis)\n g.select(\".domain\").remove()\n g.select(\".tick:first-of-type\").remove()\n g.selectAll(\".tick text\").attr(\"text-anchor\", \"start\").attr(\"x\", 6)\n }\n\n // custom X-Axis\n svg.append(\"g\")\n .attr(\"transform\", `translate(0,${height})`)\n .call(_xAxis);\n\n // custom Y-Axis\n svg.append(\"g\")\n .call(_yAxis)\n\n // last circle (current value)\n let g = svg.append(\"g\")\n .data([data])\n .attr(\"transform\", (d) => `translate(${x(d[d.length - 1].key)},${y(d[d.length - 1].value)})`)\n\n g.append(\"circle\")\n .attr(\"class\", \"circle\")\n .attr(\"r\", 8)\n\n g.append(\"text\")\n .attr(\"class\", \"sum\")\n .attr(\"text-anchor\", \"end\")\n .attr(\"dx\", -8 * 2)\n .text((d) => d[d.length - 1].value.toLocaleString())\n\n } else {\n // add the title group\n let g = svg.append(\"g\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"transform\", `translate(${titlePadding},${titlePadding})`)\n\n let titleLines = 0\n\n if (title.length) {\n g.append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"class\", \"title\")\n .text(title)\n .call(function(fulltext, wrapwidth, start = 0) {\n fulltext.each(function() {\n let text = select(this)\n let word = \"\"\n let words = text.text().split(/\\s+/).reverse()\n let _line = []\n let lineNumber = 0\n let lineHeight = 1.1\n let _x = text.attr(\"x\")\n let _y = text.attr(\"y\")\n let dy = 0\n let tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", _x)\n .attr(\"y\", _y)\n .attr(\"dy\", `${dy}em`)\n\n /* eslint-disable no-cond-assign, no-plusplus */\n while (word = words.pop()) {\n _line.push(word);\n tspan.text(_line.join(\" \"));\n if (tspan.node().getComputedTextLength() > wrapwidth) {\n _line.pop()\n tspan.text(_line.join(\" \"))\n _line = [word]\n tspan = text.append(\"tspan\")\n .attr(\"x\", _x)\n .attr(\"y\", _y)\n .attr(\"dy\", `${(++lineNumber * lineHeight) + dy}em`)\n .text(word);\n }\n }\n\n titleLines = lineNumber * lineHeight\n });\n }, width - (titlePadding * 2))\n }\n\n let fontSize = parseFloat(getComputedStyle(g.node()).fontSize);\n\n g.append(\"text\")\n .attr(\"x\", 0)\n .attr(\"dy\", title.length ? (titlePadding * 2) + (titleLines * fontSize) : (titlePadding * 1.25))\n .attr(\"class\", \"sum\")\n .text(data[data.length - 1].value.toLocaleString())\n }\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","/* eslint-disable require-jsdoc, no-console */\n\nimport areachart from \"src/decidim/vizzs/areachart\"\n\n$(() => {\n\n const metricsData = {};\n const metricsContainer = {};\n const metricsParams = {};\n\n const query = () => {\n let metricsQuery = `metrics(names: ${metricsParams.names}, space_type: \"${metricsParams.spaceType}\", space_id: ${metricsParams.spaceId}) { name history { key value } }`;\n return {query: `{ ${metricsQuery} }`};\n }\n\n const parameterize = (metrics) => {\n metricsParams.names = JSON.stringify(metrics || []);\n metricsParams.spaceType = $(\"#metrics #metrics-space_type\").val() || null;\n metricsParams.spaceId = $(\"#metrics #metrics-space_id\").val() || null;\n }\n\n const fetch = (metrics) => $.post(window.Decidim.config.get(\"api_path\"), query(metrics));\n\n const downloadMetricData = (event) => {\n event.preventDefault();\n let metricName = $(event.target).parents(\".metric-downloader\").data(\"metric\");\n let csvContent = \"data:text/csv;charset=utf-8,\";\n\n csvContent += \"key,value\\r\\n\";\n metricsData[metricName].forEach((metricData) => {\n csvContent += `${metricData.key},${metricData.value}\\r\\n`;\n });\n\n // Required for FF\n let link = document.createElement(\"a\");\n link.setAttribute(\"href\", encodeURI(csvContent));\n link.setAttribute(\"download\", `${metricName}_metric_data.csv`);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n $(\".metric-chart:visible\").each((_index, container) => {\n metricsContainer[$(container).data(\"metric\")] = container;\n });\n $(\".metric-downloader\").each((_index, container) => {\n container.onclick = downloadMetricData;\n });\n\n if (!$.isEmptyObject(metricsContainer)) {\n parameterize(Object.keys(metricsContainer))\n fetch().then((response) => {\n if (response.data) {\n $.each(response.data.metrics, (_index, metricData) => {\n let container = metricsContainer[metricData.name];\n if (metricData.history.length === 0) {\n $(container).remove();\n return;\n }\n let info = $(container).data(\"info\");\n metricsData[metricData.name] = $.extend(true, [], metricData.history);\n areachart({\n container: `#${container.id}`,\n data: metricData.history,\n title: info.title,\n objectName: info.object,\n ...$(container).data()\n });\n });\n } else if (response.errors) {\n console.log(\"Something wrong happened when fetching metrics:\");\n $.each(response.errors, (_index, error) => {\n console.log(error.message);\n });\n $(\"#metrics\").remove();\n }\n }).fail((err) => {\n console.log(`Something wrong happened when fetching metrics: ${err.statusText}`);\n $(\"#metrics\").remove();\n });\n }\n});\n","import dayjs from \"dayjs\"\n\n$(() => {\n let sessionTimeOutEnabled = true;\n const $timeoutModal = $(\"#timeoutModal\");\n const timeoutInSeconds = parseInt($timeoutModal.data(\"session-timeout\"), 10);\n const secondsUntilTimeoutPath = $timeoutModal.data(\"seconds-until-timeout-path\");\n const heartbeatPath = $timeoutModal.data(\"heartbeat-path\");\n const interval = parseInt($timeoutModal.data(\"session-timeout-interval\"), 10);\n const preventTimeOutSeconds = $timeoutModal.data(\"prevent-timeout-seconds\");\n let endsAt = dayjs().add(timeoutInSeconds, \"seconds\");\n let lastAction = dayjs();\n const $continueSessionButton = $(\"#continueSession\");\n let lastActivityCheck = dayjs();\n // 5 * 60 seconds = 5 Minutes\n const activityCheckInterval = 5 * 60;\n const preventTimeOutUntil = dayjs().add(preventTimeOutSeconds, \"seconds\");\n\n // Ajax request is made at timeout_modal.html.erb\n $continueSessionButton.on(\"click\", () => {\n window.Decidim.currentDialogs.timeoutModal.close()\n // In admin panel we have to hide all overlays\n $(\".reveal-overlay\").css(\"display\", \"none\");\n lastActivityCheck = dayjs();\n })\n\n if (isNaN(interval)) {\n return;\n }\n if (!timeoutInSeconds) {\n return;\n }\n\n const disableSessionTimeout = () => {\n sessionTimeOutEnabled = false;\n }\n\n const enableSessionTimeout = () => {\n sessionTimeOutEnabled = true;\n }\n\n const setTimer = (secondsUntilExpiration) => {\n if (!secondsUntilExpiration) {\n return;\n }\n endsAt = dayjs().add(secondsUntilExpiration, \"seconds\");\n }\n\n const sessionTimeLeft = () => {\n return $.ajax({\n method: \"GET\",\n url: secondsUntilTimeoutPath,\n contentType: \"application/json\",\n headers: {\n \"X-CSRF-Token\": $(\"meta[name=csrf-token]\").attr(\"content\")\n }\n });\n }\n\n const heartbeat = () => {\n return $.ajax({\n method: \"POST\",\n url: heartbeatPath,\n contentType: \"application/javascript\"\n });\n }\n\n const userBeenActiveSince = (seconds) => {\n return (dayjs() - lastAction) / 1000 < seconds;\n }\n\n const exitInterval = setInterval(() => {\n const timeSinceLastActivityCheckInSeconds = Math.round((dayjs() - lastActivityCheck) / 1000);\n\n if (!window.Decidim.currentDialogs.timeoutModal.isOpen && timeSinceLastActivityCheckInSeconds >= activityCheckInterval) {\n lastActivityCheck = dayjs();\n if (userBeenActiveSince(activityCheckInterval)) {\n heartbeat();\n return;\n }\n }\n\n const timeRemaining = Math.round((endsAt - dayjs()) / 1000);\n if (timeRemaining > 170) {\n return;\n }\n\n if (dayjs() < preventTimeOutUntil) {\n heartbeat();\n return;\n }\n\n sessionTimeLeft().then((result) => {\n const secondsUntilSessionExpires = result.seconds_remaining;\n setTimer(secondsUntilSessionExpires);\n\n if (!sessionTimeOutEnabled) {\n heartbeat();\n } else if (secondsUntilSessionExpires <= 90) {\n $timeoutModal.find(\"#reveal-hidden-sign-out\")[0].click();\n } else if (secondsUntilSessionExpires <= 150) {\n window.Decidim.currentDialogs.timeoutModal.open()\n }\n });\n }, interval);\n\n $(document).mousemove(() => {\n lastAction = dayjs();\n })\n $(document).scroll(() => {\n lastAction = dayjs();\n })\n $(document).keypress(() => {\n lastAction = dayjs();\n })\n\n // Devise restarts its own timer on ajax requests,\n // so here we restart our.\n $(document).on(\"ajax:complete\", () => {\n setTimer(timeoutInSeconds);\n });\n\n $(document).ajaxComplete((_event, _xhr, settings) => {\n if (settings && settings.url === secondsUntilTimeoutPath) {\n return;\n }\n setTimer(timeoutInSeconds);\n });\n\n window.addEventListener(\"beforeunload\", () => {\n clearInterval(exitInterval);\n return;\n });\n\n window.Decidim.enableSessionTimeout = enableSessionTimeout\n window.Decidim.disableSessionTimeout = disableSessionTimeout\n});\n","/**\n * A custom confirm dialog for Decidim based on Foundation reveals.\n *\n * Note that this needs to be loaded before the application JS in order for\n * it to gain control over the confirm events BEFORE rails-ujs is loaded.\n */\n\nimport Rails from \"@rails/ujs\"\n\nclass ConfirmDialog {\n constructor(sourceElement) {\n this.$modal = $(\"#confirm-modal\");\n this.$source = sourceElement;\n this.$content = $(\"[data-confirm-modal-content]\", this.$modal);\n this.$buttonConfirm = $(\"[data-confirm-ok]\", this.$modal);\n this.$buttonCancel = $(\"[data-confirm-cancel]\", this.$modal);\n\n window.Decidim.currentDialogs[\"confirm-modal\"].open()\n }\n\n confirm(message) {\n this.$content.html(message);\n\n this.$buttonConfirm.off(\"click\");\n this.$buttonCancel.off(\"click\");\n\n return new Promise((resolve) => {\n\n this.$buttonConfirm.on(\"click\", (ev) => {\n ev.preventDefault();\n\n window.Decidim.currentDialogs[\"confirm-modal\"].close()\n resolve(true);\n this.$source.focus();\n });\n\n this.$buttonCancel.on(\"click\", (ev) => {\n ev.preventDefault();\n\n window.Decidim.currentDialogs[\"confirm-modal\"].close()\n resolve(false);\n this.$source.focus();\n });\n });\n }\n}\n\n// Override the default confirm dialog by Rails\n// See:\n// https://github.com/rails/rails/blob/fba1064153d8e2f4654df7762a7d3664b93e9fc8/actionview/app/assets/javascripts/rails-ujs/features/confirm.coffee\n//\n// There is apparently a better way coming in Rails 6:\n// https://github.com/rails/rails/commit/e9aa7ecdee0aa7bb4dcfa5046881bde2f1fe21cc#diff-e1aaa45200e9adcbcb8baf1c5375b5d1\n//\n// The old approach is broken according to https://github.com/rails/rails/issues/36686#issuecomment-514213323\n// so for the moment this needs to be executed **before** Rails.start()\nconst allowAction = (ev, element) => {\n const message = $(element).data(\"confirm\");\n if (!message) {\n return true;\n }\n\n if (!Rails.fire(element, \"confirm\")) {\n return false;\n }\n\n const dialog = new ConfirmDialog(\n $(element)\n );\n dialog.confirm(message).then((answer) => {\n const completed = Rails.fire(element, \"confirm:complete\", [answer]);\n if (answer && completed) {\n // Allow the event to propagate normally and re-dispatch it without\n // the confirm data attribute which the Rails internal method is\n // checking.\n $(element).data(\"confirm\", null);\n $(element).removeAttr(\"data-confirm\");\n\n // The submit button click events will not do anything if they are\n // dispatched as is. In these cases, just submit the underlying form.\n if (ev.type === \"click\" &&\n (\n $(element).is('button[type=\"submit\"]') ||\n $(element).is('input[type=\"submit\"]')\n )\n ) {\n $(element).parents(\"form\").submit();\n } else {\n let origEv = ev.originalEvent || ev;\n let newEv = origEv;\n if (typeof Event === \"function\") {\n // Clone the event because otherwise some click events may not\n // work properly when re-dispatched.\n newEv = new origEv.constructor(origEv.type, origEv);\n }\n ev.target.dispatchEvent(newEv);\n }\n }\n });\n\n return false;\n};\nconst handleConfirm = (ev, element) => {\n if (!allowAction(ev, element)) {\n Rails.stopEverything(ev);\n }\n};\nconst getMatchingEventTarget = (ev, selector) => {\n let target = ev.target;\n while (!(!(target instanceof Element) || Rails.matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element) {\n return target;\n }\n\n return null;\n};\nconst handleDocumentEvent = (ev, matchSelectors) => {\n return matchSelectors.some((currentSelector) => {\n let target = getMatchingEventTarget(ev, currentSelector);\n if (target === null) {\n return false;\n }\n\n handleConfirm(ev, target);\n return true;\n });\n};\n\ndocument.addEventListener(\"click\", (ev) => {\n return handleDocumentEvent(ev, [\n Rails.linkClickSelector,\n Rails.buttonClickSelector,\n Rails.formInputClickSelector\n ]);\n});\ndocument.addEventListener(\"change\", (ev) => {\n return handleDocumentEvent(ev, [Rails.inputChangeSelector]);\n});\ndocument.addEventListener(\"submit\", (ev) => {\n return handleDocumentEvent(ev, [Rails.formSubmitSelector]);\n});\n\n// This is needed for the confirm dialog to work with Foundation Abide.\n// Abide registers its own submit click listeners since Foundation 5.6.x\n// which will be handled before the document listeners above. This would\n// break the custom confirm functionality when used with Foundation Abide.\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n $(Rails.formInputClickSelector).on(\"click.confirm\", (ev) => {\n handleConfirm(ev, getMatchingEventTarget(ev, Rails.formInputClickSelector));\n });\n});\n","import { pushState, registerCallback } from \"src/decidim/history\"\n\nconst initializeListingOptionsMenu = (options) => {\n $(document).on(\"click\", `${options.containerSelector} a`, (event) => {\n const $target = $(event.target);\n\n $target.parents(\".menu\").find(\"a:first\").text($target.text());\n\n pushState($target.attr(\"href\"));\n })\n\n registerCallback(options.callbackName, () => {\n const url = window.location.toString();\n const match = url.match(/${options.urlParameter}=([^&]*)/);\n const $targetMenu = $(`${options.containerSelector} .menu`);\n let value = $targetMenu.find(\".menu a:first\").data(options.dataAttribute);\n\n if (match) {\n value = match[1];\n }\n\n const linkText = $targetMenu.find(`.menu a[data-${options.dataAttribute}=\"${value}\"]`).text();\n\n $targetMenu.find(\"a:first\").text(linkText);\n });\n};\n\n$(() => {\n initializeListingOptionsMenu({\n containerSelector: \".order-by\",\n callbackName: \"orders\",\n urlParameter: \"order\",\n dataAttribute: \"order\"\n });\n initializeListingOptionsMenu({\n containerSelector: \".results-per-page\",\n callbackName: \"results_per_page\",\n urlParameter: \"per_page\",\n dataAttribute: \"per-page-option\"\n });\n});\n","import dayjs from \"dayjs\"\n\n$(() => {\n const $impersonationWarning = $(\".impersonation-warning\");\n if ($impersonationWarning.length) {\n const endsAt = dayjs($impersonationWarning.data(\"session-ends-at\"));\n const exitInterval = setInterval(() => {\n const diff = (endsAt - dayjs()) / 60000;\n const diffInMinutes = Math.round(diff);\n $impersonationWarning.find(\".minutes\").html(diffInMinutes);\n\n if (diff <= 0) {\n window.location.reload();\n }\n }, 1000);\n\n // Prevent reload when page is already unloading, otherwise it may cause infinite reloads.\n window.addEventListener(\"beforeunload\", () => {\n clearInterval(exitInterval);\n return;\n });\n }\n});\n","import { DirectUpload } from \"@rails/activestorage\";\n\nexport class Uploader {\n constructor(modal, options) {\n this.modal = modal;\n this.options = options;\n this.validationSent = false;\n this.errors = []\n\n if (modal.options.maxFileSize && options.file.size > modal.options.maxFileSize) {\n this.errors = [modal.locales.file_size_too_large]\n } else {\n this.upload = new DirectUpload(options.file, options.url, this);\n }\n }\n\n validate(blobId) {\n const callback = (data) => {\n let errors = []\n for (const [, value] of Object.entries(data)) {\n errors = errors.concat(value);\n }\n\n if (errors.length) {\n this.errors = errors;\n }\n }\n\n if (!this.validationSent) {\n let property = this.modal.options.addAttribute;\n if (this.modal.options.titled) {\n property = \"file\"\n }\n\n let url = this.modal.input.dataset.uploadValidationsUrl;\n\n const params = new URLSearchParams({\n resourceClass: this.modal.options.resourceClass,\n property: property,\n blob: blobId,\n formClass: this.modal.options.formObjectClass\n });\n\n return fetch(`${url}?${params}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": $(\"meta[name=csrf-token]\").attr(\"content\")\n }\n }).\n then((response) => response.json()).\n then((data) => {\n this.validationSent = true;\n callback(data);\n });\n }\n\n return Promise.resolve()\n }\n\n // The following method come from @rails/activestorage\n // {@link https://edgeguides.rubyonrails.org/active_storage_overview.html#direct-upload-javascript-events Active Storage Rails guide}\n directUploadWillStoreFileWithXHR(request) {\n request.upload.addEventListener(\"progress\", ({ loaded, total }) => this.modal.setProgressBar(this.options.attachmentName, Math.floor(loaded / total * 100)));\n }\n}\n","export const truncateFilename = (filename, maxLength = 31) => {\n if (filename.length <= maxLength) {\n return filename;\n }\n\n const charactersFromBegin = Math.floor(maxLength / 2) - 3;\n const charactersFromEnd = maxLength - charactersFromBegin - 3;\n return `${filename.slice(0, charactersFromBegin)}...${filename.slice(-charactersFromEnd)}`;\n}\n","export const escapeHtml = (text) => {\n if (!text) {\n return \"\";\n }\n\n const el = document.createElement(\"div\");\n el.appendChild(document.createTextNode(text));\n return el.innerHTML;\n}\n\nexport const escapeQuotes = (text) => {\n if (!text) {\n return \"\";\n }\n\n return text.replace(/\"/g, \""\");\n}\n","import { Uploader } from \"src/decidim/direct_uploads/uploader\";\nimport icon from \"src/decidim/icon\";\nimport { truncateFilename } from \"src/decidim/direct_uploads/upload_utility\";\nimport { escapeHtml, escapeQuotes } from \"src/decidim/utilities/text\";\n\nconst STATUS = {\n VALIDATED: \"validated\",\n ERROR: \"error\"\n}\n\n// This class handles logic inside upload modal, but since modal is not inside the form\n// logic here moves \"upload items\" / hidden inputs to form.\nexport default class UploadModal {\n constructor(button, options = {}) {\n // Button that opens the modal.\n this.button = button;\n\n // The provided options contains the options passed from the view in the\n // `data-upload` attribute as a JSON.\n let providedOptions = {};\n try {\n // The providedOptions can contain the following keys:\n // - addAttribute - Field name / attribute of resource (e.g. avatar)\n // - resourceName - The resource to which the attribute belongs (e.g. user)\n // - resourceClass - Ruby class of the resource (e.g. Decidim::User)\n // - multiple - Defines if multiple files can be uploaded\n // - titled - Defines if file(s) can have titles\n // - maxFileSize - Defines maximum file size in bytes\n // - formObjectClass - Class of the current form object (e.g. Decidim::AccountForm)\n providedOptions = JSON.parse(button.dataset.upload);\n } catch (_e) {\n // Do not care about the parse errors, just skip the provided options.\n }\n\n this.options = Object.assign(providedOptions, options)\n\n this.modal = document.querySelector(`#${button.dataset.dialogOpen}`);\n this.saveButton = this.modal.querySelector(\"button[data-dropzone-save]\");\n this.cancelButton = this.modal.querySelector(\"button[data-dropzone-cancel]\");\n this.modalTitle = this.modal.querySelector(\"[data-dialog-title]\");\n this.dropZone = this.modal.querySelector(\"[data-dropzone]\");\n\n this.emptyItems = this.modal.querySelector(\"[data-dropzone-no-items]\");\n this.uploadItems = this.modal.querySelector(\"[data-dropzone-items]\");\n this.input = this.dropZone.querySelector(\"input\");\n this.items = []\n\n this.attachmentCounter = 0;\n this.locales = JSON.parse(this.uploadItems.dataset.locales);\n\n this.updateDropZone();\n }\n\n uploadFiles(files) {\n if (this.options.multiple) {\n Array.from(files).forEach((file) => this.uploadFile(file))\n } else if (!this.uploadItems.children.length) {\n this.uploadFile(files[0])\n }\n }\n\n uploadFile(file) {\n const uploader = new Uploader(this, {\n file: file,\n url: this.input.dataset.directUploadUrl,\n attachmentName: file.name\n });\n\n const item = this.createUploadItem(file, uploader.errors)\n\n // add the item to the DOM, before validations\n this.uploadItems.appendChild(item);\n\n if (uploader.errors.length) {\n this.updateDropZone();\n } else {\n uploader.upload.create((error, blob) => {\n if (error) {\n uploader.errors = [error]\n this.uploadItems.replaceChild(this.createUploadItem(file, [error], { value: 100 }), item);\n this.updateDropZone();\n\n } else {\n // attach the file hash to submit the form, when the file has been uploaded\n file.hiddenField = blob.signed_id\n\n // since the validation step is async, we must wait for the responses\n uploader.validate(blob.signed_id).then(() => {\n if (uploader.errors.length) {\n this.uploadItems.replaceChild(this.createUploadItem(file, uploader.errors, { value: 100 }), item)\n } else {\n // add only the validated files to the array of File(s)\n this.items.push(file)\n this.autoloadImage(item, file)\n }\n\n this.updateDropZone();\n });\n }\n });\n }\n }\n\n autoloadImage(container, file) {\n // if the mime type is not from an image, skip previewing\n if (!(/image/).test(file.type)) {\n return\n }\n\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = ({ target: { result }}) => {\n const img = container.querySelector(\"img\")\n img.src = result\n }\n }\n\n async preloadFiles(element) {\n // Get a File object from img.src, more info: https://stackoverflow.com/a/38935544/5020256\n const { src } = element.querySelector(\"img\") || {}\n\n let buffer = \"\";\n let type = \"\";\n\n if (src) {\n buffer = await fetch(src).then((res) => res.arrayBuffer())\n // since we cannot know the exact mime-type of the file,\n // we assume as \"image/*\" if it has the src attribute in order to load the preview\n type = \"image/*\"\n }\n\n const file = new File([buffer], element.dataset.filename, { type })\n const item = this.createUploadItem(file, [], { ...element.dataset, value: 100 })\n\n file.attachmentId = element.dataset.attachmentId\n file.hiddenField = element.dataset.hiddenField\n\n this.items.push(file)\n this.uploadItems.appendChild(item);\n this.autoloadImage(item, file)\n this.updateDropZone();\n }\n\n getOrdinalNumber() {\n const nextOrdinalNumber = this.attachmentCounter;\n this.attachmentCounter += 1;\n return nextOrdinalNumber;\n }\n\n updateDropZone() {\n // NOTE: since the FileList HTML attribute of input[type=\"file\"] cannot be set (read-only),\n // we cannot check this.input.files.length when some item is removed\n const { children: files } = this.uploadItems\n const inputHasFiles = files.length > 0\n this.uploadItems.hidden = !inputHasFiles;\n\n // Disabled save button when any children have data-state=\"error\"\n this.saveButton.disabled = Array.from(files).filter(({ dataset: { state } }) => state === STATUS.ERROR).length > 0;\n\n // Only allow to continue the upload when the multiple option is true (default: false)\n const continueUpload = !files.length || this.options.multiple\n this.input.disabled = !continueUpload\n if (continueUpload) {\n this.emptyItems.classList.remove(\"is-disabled\");\n this.emptyItems.querySelector(\"label\").removeAttribute(\"disabled\");\n } else {\n this.emptyItems.classList.add(\"is-disabled\");\n this.emptyItems.querySelector(\"label\").disabled = true;\n }\n }\n\n createUploadItem(file, errors, opts = {}) {\n const okTemplate = `\n <img src=\"data:,\" alt=\"${escapeQuotes(file.name)}\" />\n <span>${escapeHtml(truncateFilename(file.name))}</span>\n `\n\n const errorTemplate = `\n <div>${icon(\"error-warning-line\")}</div>\n <div>\n <span>${escapeHtml(truncateFilename(file.name))}</span>\n <span>${this.locales.validation_error}</span>\n <ul>${errors.map((error) => `<li>${error}</li>`).join(\"\\n\")}</ul>\n </div>\n `\n\n const titleTemplate = `\n <img src=\"data:,\" alt=\"${escapeQuotes(file.name)}\" />\n <div>\n <div>\n <label>${this.locales.filename}</label>\n <span>${escapeHtml(truncateFilename(file.name))}</span>\n </div>\n <div>\n <label>${this.locales.title}</label>\n <input class=\"sm\" type=\"text\" value=\"${escapeQuotes(opts.title || truncateFilename(file.name))}\" />\n </div>\n </div>\n `\n\n let state = STATUS.VALIDATED\n let content = okTemplate\n let template = \"ok\"\n\n if (errors.length) {\n state = STATUS.ERROR\n content = errorTemplate\n template = \"error\"\n }\n\n if (!errors.length && this.options.titled) {\n content = titleTemplate\n template = \"titled\"\n }\n\n const attachmentId = opts.attachmentId\n ? `data-attachment-id=\"${opts.attachmentId}\"`\n : \"\"\n const fullTemplate = `\n <li ${attachmentId} data-filename=\"${escapeQuotes(file.name)}\" data-state=\"${state}\">\n <div data-template=\"${template}\">\n ${content.trim()}\n <button>${this.locales.remove}</button>\n </div>\n <progress max=\"100\" value=\"${opts.value || 0}\"></progress>\n </li>`\n\n const div = document.createElement(\"div\")\n div.innerHTML = fullTemplate.trim()\n\n const container = div.firstChild\n\n // append the listeners to the template\n container.querySelector(\"button\").addEventListener(\"click\", this.handleButtonClick.bind(this))\n\n return container;\n }\n\n handleButtonClick({ currentTarget }) {\n const item = currentTarget.closest(\"[data-filename]\")\n const { filename } = item.dataset\n\n // remove item from DOM\n item.remove();\n\n // mark item as removable from the array of File(s), if exists (it could be non-validated)\n const ix = this.items.findIndex(({ name }) => name === filename)\n if (ix > -1) {\n this.items[ix].removable = true\n }\n\n this.updateDropZone();\n }\n\n setProgressBar(name, value) {\n this.uploadItems.querySelector(`[data-filename=\"${escapeQuotes(name)}\"] progress`).value = value\n }\n\n updateAddAttachmentsButton() {\n if (this.uploadItems.children.length === 0) {\n this.button.innerHTML = this.modalTitle.dataset.addlabel;\n } else {\n this.button.innerHTML = this.modalTitle.dataset.editlabel;\n }\n\n const requiredCheckbox = this.button.nextElementSibling\n if (requiredCheckbox) {\n requiredCheckbox.checked = this.uploadItems.children.length > 0\n }\n }\n\n cleanAllFiles() {\n this.items = []\n this.uploadItems.textContent = \"\"\n this.updateDropZone();\n }\n}\n","import UploadModal from \"src/decidim/direct_uploads/upload_modal\";\nimport { truncateFilename } from \"src/decidim/direct_uploads/upload_utility\";\nimport { escapeHtml, escapeQuotes } from \"src/decidim/utilities/text\";\n\nconst updateModalTitle = (modal) => {\n if (modal.uploadItems.children.length === 0) {\n modal.modalTitle.innerHTML = modal.modalTitle.dataset.addlabel;\n } else {\n modal.modalTitle.innerHTML = modal.modalTitle.dataset.editlabel;\n }\n modal.updateDropZone();\n}\n\nconst updateActiveUploads = (modal) => {\n // remove the default image block, if exists\n const defaultFile = document.getElementById(`default-active-${modal.modal.id}`)\n if (defaultFile) {\n defaultFile.remove()\n }\n\n const files = document.querySelector(`[data-active-uploads=${modal.modal.id}]`)\n const previousId = Array.from(files.querySelectorAll(\"[type=hidden][id]\"))\n const isMultiple = modal.options.multiple\n const isTitled = modal.options.titled\n\n // fastest way to clean children nodes\n files.textContent = \"\"\n\n // divide the items between those will gonna be removed, and added\n const [removeFiles, addFiles] = [modal.items.filter(({ removable }) => removable), modal.items.filter(({ removable }) => !removable)]\n\n addFiles.forEach((file, ix) => {\n let title = truncateFilename(file.name, 19)\n\n let hidden = \"\"\n if (file.hiddenField) {\n // if there is hiddenField, this file is new\n let fileField = null;\n if (isMultiple) {\n fileField = `${modal.options.resourceName}[${modal.options.addAttribute}][${ix}][file]`\n } else if (isTitled) {\n fileField = `${modal.options.resourceName}[${modal.options.addAttribute}][file]`\n } else {\n fileField = `${modal.options.resourceName}[${modal.options.addAttribute}]`;\n }\n\n hidden = `<input type=\"hidden\" name=\"${fileField}\" value=\"${file.hiddenField}\" />`\n } else {\n // otherwise, we keep the attachmentId\n let fileField = null;\n if (isMultiple) {\n fileField = `${modal.options.resourceName}[${modal.options.addAttribute}][${ix}][id]`;\n } else if (isTitled) {\n fileField = `${modal.options.resourceName}[${modal.options.addAttribute}][id]`;\n } else {\n fileField = `${modal.options.resourceName}[${modal.options.addAttribute}]`;\n }\n\n // convert all node attributes to string\n const attributes = Array.from(previousId.find(({ id }) => id === file.attachmentId).attributes).reduce((acc, { name, value }) => `${acc} ${name}=\"${value}\"`, \"\")\n hidden = `<input ${attributes} />`\n hidden += `<input type=\"hidden\" name=\"${fileField}\" value=\"${file.attachmentId}\" />`\n }\n\n if (isTitled) {\n const titleValue = modal.modal.querySelectorAll('input[type=\"text\"]')[ix].value\n // NOTE - Renaming the attachment is not supported when multiple uploader is disabled\n const titleField = isMultiple\n ? `${modal.options.resourceName}[${modal.options.addAttribute}][${ix}][title]`\n : `${modal.options.resourceName}[${modal.options.addAttribute}][title]`\n hidden += `<input type=\"hidden\" name=\"${titleField}\" value=\"${escapeQuotes(titleValue)}\" />`\n\n title = titleValue\n }\n\n const attachmentIdOrHiddenField = file.attachmentId\n ? `data-attachment-id=\"${file.attachmentId}\"`\n : `data-hidden-field=\"${file.hiddenField}\"`\n\n const template = `\n <div ${attachmentIdOrHiddenField} data-filename=\"${escapeQuotes(file.name)}\" data-title=\"${escapeQuotes(title)}\">\n ${(/image/).test(file.type) && `<div><img src=\"data:,\" alt=\"${escapeQuotes(file.name)}\" /></div>` || \"\"}\n <span>${escapeHtml(title)} (${escapeHtml(truncateFilename(file.name))})</span>\n ${hidden}\n </div>\n `\n\n const div = document.createElement(\"div\")\n div.innerHTML = template.trim()\n\n const container = div.firstChild\n\n modal.autoloadImage(container, file)\n\n files.appendChild(container)\n });\n\n removeFiles.forEach(() => {\n const div = document.createElement(\"div\")\n div.innerHTML = `<input name='${modal.options.resourceName}[remove_${modal.button.name}]' type=\"hidden\" value=\"true\">`\n files.appendChild(div.firstChild)\n })\n\n modal.updateAddAttachmentsButton();\n}\n\nconst highlightDropzone = (modal) => {\n modal.emptyItems.classList.add(\"is-dragover\")\n modal.uploadItems.classList.add(\"is-dragover\")\n}\n\nconst resetDropzone = (modal) => {\n modal.emptyItems.classList.remove(\"is-dragover\")\n modal.uploadItems.classList.remove(\"is-dragover\")\n}\n\n/* NOTE: all this actions are supposed to work using the modal object,\n so, perhaps, it would be more accurate to move all the inner listeners to the UploadModal class */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const attachmentButtons = document.querySelectorAll(\"button[data-upload]\");\n\n attachmentButtons.forEach((attachmentButton) => {\n const modal = new UploadModal(attachmentButton);\n\n // append to the modal items array those files already validated (only in first pageload)\n const files = document.querySelector(`[data-active-uploads=${modal.modal.id}]`);\n [...files.children].forEach((child) => modal.preloadFiles(child));\n\n // whenever the input fields changes, process the files\n modal.input.addEventListener(\"change\", (event) => modal.uploadFiles(event.target.files));\n\n // update the modal title if there are files uploaded and load files (if previously deleted after clicking cancel)\n modal.button.addEventListener(\"click\", (event) => event.preventDefault() || (modal.items.length === 0 && [...files.children].forEach((child) => child.tagName === \"DIV\" && modal.preloadFiles(child))) || updateModalTitle(modal));\n\n // avoid browser to open the file\n modal.dropZone.addEventListener(\"dragover\", (event) => event.preventDefault() || highlightDropzone(modal));\n modal.dropZone.addEventListener(\"dragleave\", () => resetDropzone(modal));\n // avoid browser to open the file and then, process the files\n modal.dropZone.addEventListener(\"drop\", (event) => event.preventDefault() || resetDropzone(modal) || modal.uploadFiles(event.dataTransfer.files));\n\n // update the DOM with the validated items from the modal\n modal.saveButton.addEventListener(\"click\", (event) => event.preventDefault() || updateActiveUploads(modal));\n // remove the uploaded files if cancel button is clicked\n modal.cancelButton.addEventListener(\"click\", (event) => event.preventDefault() || modal.cleanAllFiles());\n })\n})\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from \"js-cookie\";\n\nclass ConsentManager {\n // Options should contain the following keys:\n // - modal - HTML element of the data consent modal (e.g. \"<div id=\"dc-modal\">Foo bar</div>\")\n // - categories - Available data consent categories (e.g. [\"essential\", \"preferences\", \"analytics\", \"marketing\"])\n // - cookieName - Name of the cookie saved in the browser (e.g. \"decidim-consent\")\n // - warningElement - HTML element to be shown when user has not given the necessary data consent to display the content.\n constructor(options) {\n this.modal = options.modal;\n this.categories = options.categories;\n this.cookieName = options.cookieName;\n this.cookie = Cookies.get(this.cookieName);\n this.warningElement = options.warningElement;\n if (this.cookie) {\n this.updateState(JSON.parse(this.cookie));\n } else {\n this.updateState({});\n }\n }\n\n updateState(newState) {\n this.state = newState;\n Cookies.set(this.cookieName, JSON.stringify(this.state), {\n domain: document.location.host.split(\":\")[0],\n sameSite: \"Lax\",\n expires: 365,\n secure: window.location.protocol === \"https:\"\n });\n this.updateModalSelections();\n this.triggerState();\n }\n\n triggerJavaScripts() {\n document.querySelectorAll(\"script[type='text/plain'][data-consent]\").forEach((script) => {\n if (this.state[script.dataset.consent]) {\n const activeScript = document.createElement(\"script\");\n if (script.src.length > 0) {\n activeScript.src = script.src;\n } else {\n activeScript.innerHTML = script.innerHTML;\n }\n script.parentNode.replaceChild(activeScript, script);\n }\n });\n\n const event = new CustomEvent(\"dataconsent\", { detail: this.state });\n document.dispatchEvent(event);\n }\n\n triggerIframes() {\n if (this.allAccepted()) {\n document.querySelectorAll(\".disabled-iframe\").forEach((original) => {\n if (original.childNodes && original.childNodes.length) {\n const content = Array.from(original.childNodes).find((childNode) => {\n return childNode.nodeType === Node.COMMENT_NODE;\n });\n if (!content) {\n return;\n }\n const newElement = document.createElement(\"div\");\n newElement.innerHTML = content.nodeValue;\n original.parentNode.replaceChild(newElement.firstElementChild, original);\n }\n });\n } else {\n document.querySelectorAll(\"iframe\").forEach((original) => {\n const newElement = document.createElement(\"div\");\n newElement.className = \"disabled-iframe\";\n newElement.appendChild(document.createComment(`${original.outerHTML}`));\n original.parentNode.replaceChild(newElement, original);\n });\n }\n }\n\n triggerWarnings() {\n document.querySelectorAll(\".disabled-iframe\").forEach((original) => {\n if (original.querySelector(\".dataconsent-warning\")) {\n return;\n }\n\n let cloned = this.warningElement.cloneNode(true);\n cloned.classList.remove(\"hide\");\n cloned.hidden = false;\n original.appendChild(cloned);\n });\n }\n\n triggerState() {\n this.triggerJavaScripts();\n this.triggerIframes();\n this.triggerWarnings();\n }\n\n allAccepted() {\n return this.categories.every((category) => {\n return this.state[category] === true;\n });\n }\n\n updateModalSelections() {\n const categoryElements = this.modal.querySelectorAll(\"[data-id]\");\n\n categoryElements.forEach((categoryEl) => {\n const categoryInput = categoryEl.querySelector(\"input\");\n if (this.state && this.state[categoryInput.name]) {\n categoryInput.checked = true;\n } else if (!categoryInput.disabled) {\n categoryInput.checked = false;\n }\n });\n }\n\n saveSettings(newState) {\n this.updateState(newState);\n }\n\n acceptAll() {\n const newState = {};\n this.categories.forEach((category) => {\n newState[category] = true;\n });\n this.updateState(newState);\n }\n\n rejectAll() {\n this.updateState({\n essential: true\n });\n }\n\n getState() {\n return this.state;\n }\n}\n\nexport default ConsentManager\n","import ConsentManager from \"src/decidim/data_consent/consent_manager\";\n\nconst initDialog = (manager) => {\n if (Object.keys(manager.state).length > 0) {\n return;\n }\n\n const dialogWrapper = document.querySelector(\"#dc-dialog-wrapper\");\n dialogWrapper.hidden = false\n\n const acceptAllButton = dialogWrapper.querySelector(\"#dc-dialog-accept\");\n const rejectAllButton = dialogWrapper.querySelector(\"#dc-dialog-reject\");\n const settingsButton = dialogWrapper.querySelector(\"#dc-dialog-settings\");\n\n acceptAllButton.addEventListener(\"click\", () => {\n manager.acceptAll();\n dialogWrapper.hidden = true;\n });\n\n rejectAllButton.addEventListener(\"click\", () => {\n manager.rejectAll();\n dialogWrapper.hidden = true;\n });\n\n settingsButton.addEventListener(\"click\", () => {\n dialogWrapper.hidden = true;\n });\n}\n\nconst initModal = (manager) => {\n const acceptAllButton = manager.modal.querySelector(\"#dc-modal-accept\");\n const rejectAllButton = manager.modal.querySelector(\"#dc-modal-reject\");\n const saveSettingsButton = manager.modal.querySelector(\"#dc-modal-save\");\n\n acceptAllButton.addEventListener(\"click\", () => {\n manager.acceptAll();\n })\n\n rejectAllButton.addEventListener(\"click\", () => {\n manager.rejectAll();\n })\n\n saveSettingsButton.addEventListener(\"click\", () => {\n let newState = {};\n manager.categories.forEach((category) => {\n const accepted = manager.modal.querySelector(`input[name='${category}']`).checked;\n if (accepted) {\n newState[category] = true;\n }\n })\n manager.saveSettings(newState);\n })\n}\n\nconst initDisabledIframes = (manager) => {\n const disabledIframes = document.querySelectorAll(\".disabled-iframe\")\n if (manager.allAccepted()) {\n disabledIframes.forEach((elem) => {\n const iframe = document.createElement(\"iframe\")\n iframe.setAttribute(\"src\", elem.getAttribute(\"src\"));\n iframe.className = elem.classList.toString();\n iframe.setAttribute(\"allowfullscreen\", elem.getAttribute(\"allowfullscreen\"));\n iframe.setAttribute(\"frameborder\", elem.getAttribute(\"frameborder\"));\n elem.parentElement.appendChild(iframe);\n elem.remove();\n })\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const modal = document.querySelector(\"#dc-modal\");\n if (!modal) {\n return;\n }\n\n const categories = [...modal.querySelectorAll(\"[data-id]\")].map((el) => el.dataset.id)\n const manager = new ConsentManager({\n modal: modal,\n categories: categories,\n cookieName: window.Decidim.config.get(\"consent_cookie_name\"),\n warningElement: document.querySelector(\".dataconsent-warning\")\n });\n\n initDisabledIframes(manager);\n initModal(manager, categories);\n initDialog(manager);\n});\n","export default class Configuration {\n constructor() {\n this.config = {};\n }\n\n set(key, value = null) {\n if (typeof key === \"object\") {\n this.config = { ...this.config, ...key };\n } else {\n this.config[key] = value;\n }\n }\n\n get(key) {\n return this.config[key];\n }\n}\n","import icon from \"src/decidim/icon\"\n\nconst DEFAULT_MESSAGES = {\n externalLink: \"External link\",\n opensInNewTab: \"Opens in new tab\"\n};\nlet MESSAGES = DEFAULT_MESSAGES;\n\n/**\n * Appends an icon to distinguish those links pointing out of decidim.\n * It will apply to all a[target=\"_blank\"] found in the document\n *\n * This behaviour can be omitted adding data-external-link=\"false\" attribute to the anchor tag\n * e.g. <a href=\"https://...\" target=\"_blank\" data-external-link=\"false\">...</a>\n *\n * If you do not want to display the external link indicator, you still need to indicate that\n * the link opens in a new tab to the screen readers. This can be done by adding\n * data-external-link=\"text-only\" attribute to the anchor tag,\n * e.g. <a href=\"https://...\" target=\"_blank\" data-external-link=\"text-only\">...</a>\n *\n * In addition, if you want to disable the external link warning for the link, you can add the\n * data-external-domain-link=\"false\" attribute to the anchor tag,\n * e.g. <a href=\"https://...\" target=\"_blank\" data-external-link=\"text-only\" data-external-domain-link=\"false\">...</a>\n */\nexport default class ExternalLink {\n static configureMessages(messages) {\n MESSAGES = { ...DEFAULT_MESSAGES, ...messages };\n }\n\n constructor(node) {\n if (node.closest(\".editor-container\")) {\n return;\n }\n\n if (!node.querySelector(\"span[data-external-link]\")) {\n if (node.dataset.externalLink === \"text-only\") {\n this.setupTextOnly(node);\n } else {\n this.setup(node);\n }\n }\n }\n\n setup(node) {\n const span = document.createElement(\"span\");\n\n span.dataset.externalLink = true;\n span.innerHTML = `${this.generateIcon()}${this.generateScreenReaderLabel(node)}`\n span.classList.add(\"inline-block\", \"mx-0.5\");\n\n return node.appendChild(span);\n }\n\n setupTextOnly(node) {\n const dummy = document.createElement(\"span\");\n dummy.innerHTML = this.generateScreenReaderLabel(node);\n\n return node.appendChild(dummy.firstChild);\n }\n\n generateIcon() {\n return icon(\"external-link-line\", { class: \"fill-current\" });\n }\n\n generateScreenReaderLabel(node) {\n let text = MESSAGES.opensInNewTab;\n if (this._isExternalLink(node)) {\n text = MESSAGES.externalLink;\n }\n\n return `<span class=\"sr-only\">(${text})</span>`;\n }\n\n _isExternalLink(node) {\n const externalMatches = [\n // Links to the internal link page /link?external_url=https%3A%2F%2Fdecidim.org\n new RegExp(\"^/link\\\\?external_url=\"),\n // Links starting with http/s and not to the current host\n new RegExp(`^https?://((?!${location.host}).)+`)\n ];\n\n const href = node.getAttribute(\"href\") || \"\";\n return externalMatches.some(((regexp) => href.match(regexp)));\n }\n}\n","/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true}] */\n\nconst COUNT_KEY = \"%count%\";\n// How often SR announces the message in relation to maximum characters. E.g.\n// if max characters is 1000, screen reader announces the remaining characters\n// every 100 (= 0.1 * 1000) characters. This will be \"floored\" to the closest\n// 100 if the maximum characters > 100. E.g. if max characters is 5500, the\n// threshold is 500 (= Math.floor(550 / 100) * 100). With 100 or less\n// characters, this ratio is omitted and the announce threshold is always set to\n// 10.\nconst SR_ANNOUNCE_THRESHOLD_RATIO = 0.1;\n// The number of characters left after which every keystroke will be announced.\nconst SR_ANNOUNCE_EVERY_THRESHOLD = 10;\nconst DEFAULT_MESSAGES = {\n charactersAtLeast: {\n one: `at least ${COUNT_KEY} character`,\n other: `at least ${COUNT_KEY} characters`\n },\n charactersLeft: {\n one: `${COUNT_KEY} character left`,\n other: `${COUNT_KEY} characters left`\n }\n};\nlet MESSAGES = DEFAULT_MESSAGES;\n\nexport default class InputCharacterCounter {\n static configureMessages(messages) {\n MESSAGES = $.extend(DEFAULT_MESSAGES, messages);\n }\n\n constructor(input) {\n this.$input = input;\n this.$target = $(this.$input.data(\"remaining-characters\"));\n this.minCharacters = parseInt(this.$input.attr(\"minlength\"), 10);\n this.maxCharacters = parseInt(this.$input.attr(\"maxlength\"), 10);\n this.describeByCounter = this.$input.attr(\"type\") !== \"hidden\" && typeof this.$input.attr(\"aria-describedby\") === \"undefined\";\n\n // Define the closest length for the input \"gaps\" defined by the threshold.\n if (this.maxCharacters > 10) {\n if (this.maxCharacters > 100) {\n this.announceThreshold = Math.floor(this.maxCharacters * SR_ANNOUNCE_THRESHOLD_RATIO);\n } else {\n this.announceThreshold = 10;\n }\n\n // The number of characters left after which every keystroke will be announced.\n this.announceEveryThreshold = SR_ANNOUNCE_EVERY_THRESHOLD;\n } else {\n this.announceThreshold = 1;\n this.announceEveryThreshold = 1;\n }\n\n let targetId = this.$target.attr(\"id\");\n if (typeof targetId === \"undefined\") {\n if (this.$input.attr(\"id\") && this.$input.attr(\"id\").length > 0) {\n targetId = `${this.$input.attr(\"id\")}_characters`;\n } else {\n targetId = `characters_${Math.random().toString(36).substr(2, 9)}`;\n }\n }\n\n if (this.$target.length > 0) {\n this.$target.attr(\"id\", targetId)\n } else {\n const span = document.createElement(\"span\")\n span.id = targetId\n span.className = \"input-character-counter__text\"\n\n this.$target = $(span)\n\n const container = document.createElement(\"span\")\n container.className = \"input-character-counter__container\"\n container.appendChild(span)\n\n // If input is a hidden for WYSIWYG editor add it at the end\n if (this.$input.parent().is(\".editor\")) {\n this.$input.parent().append(container);\n } else {\n const wrapper = document.createElement(\"span\")\n wrapper.className = \"input-character-counter\"\n\n // The form errors need to be in the same container with the field they\n // belong to for Foundation Abide to show them automatically.\n this.$input.next(\".form-error\").addBack().wrapAll(wrapper)\n this.$input.after(container);\n }\n }\n\n if (this.$target.length > 0 && (this.maxCharacters > 0 || this.minCharacters > 0)) {\n // Create the screen reader target element. We do not want to constantly\n // announce every change to screen reader, only occasionally.\n const screenReaderId = `${targetId}_sr`;\n this.$srTarget = $(`#${screenReaderId}`);\n if (!this.$srTarget.length) {\n this.$srTarget = $(\n `<span role=\"status\" id=\"${screenReaderId}\" class=\"sr-only remaining-character-count-sr\" />`\n );\n this.$target.before(this.$srTarget);\n }\n this.$target.attr(\"aria-hidden\", \"true\");\n this.$userInput = this.$input;\n\n // In WYSIWYG editors (TipTap) we need to find the active editor from the\n // DOM node.\n if (this.$input.parent().is(\".editor\")) {\n // Wait until the next javascript loop so WYSIWYG editors are created\n setTimeout(() => {\n this.editor = this.$input.siblings(\".editor-container\")[0].querySelector(\".ProseMirror\").editor;\n this.$userInput = $(this.editor.view.dom);\n this.initialize();\n });\n } else {\n this.initialize();\n }\n }\n }\n\n initialize() {\n this.updateInputLength();\n this.previousInputLength = this.inputLength;\n\n this.bindEvents();\n this.setDescribedBy(true);\n }\n\n setDescribedBy(active) {\n if (!this.describeByCounter) {\n return;\n }\n\n if (active) {\n this.$userInput.attr(\"aria-describedby\", this.$srTarget.attr(\"id\"));\n } else {\n this.$userInput.removeAttr(\"aria-describedby\");\n }\n }\n\n bindEvents() {\n if (this.editor) {\n this.editor.on(\"update\", () => {\n this.handleInput();\n });\n } else {\n this.$userInput.on(\"input\", () => {\n this.handleInput();\n });\n }\n\n this.$userInput.on(\"keyup\", () => {\n this.updateStatus();\n });\n this.$userInput.on(\"focus\", () => {\n this.updateScreenReaderStatus();\n });\n this.$userInput.on(\"blur\", () => {\n this.updateScreenReaderStatus();\n this.setDescribedBy(true);\n });\n if (this.$userInput.get(0) !== null) {\n this.$userInput.get(0).addEventListener(\"emoji.added\", () => {\n this.updateStatus();\n });\n }\n this.updateStatus();\n this.updateScreenReaderStatus();\n }\n\n getInputLength() {\n return this.inputLength;\n }\n\n updateInputLength() {\n this.previousInputLength = this.inputLength;\n if (this.editor) {\n this.inputLength = this.editor.storage.characterCount.characters();\n } else {\n this.inputLength = this.$input.val().length;\n }\n }\n\n handleInput() {\n this.updateInputLength();\n this.checkScreenReaderUpdate();\n // If the input is \"described by\" the character counter, some screen\n // readers (NVDA) announce the status twice when it is updated. By\n // removing the aria-describedby attribute while the user is typing makes\n // the screen reader announce the status only once.\n this.setDescribedBy(false);\n }\n\n /**\n * This compares the current inputLength to the previous value and decides\n * whether the user is currently adding or deleting characters from the view.\n *\n * @returns {String} The input direction either \"ins\" for insert or \"del\" for\n * delete.\n */\n getInputDirection() {\n if (this.inputLength < this.previousInputLength) {\n return \"del\";\n }\n\n return \"ins\";\n }\n\n getScreenReaderLength() {\n const currentLength = this.getInputLength();\n if (this.maxCharacters < 10) {\n return currentLength;\n } else if (this.maxCharacters - currentLength <= this.announceEveryThreshold) {\n return currentLength;\n }\n\n const srLength = currentLength - currentLength % this.announceThreshold;\n\n // Prevent the screen reader telling too many characters left if the user\n // deletes a characters. This can cause confusing experience e.g. when the\n // user is closing the maximum amount of characters, so if the previous\n // announcement was \"10 characters left\" and the user removes one character,\n // the screen reader would announce \"100 characters left\" next time (when\n // they actually have only 11 characters left). Similar when they are\n // deleting a character at 900 characters, the screen reader would announce\n // \"1000 characters left\" even when they only have 901 characters left.\n if (this.getInputDirection() === \"del\") {\n // The first branch makes sure that if the SR length matches the actual\n // length, it will be always announced.\n if (srLength === currentLength) {\n return srLength;\n // The second branch checks that if we are at the final threshold, we\n // should not announce \"0 characters left\" when the user deletes more than\n // the \"announce after every stroke\" limit (this.announceEveryThreshold).\n } else if (this.maxCharacters - srLength === this.announceThreshold) {\n return this.announcedAt || currentLength;\n // The third branch checks that when deleting characters, we should\n // announce the next threshold to get accurate annoucement. E.g. when we\n // have 750 characters left and the user deletes 100 characters at once,\n // we should announce \"700 characters left\" after that deletion.\n } else if (srLength < currentLength) {\n return srLength + this.announceThreshold;\n }\n // This fixes an issue in the following situation:\n // 1. 750 characters left\n // 2. Delete 100 characters in a row\n // 3. SR: \"800 characters left\" (actual 850)\n // 4. Type one additional character\n // 5. Without this, SR would announce \"900 characters left\" = confusing\n } else if (srLength < this.announcedAt) {\n return this.announcedAt;\n }\n\n return srLength;\n }\n\n getMessages(currentLength = null) {\n const showMessages = [];\n let inputLength = currentLength;\n if (inputLength === null) {\n inputLength = this.getInputLength()\n }\n\n if (this.minCharacters > 0) {\n let message = MESSAGES.charactersAtLeast.other;\n if (this.minCharacters === 1) {\n message = MESSAGES.charactersAtLeast.one;\n }\n showMessages.push(message.replace(COUNT_KEY, this.minCharacters));\n }\n\n if (this.maxCharacters > 0) {\n const remaining = this.maxCharacters - inputLength;\n let message = MESSAGES.charactersLeft.other;\n if (remaining === 1) {\n message = MESSAGES.charactersLeft.one;\n }\n this.$userInput[0].dispatchEvent(\n new CustomEvent(\"characterCounter\", {detail: {remaining: remaining}})\n );\n showMessages.push(message.replace(COUNT_KEY, remaining));\n }\n\n return showMessages;\n }\n\n updateStatus() {\n this.$target.text(this.getMessages().join(\", \"));\n }\n\n checkScreenReaderUpdate() {\n if (this.maxCharacters < 1) {\n return;\n }\n\n const currentLength = this.getScreenReaderLength();\n if (currentLength === this.announcedAt) {\n return;\n }\n\n this.announcedAt = currentLength;\n this.updateScreenReaderStatus(currentLength);\n }\n\n updateScreenReaderStatus(currentLength = null) {\n this.$srTarget.text(this.getMessages(currentLength).join(\", \"));\n }\n}\n\nconst createCharacterCounter = ($input) => {\n if (typeof $input !== \"undefined\" && $input.length) {\n $input.data(\"remaining-characters-counter\", new InputCharacterCounter($input));\n }\n}\n\nexport {InputCharacterCounter, createCharacterCounter};\n","const DEFAULT_MESSAGES = {\n correctErrors: \"There are errors on the form, please correct them.\"\n};\nlet MESSAGES = DEFAULT_MESSAGES;\n\nexport default class FormValidator {\n static configureMessages(messages) {\n MESSAGES = $.extend(DEFAULT_MESSAGES, messages);\n }\n\n constructor(form) {\n this.$form = form;\n\n this.$form.on(\"form-error.decidim\", () => {\n this.handleError();\n });\n }\n\n handleError() {\n this.announceFormError();\n\n $(\".is-invalid-input:first\", this.$form).focus();\n }\n\n /**\n * This announces immediately to the screen reader that there are errors on\n * the form that need to be fixed. Does not work on all screen readers but\n * works e.g. in Windows+Firefox+NVDA and macOS+Safari+VoiceOver\n * combinations.\n *\n * @returns {undefined}\n */\n announceFormError() {\n let $announce = $(\".sr-announce\", this.$form);\n if ($announce.length > 0) {\n $announce.remove();\n }\n $announce = $(\"<div />\");\n $announce.attr(\"class\", \"sr-announce sr-only\");\n $announce.attr(\"aria-live\", \"assertive\");\n this.$form.prepend($announce);\n\n setTimeout(() => {\n $announce.text(MESSAGES.correctErrors);\n }, 100);\n }\n}\n\n$(() => {\n $(\"form\").each((_i, el) => {\n $(el).data(\"form-validator\", new FormValidator($(el)));\n });\n $(document).on(\"forminvalid.zf.abide\", function(_ev, form) {\n form.trigger(\"form-error.decidim\");\n })\n});\n","/**\n * CheckBoxesTree component.\n */\nexport default class CheckBoxesTree {\n constructor() {\n this.checkboxesTree = Array.from(document.querySelectorAll(\"[data-checkboxes-tree]\"));\n\n if (!this.checkboxesTree.length) {\n return;\n }\n\n this.checkboxesLeaf = Array.from(document.querySelectorAll(\"[data-children-checkbox] input\"));\n\n // handles the click in a tree, what means to mark/unmark every children\n this.checkboxesTree.forEach((input) => input.addEventListener(\"click\", (event) => this.checkTheCheckBoxes(event.target)));\n // handles the click in a leaf, what means to update the parent possibly\n this.checkboxesLeaf.forEach((input) => input.addEventListener(\"change\", (event) => this.checkTheCheckParent(event.target)));\n // Review parent checkboxes on initial load\n this.checkboxesLeaf.forEach((input) => this.checkTheCheckParent(input));\n }\n\n /**\n * Set checkboxes as checked if included in given values\n * @public\n * @param {Array} checkboxes - array of checkboxs to check\n * @param {Array} values - values of checkboxes that should be checked\n * @returns {Void} - Returns nothing.\n */\n updateChecked(checkboxes, values) {\n checkboxes.each((_idx, checkbox) => {\n if ((checkbox.value === \"\" && values.length === 1) || (checkbox.value !== \"\" && values.includes(checkbox.value))) {\n checkbox.checked = true;\n this.checkTheCheckBoxes(checkbox);\n this.checkTheCheckParent(checkbox);\n }\n });\n }\n\n /**\n * Set the container form(s) for the component, to disable ignored filters before submitting them\n * @public\n * @param {query} theForm - form or forms where the component will be used\n * @returns {Void} - Returns nothing.\n */\n setContainerForm(theForm) {\n theForm.on(\"submit ajax:before\", () => {\n theForm.find(\".ignore-filters input, input.ignore-filter\").each((_idx, elem) => {\n elem.disabled = true;\n });\n });\n\n theForm.on(\"ajax:send\", () => {\n theForm.find(\".ignore-filters input, input.ignore-filter\").each((_idx, elem) => {\n elem.disabled = false;\n });\n });\n }\n\n /**\n * Handles the click action on any checkbox.\n * @private\n * @param {Input} target - the input that has been checked\n * @returns {Void} - Returns nothing.\n */\n checkTheCheckBoxes(target) {\n const targetChecks = target.dataset.checkboxesTree;\n const checkStatus = target.checked;\n // NOTE: Note the regex CSS query, it selects those [data-children-checkbox] ended with the target id\n const allChecks = document.querySelectorAll(`[data-children-checkbox$=\"${targetChecks}\"] input`);\n\n allChecks.forEach((input) => {\n input.checked = checkStatus;\n input.indeterminate = false;\n input.classList.add(\"ignore-filter\");\n\n // recursive call if the input it is also a tree\n if (input.dataset.checkboxesTree) {\n this.checkTheCheckBoxes(input)\n }\n });\n }\n\n /**\n * Update children checkboxes state when the current selection changes\n * @private\n * @param {Input} input - the checkbox to check its parent\n * @returns {Void} - Returns nothing.\n */\n checkTheCheckParent(input) {\n const key = input.parentNode.dataset.childrenCheckbox\n // search in the checkboxes array if some id ends with the childrenCheckbox key, what means it is the parent\n const parentCheck = this.checkboxesTree.find(({ id }) => new RegExp(`${key}$`, \"i\").test(id))\n\n if (typeof parentCheck === \"undefined\") {\n return;\n }\n\n // search for leaves with the same parent, what means they are siblings\n const totalCheckSiblings = this.checkboxesLeaf.filter((node) => node.parentNode.dataset.childrenCheckbox === key)\n const checkedSiblings = totalCheckSiblings.filter((checkbox) => checkbox.checked)\n const indeterminateSiblings = totalCheckSiblings.filter((checkbox) => checkbox.indeterminate)\n\n if (checkedSiblings.length === 0 && indeterminateSiblings.length === 0) {\n parentCheck.checked = false;\n parentCheck.indeterminate = false;\n } else if (checkedSiblings.length === totalCheckSiblings.length && indeterminateSiblings.length === 0) {\n parentCheck.checked = true;\n parentCheck.indeterminate = false;\n } else {\n parentCheck.checked = false;\n parentCheck.indeterminate = true;\n }\n\n totalCheckSiblings.forEach((sibling) => {\n if (parentCheck.indeterminate && !sibling.indeterminate) {\n sibling.classList.remove(\"ignore-filter\");\n } else {\n sibling.classList.add(\"ignore-filter\");\n }\n });\n\n // recursive call if there are more children\n if (\"childrenCheckbox\" in parentCheck.parentNode.dataset) {\n this.checkTheCheckParent(parentCheck);\n }\n }\n}\n","/* eslint-disable no-div-regex, no-useless-escape, no-param-reassign, id-length */\n/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true}] */\n\n/**\n * A plain Javascript component that handles the form filter.\n * @class\n * @augments Component\n */\n\nimport delayed from \"src/decidim/delayed\"\nimport CheckBoxesTree from \"src/decidim/check_boxes_tree\"\nimport { registerCallback, unregisterCallback, pushState, replaceState, state } from \"src/decidim/history\"\n\nexport default class FormFilterComponent {\n constructor($form) {\n this.$form = $form;\n this.id = this.$form.attr(\"id\") || this._getUID();\n this.mounted = false;\n this.changeEvents = true;\n this.theCheckBoxesTree = new CheckBoxesTree();\n\n this._updateInitialState();\n this._onFormChange = delayed(this, this._onFormChange.bind(this));\n this._onPopState = this._onPopState.bind(this);\n\n if (window.Decidim.PopStateHandler) {\n this.popStateSubmiter = false;\n } else {\n this.popStateSubmiter = true;\n window.Decidim.PopStateHandler = this.id;\n }\n }\n\n /**\n * Handles the logic for unmounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n unmountComponent() {\n if (this.mounted) {\n this.mounted = false;\n this.$form.off(\"change\", \"input, select\", this._onFormChange);\n\n unregisterCallback(`filters-${this.id}`)\n }\n }\n\n /**\n * Handles the logic for mounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n mountComponent() {\n if (this.$form.length > 0 && !this.mounted) {\n this.mounted = true;\n let queue = 0;\n\n let contentContainer = $(\"main\");\n if (contentContainer.length === 0 && this.$form.data(\"remoteFill\")) {\n contentContainer = this.$form.data(\"remoteFill\");\n }\n this.$form.on(\"change\", \"input:not([data-disable-dynamic-change]), select:not([data-disable-dynamic-change])\", this._onFormChange);\n\n this.currentFormRequest = null;\n this.$form.on(\"ajax:beforeSend\", (e) => {\n if (this.currentFormRequest) {\n this.currentFormRequest.abort();\n }\n this.currentFormRequest = e.originalEvent.detail[0];\n queue += 1;\n if (queue > 0 && contentContainer.length > 0 && !contentContainer.hasClass(\"spinner-container\")) {\n contentContainer.addClass(\"spinner-container\");\n }\n });\n\n $(document).on(\"ajax:success\", () => {\n queue -= 1;\n if (queue <= 0 && contentContainer.length > 0) {\n contentContainer.removeClass(\"spinner-container\");\n }\n });\n\n $(document).on(\"ajax:error\", () => {\n queue -= 1;\n if (queue <= 0 && contentContainer.length > 0) {\n contentContainer.removeClass(\"spinner-container\");\n }\n this.$form.find(\".spinner-container\").addClass(\"hide\");\n });\n\n this.theCheckBoxesTree.setContainerForm(this.$form);\n\n registerCallback(`filters-${this.id}`, (currentState) => {\n this._onPopState(currentState);\n });\n }\n }\n\n /**\n * Sets path in the browser history with the initial filters state, to allow to restoring it when using browser history.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _updateInitialState() {\n const [initialPath, initialState] = this._currentStateAndPath();\n initialState._path = initialPath\n replaceState(null, initialState);\n }\n\n /**\n * Finds the current location.\n * @param {boolean} withHost - include the host part in the returned location\n * @private\n * @returns {String} - Returns the current location.\n */\n _getLocation(withHost = true) {\n const currentState = state();\n let path = \"\";\n\n if (currentState && currentState._path) {\n path = currentState._path;\n } else {\n path = window.location.pathname + window.location.search + window.location.hash;\n }\n\n if (withHost) {\n return window.location.origin + path;\n }\n return path;\n }\n\n /**\n * Parse current location and get filter values.\n * @private\n * @returns {Object} - An object where a key correspond to a filter field\n * and the value is the current value for the filter.\n */\n _parseLocationFilterValues() {\n // Every location param is constructed like this: filter[key]=value\n let regexpResult = decodeURIComponent(this._getLocation()).match(/filter\\[([^\\]]*)\\](?:\\[\\])?=([^&]*)/g);\n\n // The RegExp g flag returns null or an array of coincidences. It does not return the match groups\n if (regexpResult) {\n const filterParams = regexpResult.reduce((acc, result) => {\n const [, key, array, value] = result.match(/filter\\[([^\\]]*)\\](\\[\\])?=([^&]*)/);\n if (array) {\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(value);\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n\n return filterParams;\n }\n\n return null;\n }\n\n /**\n * Parse current location and get the current order.\n * @private\n * @returns {string} - The current order\n */\n _parseLocationOrderValue() {\n const url = this._getLocation();\n const match = url.match(/order=([^&]*)/);\n const $orderMenu = this.$form.find(\".order-by .menu\");\n let order = $orderMenu.find(\".menu a:first\").data(\"order\");\n\n if (match) {\n order = match[1];\n }\n\n return order;\n }\n\n /**\n * Clears the form to start with a clean state.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _clearForm() {\n this.$form.find(\"input[type=checkbox]\").each((index, element) => {\n element.checked = element.indeterminate = false;\n });\n this.$form.find(\"input[type=radio]\").attr(\"checked\", false);\n\n // This ensure the form is reset in a valid state where a fieldset of\n // radio buttons has the first selected.\n this.$form.find(\"fieldset input[type=radio]:first\").each(function () {\n // I need the this to iterate a jQuery collection\n $(this)[0].checked = true; // eslint-disable-line no-invalid-this\n });\n }\n\n /**\n * Handles the logic when going back to a previous state in the filter form.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _onPopState() {\n this.changeEvents = false;\n this._clearForm();\n\n const filterParams = this._parseLocationFilterValues();\n const currentOrder = this._parseLocationOrderValue();\n\n this.$form.find(\"input.order_filter\").val(currentOrder);\n\n if (filterParams) {\n const fieldIds = Object.keys(filterParams);\n\n // Iterate the filter params and set the correct form values\n fieldIds.forEach((fieldName) => {\n let value = filterParams[fieldName];\n\n if (Array.isArray(value)) {\n let checkboxes = this.$form.find(`input[type=checkbox][name=\"filter[${fieldName}][]\"]`);\n this.theCheckBoxesTree.updateChecked(checkboxes, value);\n } else {\n this.$form.find(`*[name=\"filter[${fieldName}]\"]`).each((index, element) => {\n switch (element.type) {\n case \"hidden\":\n break;\n case \"radio\":\n case \"checkbox\":\n element.checked = value === element.value;\n break;\n default:\n element.value = value;\n }\n });\n }\n });\n }\n\n // Only one instance should submit the form on browser history navigation\n if (this.popStateSubmiter) {\n Rails.fire(this.$form[0], \"submit\");\n }\n\n this.changeEvents = true;\n }\n\n /**\n * Handles the logic to update the current location after a form change event.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _onFormChange() {\n if (!this.changeEvents) {\n return;\n }\n\n const [newPath, newState] = this._currentStateAndPath();\n const path = this._getLocation(false);\n\n if (newPath === path) {\n return;\n }\n\n Rails.fire(this.$form[0], \"submit\");\n pushState(newPath, newState);\n this._saveFilters(newPath);\n }\n\n /**\n * Calculates the path and the state associated to the filters inputs.\n * @private\n * @returns {Array} - Returns an array with the path and the state for the current filters state.\n */\n _currentStateAndPath() {\n const formAction = this.$form.attr(\"action\");\n const params = this.$form.find(\"input:not(.ignore-filter)\").serialize();\n\n let path = \"\";\n let currentState = {};\n\n if (formAction.indexOf(\"?\") < 0) {\n path = `${formAction}?${params}`;\n } else {\n path = `${formAction}&${params}`;\n }\n\n return [path, currentState];\n }\n\n /**\n * Generates a unique identifier for the form.\n * @private\n * @returns {String} - Returns a unique identifier\n */\n _getUID() {\n return `filter-form-${new Date().getUTCMilliseconds()}-${Math.floor(Math.random() * 10000000)}`;\n }\n\n /**\n * Saves the changed filters on sessionStorage API.\n * @private\n * @param {string} pathWithQueryStrings - path with all the query strings for filter. To be used with backToListLink().\n * @returns {Void} - Returns nothing.\n */\n _saveFilters(pathWithQueryStrings) {\n if (!window.sessionStorage) {\n return;\n }\n\n const pathName = this.$form.attr(\"action\");\n sessionStorage.setItem(\"filteredParams\", JSON.stringify({[pathName]: pathWithQueryStrings}));\n }\n\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n * @param {Object} context - the context for the called function.\n * @param {Function} func - the function to be executed.\n * @param {int} wait - number of milliseconds to wait before executing the function.\n * @private\n * @returns {Void} - Returns nothing.\n */\nexport default function delayed(context, func, wait) {\n let timeout = null;\n\n return function(...args) {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = null;\n Reflect.apply(func, context, args);\n }, wait);\n }\n}\n","// Bundled with Packemon: https://packemon.dev\n// Platform: browser, Support: stable, Format: esm\n\n/**\n * Append a skin tone index (number) to the end of a shortcode.\n */\nfunction appendSkinToneIndex(shortcode, emoji, prefix = '') {\n return `${shortcode}_${prefix}${Array.isArray(emoji.tone) ? emoji.tone.join('-') : emoji.tone}`;\n}\n\nconst SEQUENCE_REMOVAL_PATTERN = /200D|FE0E|FE0F/g; // Use numbers instead of string values, as the filesize is greatly reduced.\n\nconst TEXT = 0;\nconst EMOJI = 1;\nconst FEMALE = 0;\nconst MALE = 1;\nconst FULLY_QUALIFIED = 0;\nconst MINIMALLY_QUALIFIED = 1;\nconst UNQUALIFIED = 2;\nconst LIGHT_SKIN = 1;\nconst MEDIUM_LIGHT_SKIN = 2;\nconst MEDIUM_SKIN = 3;\nconst MEDIUM_DARK_SKIN = 4;\nconst DARK_SKIN = 5;\nconst GROUP_KEY_SMILEYS_EMOTION = 'smileys-emotion';\nconst GROUP_KEY_PEOPLE_BODY = 'people-body';\nconst GROUP_KEY_ANIMALS_NATURE = 'animals-nature';\nconst GROUP_KEY_FOOD_DRINK = 'food-drink';\nconst GROUP_KEY_TRAVEL_PLACES = 'travel-places';\nconst GROUP_KEY_ACTIVITIES = 'activities';\nconst GROUP_KEY_OBJECTS = 'objects';\nconst GROUP_KEY_SYMBOLS = 'symbols';\nconst GROUP_KEY_FLAGS = 'flags';\nconst GROUP_KEY_COMPONENT = 'component';\nconst SKIN_KEY_LIGHT = 'light';\nconst SKIN_KEY_MEDIUM_LIGHT = 'medium-light';\nconst SKIN_KEY_MEDIUM = 'medium';\nconst SKIN_KEY_MEDIUM_DARK = 'medium-dark';\nconst SKIN_KEY_DARK = 'dark'; // Important release versions and locales in generating accurate data.\n\nconst LATEST_EMOJI_VERSION = '14.0';\nconst LATEST_UNICODE_VERSION = '14.0.0';\nconst LATEST_CLDR_VERSION = '40';\nconst FIRST_UNICODE_EMOJI_VERSION = '6.0.0';\nconst EMOJI_VERSIONS = ['1.0', '2.0', '3.0', '4.0', '5.0', '11.0', '12.0', '12.1', '13.0', '13.1', '14.0'];\nconst UNICODE_VERSIONS = ['6.0', '6.1', '6.2', '6.3', '7.0', '8.0', '9.0', '10.0', '11.0', '12.0', '12.1', '13.0', '14.0'];\nconst SUPPORTED_LOCALES = ['da', // Danish\n'de', // German\n'en', // English\n'en-gb', // English (Great Britain)\n'es', // Spanish\n'es-mx', // Spanish (Mexico)\n'et', // Estonian\n'fi', // Finnish\n'fr', // French\n'hu', // Hungarian\n'it', // Italian\n'ja', // Japanese\n'ko', // Korean\n'lt', // Lithuanian\n'ms', // Malay\n'nb', // Norwegian\n'nl', // Dutch\n'pl', // Polish\n'pt', // Portuguese\n'ru', // Russian\n'sv', // Swedish\n'th', // Thai\n'uk', // Ukrainian\n'zh', // Chinese\n'zh-hant' // Chinese (Traditional)\n]; // Special options for emoticon permutations.\n\nconst EMOTICON_OPTIONS = {\n // 🧙â€â™‚ï¸ man mage\n ':{>': {\n withNose: false\n },\n // 💔 broken heart\n '</3': {\n isFace: false\n },\n // â¤ï¸ red heart\n '<3': {\n isFace: false\n },\n // 🤘 sign of the horns\n '\\\\m/': {\n isFace: false\n },\n '\\\\M/': {\n isFace: false\n },\n // 👹 ogre\n '0)': {\n withNose: false\n }\n};\n\nfunction getFetchUrl(path, version, cdnUrl) {\n let fetchUrl = `https://cdn.jsdelivr.net/npm/emojibase-data@${version}/${path}`;\n\n if (typeof cdnUrl === 'function') {\n fetchUrl = cdnUrl(path, version);\n } else if (typeof cdnUrl === 'string') {\n fetchUrl = `${cdnUrl}/${path}`;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!path || !path.endsWith('.json')) {\n throw new Error('A valid JSON dataset is required to fetch.');\n }\n\n if (!fetchUrl || !/^https?:\\/\\//.test(fetchUrl) || !fetchUrl.endsWith('.json')) {\n throw new Error('A valid CDN url is required to fetch.');\n }\n\n if (!version) {\n throw new Error('A valid release version is required.');\n }\n }\n\n return fetchUrl;\n}\n/**\n * This function will fetch `emojibase-data` JSON files from our CDN, parse them,\n * and return the response. It requires a file path relative to the `emojibase-data` package\n * as the 1st argument and an optional object of options as the 2rd argument.\n *\n * ```ts\n * import { fetchFromCDN } from 'emojibase';\n *\n * await fetchFromCDN('ja/compact.json', { version: '2.1.3' });\n * await fetchFromCDN('ja/compact.json', { cdnUrl: 'https://example.com/cdn/emojidata/latest' });\n * await fetchFromCDN('ja/compact.json', {\n * cdnUrl: (path: string, version: string) => {\n * return `https://example.com/cdn/emojidata/${version}/${path}`;\n * }\n * });\n * ```\n */\n\n\nasync function fetchFromCDN(path, options = {}) {\n const {\n local = false,\n version = 'latest',\n cdnUrl,\n ...opts\n } = options;\n const fetchUrl = getFetchUrl(path, version, cdnUrl);\n const storage = local ? localStorage : sessionStorage;\n const cacheKey = `emojibase/${version}/${path}`;\n const cachedData = storage.getItem(cacheKey); // Check the cache first\n\n if (cachedData) {\n return Promise.resolve(JSON.parse(cachedData));\n } // eslint-disable-next-line compat/compat\n\n\n const response = await fetch(fetchUrl, {\n credentials: 'omit',\n mode: 'cors',\n redirect: 'error',\n ...opts\n });\n\n if (!response.ok) {\n throw new Error('Failed to load Emojibase dataset.');\n }\n\n const data = await response.json();\n\n try {\n storage.setItem(cacheKey, JSON.stringify(data));\n } catch {// Do not allow quota errors to break the app\n }\n\n return data;\n}\n\nconst ALIASES = {\n discord: 'joypixels',\n slack: 'iamcal'\n};\n/**\n * Fetches and returns localized shortcodes for the defined preset from our CDN.\n * The response is a mapping of emoji hexcodes to shortcodes (either a string or array of strings).\n * Uses `fetchFromCDN` under the hood.\n *\n * ```ts\n * import { fetchShortcodes } from 'emojibase';\n *\n * await fetchShortcodes('ja', 'cldr', { version: '2.1.3' });\n * ```\n */\n\nasync function fetchShortcodes(locale, preset, options) {\n var _ALIASES$preset;\n\n return fetchFromCDN(`${locale}/shortcodes/${(_ALIASES$preset = ALIASES[preset]) !== null && _ALIASES$preset !== void 0 ? _ALIASES$preset : preset}.json`, options);\n}\n/**\n * Will join shortcodes from multiple shortcode datasets into a single emoji object\n * using its hexcode. Will remove duplicates in the process.\n */\n\n\nfunction joinShortcodesToEmoji(emoji, shortcodeDatasets) {\n if (shortcodeDatasets.length === 0) {\n return emoji;\n }\n\n const list = new Set(emoji.shortcodes);\n shortcodeDatasets.forEach(dataset => {\n const shortcodes = dataset[emoji.hexcode];\n\n if (Array.isArray(shortcodes)) {\n shortcodes.forEach(code => list.add(code));\n } else if (shortcodes) {\n list.add(shortcodes);\n }\n });\n emoji.shortcodes = [...list];\n\n if (emoji.skins) {\n emoji.skins.forEach(skin => {\n joinShortcodesToEmoji(skin, shortcodeDatasets);\n });\n }\n\n return emoji;\n}\n\nfunction flattenEmojiData(data, shortcodeDatasets = []) {\n const emojis = [];\n data.forEach(emoji => {\n if (emoji.skins) {\n // Dont include nested skins array\n const {\n skins,\n ...baseEmoji\n } = emoji;\n emojis.push(joinShortcodesToEmoji(baseEmoji, shortcodeDatasets)); // Push each skin modification into the root list\n\n skins.forEach(skin => {\n const skinEmoji = { ...skin\n }; // Inherit tags from parent if they exist\n\n if (baseEmoji.tags) {\n skinEmoji.tags = [...baseEmoji.tags];\n }\n\n emojis.push(joinShortcodesToEmoji(skinEmoji, shortcodeDatasets));\n });\n } else {\n emojis.push(joinShortcodesToEmoji(emoji, shortcodeDatasets));\n }\n });\n return emojis;\n}\n\nfunction joinShortcodes(emojis, shortcodeDatasets) {\n if (shortcodeDatasets.length === 0) {\n return emojis;\n }\n\n emojis.forEach(emoji => {\n joinShortcodesToEmoji(emoji, shortcodeDatasets);\n });\n return emojis;\n}\n\nasync function fetchEmojis(locale, options = {}) {\n const {\n compact = false,\n flat = false,\n shortcodes: presets = [],\n ...opts\n } = options;\n const emojis = await fetchFromCDN(`${locale}/${compact ? 'compact' : 'data'}.json`, opts);\n let shortcodes = [];\n\n if (presets.length > 0) {\n shortcodes = await Promise.all(presets.map(preset => {\n let promise;\n\n if (preset.includes('/')) {\n const [customLocale, customPreset] = preset.split('/');\n promise = fetchShortcodes(customLocale, customPreset, opts);\n } else {\n promise = fetchShortcodes(locale, preset, opts);\n } // Ignore as the primary dataset should still load\n\n\n return promise.catch(() => ({}));\n }));\n }\n\n return flat ? flattenEmojiData(emojis, shortcodes) : joinShortcodes(emojis, shortcodes);\n}\n/**\n * Fetches and returns localized messages for emoji related information like groups and sub-groups.\n * Uses `fetchFromCDN` under the hood.\n *\n * ```ts\n * import { fetchMessages } from 'emojibase';\n *\n * await fetchMessages('zh', { version: '2.1.3' });\n * ```\n */\n\n\nasync function fetchMessages(locale, options) {\n return fetchFromCDN(`${locale}/messages.json`, options);\n}\n/**\n * This function will convert an array of numerical codepoints to a literal emoji Unicode character.\n *\n * ```ts\n * import { fromCodepointToUnicode } from 'emojibase';\n *\n * fromCodepointToUnicode([128104, 8205, 128105, 8205, 128103, 8205, 128102]); // 👨â€ðŸ‘©â€ðŸ‘§â€ðŸ‘¦\n * ```\n */\n\n\nfunction fromCodepointToUnicode(codepoint) {\n return String.fromCodePoint(...codepoint);\n}\n/**\n * This function will convert a hexadecimal codepoint to an array of numerical codepoints.\n * By default, it will split the hexcode using a dash, but can be customized with the 2nd argument.\n *\n * ```ts\n * import { fromHexcodeToCodepoint } from 'emojibase';\n *\n * fromHexcodeToCodepoint('270A-1F3FC'); // [9994, 127996]\n * fromHexcodeToCodepoint('270A 1F3FC', ' '); // [9994, 127996]\n * ```\n */\n\n\nfunction fromHexcodeToCodepoint(code, joiner = '-') {\n return code.split(joiner).map(point => Number.parseInt(point, 16));\n}\n/**\n * This function will convert a literal emoji Unicode character into a dash separated\n * hexadecimal codepoint. Unless `false` is passed as the 2nd argument, zero width\n * joiner's and variation selectors are removed.\n *\n * ```ts\n * import { fromUnicodeToHexcode } from 'emojibase';\n *\n * fromUnicodeToHexcode('👨â€ðŸ‘©â€ðŸ‘§â€ðŸ‘¦'); // 1F468-1F469-1F467-1F466\n * fromUnicodeToHexcode('👨â€ðŸ‘©â€ðŸ‘§â€ðŸ‘¦', false); // 1F468-200D-1F469-200D-1F467-200D-1F466\n * ```\n */\n\n\nfunction fromUnicodeToHexcode(unicode, strip = true) {\n const hexcode = [];\n [...unicode].forEach(codepoint => {\n var _codepoint$codePointA, _codepoint$codePointA2;\n\n let hex = (_codepoint$codePointA = (_codepoint$codePointA2 = codepoint.codePointAt(0)) === null || _codepoint$codePointA2 === void 0 ? void 0 : _codepoint$codePointA2.toString(16).toUpperCase()) !== null && _codepoint$codePointA !== void 0 ? _codepoint$codePointA : '';\n\n while (hex.length < 4) {\n hex = `0${hex}`;\n }\n\n if (!strip || strip && !hex.match(SEQUENCE_REMOVAL_PATTERN)) {\n hexcode.push(hex);\n }\n });\n return hexcode.join('-');\n}\n/**\n * This function will generate multiple permutations of a base emoticon character.\n * The following permutations will occur:\n *\n * - `)` mouth will be replaced with `]` and `}`. The same applies to sad/frowning mouths.\n * - `/` mouth will be replaced with `\\`.\n * - `:` eyes will be replaced with `=`.\n * - Supports a `-` nose, by injecting between the eyes and mouth.\n * - Supports both uppercase and lowercase variants.\n *\n * ```ts\n * import { generateEmoticonPermutations } from 'emojibase';\n *\n * generateEmoticonPermutations(':)'); // =-), =-}, :-], =-], :-}, :-), =}, =], =), :}, :], :)\n * ```\n *\n * > The base emoticon must follow a set of naming guidelines to work properly.\n *\n * Furthermore, this function accepts an options object as the 2nd argument, as a means to customize\n * the output.\n *\n * - `isFace` (bool) - Toggles face permutations (mouth and eye variants). Defaults to `true`.\n * - `withNose` (bool) - Toggles nose inclusion. Defaults to `true`.\n *\n * ```ts\n * generateEmoticonPermutations(':)', { withNose: false }); // =}, =], =), :}, :], :)\n * generateEmoticonPermutations('\\\\m/', { isFace: false }); // \\m/, \\M/\n * ```\n */\n\n\nfunction generateEmoticonPermutations(emoticon, options = {}) {\n const {\n isFace = true,\n withNose = true\n } = options;\n const list = [emoticon]; // Uppercase variant\n\n if (emoticon.toUpperCase() !== emoticon) {\n list.push(...generateEmoticonPermutations(emoticon.toUpperCase(), options));\n }\n\n if (isFace) {\n // Backwards slash mouth variant\n if (emoticon.includes('/')) {\n list.push(...generateEmoticonPermutations(emoticon.replace('/', '\\\\'), options));\n } // Bracket and curly brace mouth variants\n\n\n if (emoticon.includes(')')) {\n list.push(...generateEmoticonPermutations(emoticon.replace(')', ']'), options), ...generateEmoticonPermutations(emoticon.replace(')', '}'), options));\n }\n\n if (emoticon.includes('(')) {\n list.push(...generateEmoticonPermutations(emoticon.replace('(', '['), options), ...generateEmoticonPermutations(emoticon.replace('(', '{'), options));\n } // Eye variant\n\n\n if (emoticon.includes(':')) {\n list.push(...generateEmoticonPermutations(emoticon.replace(':', '='), options));\n } // Nose variant for ALL\n\n\n if (withNose) {\n list.forEach(emo => {\n if (!emo.includes('-')) {\n list.push(`${emo.slice(0, -1)}-${emo.slice(-1)}`);\n }\n });\n }\n } // Sort from longest to shortest\n\n\n list.sort((a, b) => b.length - a.length);\n return [...new Set(list)];\n}\n\nconst STRIP_PATTERN = new RegExp(`(-| )?(${SEQUENCE_REMOVAL_PATTERN.source})`, 'g');\n/**\n * This function will strip zero width joiners (`200D`) and variation selectors\n * (`FE0E`, `FE0F`) from a hexadecimal codepoint.\n *\n * ```ts\n * import { stripHexcode } from 'emojibase';\n *\n * stripHexcode('1F468-200D-2695-FE0F'); // 1F468-2695\n * ```\n */\n\nfunction stripHexcode(hexcode) {\n return hexcode.replace(STRIP_PATTERN, '');\n}\n\nexport { DARK_SKIN, EMOJI, EMOJI_VERSIONS, EMOTICON_OPTIONS, FEMALE, FIRST_UNICODE_EMOJI_VERSION, FULLY_QUALIFIED, GROUP_KEY_ACTIVITIES, GROUP_KEY_ANIMALS_NATURE, GROUP_KEY_COMPONENT, GROUP_KEY_FLAGS, GROUP_KEY_FOOD_DRINK, GROUP_KEY_OBJECTS, GROUP_KEY_PEOPLE_BODY, GROUP_KEY_SMILEYS_EMOTION, GROUP_KEY_SYMBOLS, GROUP_KEY_TRAVEL_PLACES, LATEST_CLDR_VERSION, LATEST_EMOJI_VERSION, LATEST_UNICODE_VERSION, LIGHT_SKIN, MALE, MEDIUM_DARK_SKIN, MEDIUM_LIGHT_SKIN, MEDIUM_SKIN, MINIMALLY_QUALIFIED, SEQUENCE_REMOVAL_PATTERN, SKIN_KEY_DARK, SKIN_KEY_LIGHT, SKIN_KEY_MEDIUM, SKIN_KEY_MEDIUM_DARK, SKIN_KEY_MEDIUM_LIGHT, SUPPORTED_LOCALES, TEXT, UNICODE_VERSIONS, UNQUALIFIED, appendSkinToneIndex, fetchEmojis, fetchFromCDN, fetchMessages, fetchShortcodes, flattenEmojiData, fromCodepointToUnicode, fromHexcodeToCodepoint, fromUnicodeToHexcode, generateEmoticonPermutations, joinShortcodes, joinShortcodesToEmoji, stripHexcode };\n//# sourceMappingURL=index.js.map\n","import { EmojiRecord, PickerOptions } from './types';\n\nexport function getEmojiForEvent(event: Event, emojis: EmojiRecord[]): EmojiRecord | null {\n const target = event.target as HTMLElement;\n const emojiElement = target.closest('[data-emoji]') as HTMLElement;\n if (emojiElement) {\n const emoji = emojis.find(e => e.emoji === emojiElement.dataset.emoji);\n if (emoji) {\n return emoji;\n }\n }\n\n return null;\n}\n\nexport function shouldAnimate(options: PickerOptions) {\n const matcher = window.matchMedia?.('(prefers-reduced-motion: reduce)');\n return options.animate && !matcher?.matches;\n}\n\nexport function caseInsensitiveIncludes(str: string, search: string) {\n return str.toLowerCase().includes(search.toLowerCase());\n}\n\n/**\n * Creates a throttled version of a function.\n * \n * @param fn The function to throttle\n * @param wait The wait time in milliseconds\n * @returns a throttled version of fn\n */\nexport function throttle(fn: () => void, wait: number) {\n let timeout: number | null = null;\n\n return () => {\n if (timeout) {\n return;\n }\n\n timeout = window.setTimeout(() => {\n fn();\n timeout = null;\n }, wait);\n };\n}\n\n/**\n * Creates a debounced version of a function.\n *\n * @param fn the function to debounce\n * @param wait the wait time in milliseconds\n * @returns a debounced version of fn\n */\nexport function debounce(fn: (...args: any[]) => any, wait: number) {\n let timeout: number | null = null;\n\n return (...args: any[]): any => {\n if (timeout) {\n window.clearTimeout(timeout);\n }\n\n timeout = window.setTimeout(() => {\n fn(...args);\n timeout = null;\n }, wait);\n };\n}\n\nexport function animate(element: HTMLElement, keyframes: Keyframe[] | PropertyIndexedKeyframes, options: KeyframeAnimationOptions, pickerOptions: PickerOptions): Promise<Animation | void> {\n if (shouldAnimate(pickerOptions) && element.animate) {\n return element.animate(keyframes, options).finished;\n }\n\n // If animation isn't enabled or supported, find the final style state and\n // apply it directly.\n const propertyIndex = options.direction === 'normal' ? 1 : 0;\n const finalState = Object.entries(keyframes).reduce((result, [key, values]) => {\n return {\n ...result,\n [key]: values[propertyIndex]\n }\n }, {});\n Object.assign(element.style, finalState);\n return Promise.resolve();\n}\n\n/**\n * Takes a rendered HTML string and renders a DOM node from it.\n *\n * @param html the HTML text\n * @returns the generated HTMLElement\n */\n export function toElement<E extends Element = HTMLElement>(html: string): E {\n const template = document.createElement('template');\n template.innerHTML = html;\n\n return template.content?.firstElementChild as E;\n}\n\nexport async function computeHash(obj: any) {\n const arr = new TextEncoder().encode(obj);\n const hashBuffer = await crypto.subtle.digest('SHA-256', arr);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n}\n\nexport function getPrefixedClasses(...classNames) {\n return classNames.reduce((result, className) => ({\n ...result,\n [className]: prefixClassName(className)\n }), {});\n}\n\nexport function prefixClassName(className) {\n return `picmo__${className}`;\n}\n\nexport function empty(element: Element): Element {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n\n return element;\n}\n\nexport function replaceChildren(parent: Element, ...children: Element[]) {\n empty(parent).append(...children);\n}\n\nfunction isStorageAvailable(key) {\n try {\n window[key].length;\n return true;\n } catch (error) {\n return false;\n }\n}\n\nexport function isSessionStorageAvailable() {\n return isStorageAvailable('sessionStorage');\n}\n\nexport function isLocalStorageAvailable() {\n return isStorageAvailable('localStorage');\n}\n","import { Emoji, GroupMessage, Locale } from 'emojibase';\nimport { PickerOptions, EmojiRecord, Category } from '../types';\nimport { caseInsensitiveIncludes } from '../util';\n\nexport type PopulateOptions = {\n groups: GroupMessage[];\n emojis: Emoji[];\n emojisEtag?: string | null;\n messagesEtag?: string | null;\n hash?: string | null;\n}\n\ntype SearchableEmoji = {\n label: string;\n tags?: string[];\n}\n\nexport type Meta = {\n emojisEtag?: string;\n messagesEtag?: string;\n hash?: string;\n}\n\nexport type DataStoreFactory = { \n (locale: Locale): DataStore; \n deleteDatabase(locale: Locale): void;\n}\n\n/**\n * Transforms an Emoji from emojibase into an EmojiRecord.\n * \n * @param emoji the Emoji from the database\n * @returns the equivalent EmojiRecord\n */\n export function getEmojiRecord(emoji: Emoji): EmojiRecord {\n return {\n emoji: emoji.emoji,\n label: emoji.label,\n tags: emoji.tags,\n skins: emoji.skins?.map(skin => getEmojiRecord(skin)),\n order: emoji.order,\n custom: false,\n hexcode: emoji.hexcode,\n version: emoji.version\n };\n}\n\n /**\n * Given an emoji, determine if the query matches.\n * \n * The emoji matches if the text query matches the name or one of its tags, and if it is in the array of\n * categories (if given).\n * \n * @param emoji The emoji to check\n * @param query The text query\n * @param categories The categories to check\n * @returns a boolean indicating whether or not the emoji matches the query\n */\n export function queryMatches(emoji: SearchableEmoji, query: string, categories?: Category[]) {\n if (categories && !categories.some(category => category.order === (emoji as Emoji).group)) {\n return false;\n }\n\n return (\n caseInsensitiveIncludes(emoji.label, query) ||\n emoji.tags?.some(tag => caseInsensitiveIncludes(tag, query))\n );\n }\n\nexport abstract class DataStore {\n locale: Locale;\n\n constructor(locale: Locale = 'en') {\n this.locale = locale;\n }\n\n abstract open(): Promise<void>;\n abstract delete(): Promise<void>;\n abstract close(): void;\n abstract getEmojiCount(): Promise<number>;\n abstract getEtags(): Promise<Record<string, string | undefined>>;\n abstract setMeta(meta): void;\n abstract getHash(): Promise<string>;\n abstract isPopulated(): Promise<boolean>;\n abstract populate(options: PopulateOptions): Promise<void>;\n abstract getCategories(options: PickerOptions): Promise<Category[]>;\n abstract getEmojis(category: Category, emojiVersion: number): Promise<EmojiRecord[]>;\n abstract searchEmojis(query: string, customEmojis: EmojiRecord[], emojiVersion: number, categories: Category[]): Promise<EmojiRecord[]>;\n}\n","import { EmojiRecord } from './types';\nexport type EmojiProcessingRule = (emoji: EmojiRecord, version: number) => EmojiRecord | null;\n\nexport const rules: EmojiProcessingRule[] = [\n\n // Prior to Emoji 14, the handshake emoji's skin tone variants was not standardized\n // and will not render correctly as a native emoji. \n (emoji: EmojiRecord, emojiVersion: number) => {\n if (emoji.hexcode === '1F91D' && emojiVersion < 14) {\n emoji.skins = [];\n }\n\n return emoji;\n },\n\n // Filter out variants that are not supported by the current version of the emoji.\n // If a variant doesn't specify a version, it will be included. Only variants that\n // specify a version that is greater than the current version will be filtered out.\n (emoji: EmojiRecord, emojiVersion: number) => {\n if (emoji.skins) {\n emoji.skins = emoji.skins.filter((skin: EmojiRecord) => !skin.version || skin.version <= emojiVersion);\n }\n\n return emoji;\n }\n];\n\nexport function applyRulesToEmoji(emoji: EmojiRecord, emojiVersion: number) {\n if (rules.some(rule => rule(emoji, emojiVersion) === null)) {\n return null;\n }\n\n return emoji;\n}\n\nexport function applyRules(emojis: EmojiRecord[], emojiVersion: number): EmojiRecord[] {\n return emojis.filter(emoji => applyRulesToEmoji(emoji, emojiVersion) !== null);\n}\n","import { Locale, Emoji, GroupMessage } from 'emojibase';\nimport { Meta, getEmojiRecord, PopulateOptions, DataStore, queryMatches } from './DataStore';\nimport { PickerOptions, EmojiRecord, Category, CategoryKey } from '../types';\n\nimport { applyRules } from '../rules';\n\nconst instances = {} as Record<Locale, InMemoryStore>;\n\nexport function InMemoryStoreFactory(locale: Locale): DataStore {\n if (!instances[locale]) {\n instances[locale] = new InMemoryStore(locale);\n }\n return instances[locale];\n}\n\nInMemoryStoreFactory.deleteDatabase = (locale: Locale) => {\n // Not implemented for in memory datastore\n};\n\nexport class InMemoryStore extends DataStore {\n private categories: GroupMessage[];\n private emojis: Emoji[];\n private meta: Meta;\n\n open(): Promise<void> {\n return Promise.resolve();\n }\n\n delete(): Promise<void> {\n return Promise.resolve();\n }\n\n close(): void {\n // Not implemented for in memory datastore\n }\n\n isPopulated(): Promise<boolean> {\n return Promise.resolve(false);\n }\n\n getEmojiCount(): Promise<number> {\n return Promise.resolve(this.emojis.length);\n }\n\n getEtags(): Promise<Record<string, string | undefined>> {\n // Not implemented for in memory datastore\n return Promise.resolve({ foo: 'bar'});\n }\n\n getHash(): Promise<string> {\n // Not implemented for in memory datastore\n return Promise.resolve('');\n }\n\n populate(options: PopulateOptions) {\n this.categories = options.groups;\n this.emojis = options.emojis;\n return Promise.resolve();\n }\n\n getCategories(options: PickerOptions): Promise<Category[]> {\n let categories: Category[] = this.categories.filter(category => category.key !== 'component') as Category[];\n\n if (options.showRecents) {\n categories.unshift({ key: 'recents', order: -1 });\n }\n\n if (options.custom?.length) {\n categories.push({ key: 'custom', order: 10 });\n }\n\n if (options.categories) {\n const includeList = options.categories as CategoryKey[];\n categories = categories.filter(category => includeList.includes(category.key));\n categories.sort((a: Category, b: Category) => includeList.indexOf(a.key) - includeList.indexOf(b.key));\n } else {\n categories.sort((a: Category, b: Category) => a.order - b.order);\n }\n\n return Promise.resolve(categories);\n }\n\n getEmojis(category: Category, emojiVersion: number): Promise<EmojiRecord[]> {\n const emojiResults = this.emojis\n .filter(emoji => emoji.group === category.order)\n .filter((e: Emoji) => e.version <= emojiVersion)\n .sort((a: Emoji, b: Emoji) => {\n if (a.order != null && b.order != null) {\n return a.order - b.order;\n }\n\n return 0;\n }).map(getEmojiRecord);\n\n return Promise.resolve(applyRules(emojiResults, emojiVersion));\n }\n\n searchEmojis(query: string, customEmojis: EmojiRecord[], emojiVersion: number, categories: Category[]): Promise<EmojiRecord[]> {\n const matchingEmojis = this.emojis\n .filter(emoji => queryMatches(emoji, query, categories) && emoji.version <= emojiVersion)\n .map(getEmojiRecord);\n\n const matchingCustom = customEmojis.filter(emoji => queryMatches(emoji, query, categories));\n\n const results = [\n ...applyRules(matchingEmojis, emojiVersion),\n ...matchingCustom\n ];\n\n return Promise.resolve(results);\n }\n\n setMeta(meta: Meta) {\n this.meta = meta;\n }\n}","import { Locale, MessagesDataset, fetchMessages, fetchEmojis, Emoji } from 'emojibase';\n// import { Database } from './db';\nimport { DataStoreFactory, DataStore } from './DataStore';\nimport { computeHash, isSessionStorageAvailable } from '../util';\nimport { createStorage } from '../webStorageShim';\nimport { InMemoryStoreFactory } from './InMemoryStore';\n\n/**\n * Generates the URLs for emoji data for a given emojibase version and locale.\n * \n * @param version the emojibase version (usually 'latest' is what you want)\n * @param locale the locale for the data\n * @returns an object containing the two URLs\n */\nfunction getCdnUrls(version, locale) {\n const base = `https://cdn.jsdelivr.net/npm/emojibase-data@${version}/${locale}`;\n\n return {\n emojisUrl: `${base}/data.json`,\n messagesUrl: `${base}/messages.json`,\n };\n}\n\n/**\n * Gets the ETag for the given URL by making a HEAD request.\n * \n * @param url the URL to check\n * @returns the ETag value, or null if no ETag was found\n */\nasync function getEtag(url: string): Promise<string | null> {\n try {\n const response = await fetch(url, { method: 'HEAD' });\n return response.headers.get('etag');\n } catch (error) {\n return null;\n }\n}\n\n/**\n * Gets the ETags for the emoji and message data.\n * \n * @param emojisUrl the URL of the emoji data\n * @param messagesUrl the URL of the message data\n * @returns a Promise that resolves to an array of the ETag values\n */\nfunction getEtags(locale): Promise<Array<string | null>> {\n const { emojisUrl, messagesUrl } = getCdnUrls('latest', locale);\n\n try {\n return Promise.all([\n getEtag(emojisUrl),\n getEtag(messagesUrl),\n ]);\n } catch (error) {\n return Promise.all([null, null]);\n }\n}\n\n/**\n * Checks if the category or emoji data is out of date.\n * \n * This is determined by checking the ETag of the data from the CDN, and downloading the latest if the\n * ETags don't match.\n * \n * @param db the database\n * @param emojisEtag the ETag of the emojis data\n * @param messagesEtag the ETag of the messages data\n */\nasync function checkUpdates(db: DataStore, emojisEtag: string, messagesEtag: string) {\n let etags;\n\n try {\n etags = await db.getEtags();\n } catch (error) {\n etags = {};\n }\n\n const { storedEmojisEtag, storedMessagesEtag } = etags;\n\n // If either ETag does not match, repopulate the database with the latest CDN data\n if (messagesEtag !== storedMessagesEtag || emojisEtag !== storedEmojisEtag) {\n const [messages, emojis] = await Promise.all([fetchMessages(db.locale), fetchEmojis(db.locale)]);\n await db.populate({\n groups: messages.groups, \n emojis,\n emojisEtag,\n messagesEtag\n });\n }\n}\n\n/**\n * Checks for a new version of local emoji data. This is done by comparing the stored hash with the \n * newly computed one.\n * \n * @param db The database\n * @param hash The hash of the local emoji data\n * @returns true if there is a hash mismatch and a database update is required\n */\nasync function checkLocalUpdates(db: DataStore, hash: string) {\n const storedHash = await db.getHash();\n return hash !== storedHash;\n}\n\n/**\n * Opens the database.\n * \n * @param locale the database locale\n * @param existingDb any existing database to use\n * @returns Promise that resolves to the database instance\n */\nasync function openDatabase(locale: Locale, factory: DataStoreFactory, existingDb?: DataStore): Promise<DataStore> {\n let db = existingDb || factory(locale);\n try {\n await db.open();\n } catch (error) {\n console.warn('[picmo] IndexedDB not available, falling back to InMemoryStoreFactory');\n db = InMemoryStoreFactory(locale);\n }\n\n return db;\n}\n\n/**\n * Initializes an emoji database with data from the CDN.\n * \n * @param locale the locale for the database\n * @param existingDb any existing database to repopulate\n * @returns a Promise that resolves to a fully populated database instance\n */\nasync function initDatabaseFromCdn(locale: Locale, factory: DataStoreFactory, existingDb?: DataStore) {\n if (!isSessionStorageAvailable() && typeof window !== 'undefined') {\n throw new Error('Session storage is required to use CDN emoji data.');\n }\n\n const db = await openDatabase(locale, factory, existingDb);\n const [emojisEtag, messagesEtag] = await getEtags(locale);\n\n if (!(await db.isPopulated())) {\n const [messages, emojis] = await Promise.all([fetchMessages(locale), fetchEmojis(locale)]);\n await db.populate({ groups: messages.groups, emojis, emojisEtag, messagesEtag });\n } else if (emojisEtag && messagesEtag) {\n await checkUpdates(db, emojisEtag, messagesEtag);\n }\n\n return db;\n}\n\n/**\n * Initializes an emoji database with local data from the emojibase-data package.\n * \n * @param locale the locale\n * @param messages the messages dataset\n * @param emojis the emoji dataset\n * @param existingDb any existing database to repopulate\n * @returns a Promise that resolves to a fully populated database instance\n */\nasync function initDatabaseWithLocalData(locale: Locale, factory: DataStoreFactory, messages: MessagesDataset, emojis: Emoji[], existingDb?: DataStore) {\n const db = await openDatabase(locale, factory, existingDb);\n\n const hash = await computeHash(emojis);\n if (!(await db.isPopulated()) || await checkLocalUpdates(db, hash)) {\n await db.populate({ groups: messages.groups, emojis, hash });\n }\n\n return db;\n}\n\n/**\n * Public API for initializing a database.\n * \n * @param locale the locale\n * @param staticMessages local messages dataset, if any\n * @param staticEmojis local emoji dataset, if any\n * @param existingDb any existing database to repopulate\n * @returns a Promise that resolves to the database instance\n */\nexport async function initDatabase(locale: Locale, factory: DataStoreFactory, staticMessages?: MessagesDataset, staticEmojis?: Emoji[], existingDb?: DataStore) {\n if (staticMessages && staticEmojis) {\n return initDatabaseWithLocalData(locale, factory, staticMessages, staticEmojis, existingDb);\n } else {\n return initDatabaseFromCdn(locale, factory, existingDb);\n }\n}\n\n/**\n * Deletes a database instance for a locale.\n * @param locale the locale to delete\n */\nexport function deleteDatabase(factory: DataStoreFactory, locale: Locale) {\n factory.deleteDatabase(locale);\n}\n","export class FocusTrap {\n private rootElement: HTMLElement;\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n activate(rootElement: HTMLElement) {\n this.rootElement = rootElement;\n this.rootElement.addEventListener('keydown', this.handleKeyDown);\n }\n\n deactivate() {\n this.rootElement?.removeEventListener('keydown', this.handleKeyDown);\n }\n\n get focusableElements(): NodeListOf<HTMLElement> {\n return this.rootElement.querySelectorAll<HTMLElement>('input, [tabindex=\"0\"]');\n }\n\n get lastFocusableElement(): HTMLElement {\n return this.focusableElements[this.focusableElements.length - 1];\n }\n\n get firstFocusableElement(): HTMLElement {\n return this.focusableElements[0];\n }\n\n checkFocus(event: KeyboardEvent, referenceElement: HTMLElement, targetElement: HTMLElement) {\n if (event.target === referenceElement) {\n targetElement.focus();\n event.preventDefault();\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n this.checkFocus(\n event,\n event.shiftKey ? this.firstFocusableElement : this.lastFocusableElement,\n event.shiftKey ? this.lastFocusableElement : this.firstFocusableElement\n );\n }\n }\n}","import { getPrefixedClasses } from './util';\n\nconst {\n light: lightTheme,\n dark: darkTheme,\n auto: autoTheme\n} = getPrefixedClasses('light', 'dark', 'auto');\n\nexport { lightTheme, darkTheme, autoTheme };\n","import { Template, TemplateData } from '../Template';\nimport { AppEvent, AppEventKey } from '../AppEvents';\nimport { Events, EventArgs, EventCallback, AsyncEventCallback } from '../events';\nimport { ViewFactory } from '../viewFactory';\nimport { Bundle } from '../i18n/bundle';\nimport { Renderer } from '../renderers/renderer';\nimport { DataStore } from '../data/DataStore';\nimport { EmojiRecord, PickerOptions } from '../types';\nimport { shouldAnimate } from '../util';\n\ntype UIEventListenerBinding = {\n target?: string;\n event: string;\n handler: EventCallback;\n options?: AddEventListenerOptions;\n};\n\ntype KeyBindings = Record<string, (KeyboardEvent?) => void>;\n\ntype AppEvents = {\n [key in AppEvent]?: EventCallback | AsyncEventCallback;\n};\n\ntype ClassMappings = Record<string, string>;\ntype UIElementSelectors = Record<string, string>;\ntype UIElementMappings = Record<string, HTMLElement>;\n\ntype ViewOptions = {\n template: Template;\n classes?: ClassMappings;\n parent?: HTMLElement;\n};\nexport abstract class View {\n el: HTMLElement;\n isDestroyed = false;\n\n private template: Template;\n private classes?: ClassMappings;\n\n protected appEvents: AppEvents = {};\n protected uiEvents: UIEventListenerBinding[] = [];\n protected keyBindings: KeyBindings;\n protected uiElements: UIElementSelectors = {};\n protected emojiData: DataStore;\n protected emojiDataPromise: Promise<DataStore>;\n protected options: PickerOptions;\n protected customEmojis: EmojiRecord[];\n\n protected events: Events<AppEvent>;\n protected i18n: Bundle;\n protected renderer: Renderer;\n protected pickerId: string;\n\n protected parent?: HTMLElement;\n\n viewFactory: ViewFactory;\n\n ui: UIElementMappings = {};\n\n constructor({ template, classes, parent }: ViewOptions) {\n this.template = template;\n this.classes = classes;\n this.parent = parent;\n\n this.keyBindingHandler = this.keyBindingHandler.bind(this);\n }\n\n initialize() {\n this.bindAppEvents();\n }\n\n setCustomEmojis(customEmojis: EmojiRecord[]) {\n this.customEmojis = customEmojis;\n }\n\n setEvents(events: Events<AppEvent>) {\n this.events = events;\n }\n\n setPickerId(pickerId: string) {\n this.pickerId = pickerId;\n }\n\n emit(event: AppEventKey, ...args: EventArgs) {\n this.events.emit(event, ...args);\n }\n\n setI18n(i18n: Bundle) {\n this.i18n = i18n;\n }\n\n setRenderer(renderer: Renderer) {\n this.renderer = renderer;\n }\n\n setEmojiData(emojiDataPromise: Promise<DataStore>) {\n this.emojiDataPromise = emojiDataPromise;\n emojiDataPromise.then(emojiData => {\n this.emojiData = emojiData;\n });\n }\n\n updateEmojiData(emojiData: DataStore) {\n this.emojiData = emojiData;\n this.emojiDataPromise = Promise.resolve(emojiData);\n }\n\n setOptions(options: PickerOptions) {\n this.options = options;\n }\n\n animateShow?: () => Promise<Animation | void | Animation[] | (Animation | void)[] >;\n\n renderSync(templateData: TemplateData = {}): HTMLElement {\n this.el = this.template.renderSync({\n classes: this.classes,\n i18n: this.i18n,\n pickerId: this.pickerId,\n ...templateData\n }) as HTMLElement;\n\n this.postRender();\n return this.el;\n }\n\n async render(templateData: TemplateData = {}): Promise<HTMLElement> {\n await this.emojiDataPromise;\n\n this.el = await this.template.renderAsync({\n classes: this.classes,\n i18n: this.i18n,\n pickerId: this.pickerId,\n ...templateData\n });\n this.postRender();\n return this.el;\n }\n\n private postRender() {\n this.bindUIElements();\n this.bindKeyBindings();\n this.bindUIEvents();\n this.scheduleShowAnimation();\n }\n\n private bindAppEvents() {\n Object.keys(this.appEvents).forEach(event => {\n this.events.on(event as AppEventKey, this.appEvents[event], this);\n });\n\n this.events.on('data:ready', this.updateEmojiData, this);\n }\n\n private unbindAppEvents() {\n Object.keys(this.appEvents).forEach(event => {\n this.events.off(event as AppEventKey, this.appEvents[event]);\n });\n\n this.events.off('data:ready', this.updateEmojiData);\n }\n\n private keyBindingHandler(event: KeyboardEvent) {\n const handler = this.keyBindings[event.key];\n if (handler) {\n handler.call(this, event);\n }\n }\n\n private bindKeyBindings() {\n if (this.keyBindings) {\n this.el.addEventListener('keydown', this.keyBindingHandler);\n }\n }\n\n private unbindKeyBindings() {\n if (this.keyBindings) {\n this.el.removeEventListener('keydown', this.keyBindingHandler);\n }\n }\n\n private bindUIElements() {\n this.ui = Object.keys(this.uiElements).reduce((result, key) => ({\n ...result,\n [key]: this.el.querySelector<HTMLElement>(this.uiElements[key])\n }), {});\n }\n\n private bindUIEvents() {\n this.uiEvents.forEach((binding: UIEventListenerBinding) => {\n binding.handler = binding.handler.bind(this);\n\n const target = binding.target ? this.ui[binding.target] : this.el;\n target.addEventListener(binding.event, binding.handler, binding.options);\n });\n }\n\n private unbindUIEvents() {\n this.uiEvents.forEach((binding: UIEventListenerBinding) => {\n const target = binding.target ? this.ui[binding.target] : this.el;\n target.removeEventListener(binding.event, binding.handler);\n });\n }\n\n destroy() {\n this.unbindAppEvents();\n this.unbindUIEvents();\n this.unbindKeyBindings();\n\n this.el.remove();\n this.isDestroyed = true;\n }\n\n private scheduleShowAnimation() {\n if (this.parent) {\n const observer = new MutationObserver(list => {\n const [record] = list;\n if (record.type === 'childList' && record.addedNodes[0] === this.el) {\n if (shouldAnimate(this.options) && this.animateShow) {\n this.animateShow();\n }\n observer.disconnect\n }\n });\n\n observer.observe(this.parent as Node, { childList: true });\n }\n }\n\n static childEvent(target: string, event: string, handler: EventCallback, options: AddEventListenerOptions = {}): UIEventListenerBinding {\n return { target, event, handler, options };\n }\n\n static uiEvent(event: string, handler: EventCallback, options: AddEventListenerOptions = {}): UIEventListenerBinding {\n return { event, handler, options };\n }\n\n static byClass(className: string): string {\n return `.${className}`;\n }\n}\n","import { prefixClassName, toElement } from '../util';\nimport { CategoryKey } from '../types';\n\nimport clock from './clock-solid.svg?raw';\nimport flag from './flag-solid.svg?raw';\nimport frown from './face-frown-open-solid.svg?raw';\nimport gamepad from './gamepad-solid.svg?raw';\nimport lightbulb from './lightbulb-solid.svg?raw';\nimport mug from './mug-saucer-solid.svg?raw';\nimport plane from './plane-solid.svg?raw';\nimport robot from './robot-solid.svg?raw';\nimport sad from './face-sad-tear-solid.svg?raw';\nimport search from './magnifying-glass-solid.svg?raw';\nimport smiley from './face-grin-solid.svg?raw';\nimport symbols from './icons-solid.svg?raw';\nimport tree from './tree-solid.svg?raw';\nimport users from './user-group-solid.svg?raw';\nimport warning from './triangle-exclamation-solid.svg?raw';\nimport xmark from './xmark-solid.svg?raw';\n\nfunction createIcon(iconName: string, svg: string): SVGElement {\n const el = toElement<SVGSVGElement>(svg);\n el.dataset.icon = iconName;\n el.classList.add(prefixClassName('icon'));\n return el;\n}\n\nexport type IconSize = 'small' | 'medium' | 'large' | '2x' | '3x' | '4x' | '5x';\n\nconst icons = {\n clock, \n flag,\n frown,\n gamepad, \n lightbulb, \n mug, \n plane, \n robot, \n sad,\n search,\n smiley, \n symbols, \n tree,\n users, \n warning, \n xmark,\n};\n\nexport { icons };\n\nexport const categoryIcons: Record<CategoryKey, string> = {\n 'recents': 'clock',\n 'smileys-emotion': 'smiley',\n 'people-body': 'users',\n 'animals-nature': 'tree',\n 'food-drink': 'mug',\n 'activities': 'gamepad',\n 'travel-places': 'plane',\n 'objects': 'lightbulb',\n 'symbols': 'symbols',\n 'flags': 'flag',\n 'custom': 'robot'\n};\n\nexport function icon(name: string, size?: IconSize): Element {\n if (!(name in icons)) {\n console.warn(`Unknown icon: \"${name}\"`);\n return document.createElement('div');\n }\n\n const icon = createIcon(name, icons[name]);\n if (size) {\n icon.classList.add(prefixClassName(`icon-${size}`));\n }\n\n return icon;\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512zM232 256C232 264 236 271.5 242.7 275.1L338.7 339.1C349.7 347.3 364.6 344.3 371.1 333.3C379.3 322.3 376.3 307.4 365.3 300L280 243.2V120C280 106.7 269.3 96 255.1 96C242.7 96 231.1 106.7 231.1 120L232 256z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M64 496C64 504.8 56.75 512 48 512h-32C7.25 512 0 504.8 0 496V32c0-17.75 14.25-32 32-32s32 14.25 32 32V496zM476.3 0c-6.365 0-13.01 1.35-19.34 4.233c-45.69 20.86-79.56 27.94-107.8 27.94c-59.96 0-94.81-31.86-163.9-31.87C160.9 .3055 131.6 4.867 96 15.75v350.5c32-9.984 59.87-14.1 84.85-14.1c73.63 0 124.9 31.78 198.6 31.78c31.91 0 68.02-5.971 111.1-23.09C504.1 355.9 512 344.4 512 332.1V30.73C512 11.1 495.3 0 476.3 0z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240zM336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176zM259.9 369.4C288.8 369.4 316.2 375.2 340.6 385.5C352.9 390.7 366.7 381.3 361.4 369.1C344.8 330.9 305.6 303.1 259.9 303.1C214.3 303.1 175.1 330.8 158.4 369.1C153.1 381.3 166.1 390.6 179.3 385.4C203.7 375.1 231 369.4 259.9 369.4L259.9 369.4z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M448 64H192C85.96 64 0 149.1 0 256s85.96 192 192 192h256c106 0 192-85.96 192-192S554 64 448 64zM247.1 280h-32v32c0 13.2-10.78 24-23.98 24c-13.2 0-24.02-10.8-24.02-24v-32L136 279.1C122.8 279.1 111.1 269.2 111.1 256c0-13.2 10.85-24.01 24.05-24.01L167.1 232v-32c0-13.2 10.82-24 24.02-24c13.2 0 23.98 10.8 23.98 24v32h32c13.2 0 24.02 10.8 24.02 24C271.1 269.2 261.2 280 247.1 280zM431.1 344c-22.12 0-39.1-17.87-39.1-39.1s17.87-40 39.1-40s39.1 17.88 39.1 40S454.1 344 431.1 344zM495.1 248c-22.12 0-39.1-17.87-39.1-39.1s17.87-40 39.1-40c22.12 0 39.1 17.88 39.1 40S518.1 248 495.1 248z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 384 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M512 32H120c-13.25 0-24 10.75-24 24L96.01 288c0 53 43 96 96 96h192C437 384 480 341 480 288h32c70.63 0 128-57.38 128-128S582.6 32 512 32zM512 224h-32V96h32c35.25 0 64 28.75 64 64S547.3 224 512 224zM560 416h-544C7.164 416 0 423.2 0 432C0 458.5 21.49 480 48 480h480c26.51 0 48-21.49 48-48C576 423.2 568.8 416 560 416z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 576 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M482.3 192C516.5 192 576 221 576 256C576 292 516.5 320 482.3 320H365.7L265.2 495.9C259.5 505.8 248.9 512 237.4 512H181.2C170.6 512 162.9 501.8 165.8 491.6L214.9 320H112L68.8 377.6C65.78 381.6 61.04 384 56 384H14.03C6.284 384 0 377.7 0 369.1C0 368.7 .1818 367.4 .5398 366.1L32 256L.5398 145.9C.1818 144.6 0 143.3 0 142C0 134.3 6.284 128 14.03 128H56C61.04 128 65.78 130.4 68.8 134.4L112 192H214.9L165.8 20.4C162.9 10.17 170.6 0 181.2 0H237.4C248.9 0 259.5 6.153 265.2 16.12L365.7 192H482.3z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M9.375 233.4C3.375 239.4 0 247.5 0 256v128c0 8.5 3.375 16.62 9.375 22.62S23.5 416 32 416h32V224H32C23.5 224 15.38 227.4 9.375 233.4zM464 96H352V32c0-17.62-14.38-32-32-32S288 14.38 288 32v64H176C131.8 96 96 131.8 96 176V448c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V176C544 131.8 508.3 96 464 96zM256 416H192v-32h64V416zM224 296C201.9 296 184 278.1 184 256S201.9 216 224 216S264 233.9 264 256S246.1 296 224 296zM352 416H288v-32h64V416zM448 416h-64v-32h64V416zM416 296c-22.12 0-40-17.88-40-40S393.9 216 416 216S456 233.9 456 256S438.1 296 416 296zM630.6 233.4C624.6 227.4 616.5 224 608 224h-32v192h32c8.5 0 16.62-3.375 22.62-9.375S640 392.5 640 384V256C640 247.5 636.6 239.4 630.6 233.4z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\">\\n <defs>\\n <radialGradient gradientUnits=\\\"userSpaceOnUse\\\" cy=\\\"10%\\\" id=\\\"gradient-0\\\">\\n <stop offset=\\\"0\\\" stop-color=\\\"hsl(50, 100%, 50%)\\\" />\\n <stop offset=\\\"1\\\" stop-color=\\\"hsl(50, 100%, 60%)\\\" />\\n </radialGradient>\\n </defs>\\n <!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->\\n <ellipse stroke=\\\"#000\\\" fill=\\\"rgba(0, 0, 0, 0.6)\\\" cx=\\\"172.586\\\" cy=\\\"207.006\\\" rx=\\\"39.974\\\" ry=\\\"39.974\\\"/>\\n <ellipse stroke=\\\"#000\\\" fill=\\\"rgba(0, 0, 0, 0.6)\\\" cx=\\\"334.523\\\" cy=\\\"207.481\\\" rx=\\\"39.974\\\" ry=\\\"39.974\\\"/>\\n <ellipse stroke=\\\"#000\\\" fill=\\\"rgba(0, 0, 0, 0.6)\\\" cx=\\\"313.325\\\" cy=\\\"356.208\\\" rx=\\\"91.497\\\" ry=\\\"59.893\\\"/>\\n <path fill=\\\"#55a7ff\\\" d=\\\"M 159.427 274.06 L 102.158 363.286 L 124.366 417.011 L 160.476 423.338 L 196.937 414.736 L 218.502 375.214\\\"></path>\\n <path fill=\\\"url(#gradient-0)\\\" d=\\\"M256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM256 352C290.9 352 323.2 367.8 348.3 394.9C354.3 401.4 364.4 401.7 370.9 395.7C377.4 389.7 377.7 379.6 371.7 373.1C341.6 340.5 301 320 256 320C247.2 320 240 327.2 240 336C240 344.8 247.2 352 256 352H256zM208 369C208 349 179.6 308.6 166.4 291.3C163.2 286.9 156.8 286.9 153.6 291.3C140.6 308.6 112 349 112 369C112 395 133.5 416 160 416C186.5 416 208 395 208 369H208zM303.6 208C303.6 225.7 317.1 240 335.6 240C353.3 240 367.6 225.7 367.6 208C367.6 190.3 353.3 176 335.6 176C317.1 176 303.6 190.3 303.6 208zM207.6 208C207.6 190.3 193.3 176 175.6 176C157.1 176 143.6 190.3 143.6 208C143.6 225.7 157.1 240 175.6 240C193.3 240 207.6 225.7 207.6 208z\\\" />\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M500.3 7.251C507.7 13.33 512 22.41 512 31.1V175.1C512 202.5 483.3 223.1 447.1 223.1C412.7 223.1 383.1 202.5 383.1 175.1C383.1 149.5 412.7 127.1 447.1 127.1V71.03L351.1 90.23V207.1C351.1 234.5 323.3 255.1 287.1 255.1C252.7 255.1 223.1 234.5 223.1 207.1C223.1 181.5 252.7 159.1 287.1 159.1V63.1C287.1 48.74 298.8 35.61 313.7 32.62L473.7 .6198C483.1-1.261 492.9 1.173 500.3 7.251H500.3zM74.66 303.1L86.5 286.2C92.43 277.3 102.4 271.1 113.1 271.1H174.9C185.6 271.1 195.6 277.3 201.5 286.2L213.3 303.1H239.1C266.5 303.1 287.1 325.5 287.1 351.1V463.1C287.1 490.5 266.5 511.1 239.1 511.1H47.1C21.49 511.1-.0019 490.5-.0019 463.1V351.1C-.0019 325.5 21.49 303.1 47.1 303.1H74.66zM143.1 359.1C117.5 359.1 95.1 381.5 95.1 407.1C95.1 434.5 117.5 455.1 143.1 455.1C170.5 455.1 191.1 434.5 191.1 407.1C191.1 381.5 170.5 359.1 143.1 359.1zM440.3 367.1H496C502.7 367.1 508.6 372.1 510.1 378.4C513.3 384.6 511.6 391.7 506.5 396L378.5 508C372.9 512.1 364.6 513.3 358.6 508.9C352.6 504.6 350.3 496.6 353.3 489.7L391.7 399.1H336C329.3 399.1 323.4 395.9 321 389.6C318.7 383.4 320.4 376.3 325.5 371.1L453.5 259.1C459.1 255 467.4 254.7 473.4 259.1C479.4 263.4 481.6 271.4 478.7 278.3L440.3 367.1zM116.7 219.1L19.85 119.2C-8.112 90.26-6.614 42.31 24.85 15.34C51.82-8.137 93.26-3.642 118.2 21.83L128.2 32.32L137.7 21.83C162.7-3.642 203.6-8.137 231.6 15.34C262.6 42.31 264.1 90.26 236.1 119.2L139.7 219.1C133.2 225.6 122.7 225.6 116.7 219.1H116.7z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M413.8 447.1L256 448l0 31.99C256 497.7 241.8 512 224.1 512c-17.67 0-32.1-14.32-32.1-31.99l0-31.99l-158.9-.0099c-28.5 0-43.69-34.49-24.69-56.4l68.98-79.59H62.22c-25.41 0-39.15-29.8-22.67-49.13l60.41-70.85H89.21c-21.28 0-32.87-22.5-19.28-37.31l134.8-146.5c10.4-11.3 28.22-11.3 38.62-.0033l134.9 146.5c13.62 14.81 2.001 37.31-19.28 37.31h-10.77l60.35 70.86c16.46 19.34 2.716 49.12-22.68 49.12h-15.2l68.98 79.59C458.7 413.7 443.1 447.1 413.8 447.1z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM274.7 304H173.3c-95.73 0-173.3 77.6-173.3 173.3C0 496.5 15.52 512 34.66 512H413.3C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304zM479.1 320h-73.85C451.2 357.7 480 414.1 480 477.3C480 490.1 476.2 501.9 470 512h138C625.7 512 640 497.6 640 479.1C640 391.6 568.4 320 479.1 320zM432 256C493.9 256 544 205.9 544 144S493.9 32 432 32c-25.11 0-48.04 8.555-66.72 22.51C376.8 76.63 384 101.4 384 128c0 35.52-11.93 68.14-31.59 94.71C372.7 243.2 400.8 256 432 256z\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\">\\n <defs>\\n <radialGradient id=\\\"radial\\\" cy=\\\"85%\\\">\\n <stop offset=\\\"20%\\\" stop-color=\\\"var(--color-secondary)\\\" />\\n <stop offset=\\\"100%\\\" stop-color=\\\"var(--color-primary)\\\" />\\n </radialGradient>\\n </defs>\\n <!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->\\n <path fill=\\\"url('#radial')\\\" d=\\\"M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z\\\" />\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z\\\"/></svg>\"","import { icon, IconSize } from './icons';\nimport { View } from './views/view';\nimport { toElement } from './util';\n\nexport type TemplateData = Record<string, any>;\ntype ViewData = Record<string, View>;\n\ntype RenderMode = 'sync' | 'async';\n\ntype TemplateOptions = {\n mode: RenderMode;\n}\n\nconst defaultOptions: TemplateOptions = {\n mode: 'sync'\n};\n\nexport class Template<E extends HTMLElement = HTMLElement> {\n #templateFn: (TemplateData) => string;\n #mode: RenderMode;\n\n constructor(templateFn: (TemplateData) => string, options: Partial<TemplateOptions> = {}) {\n this.#templateFn = templateFn;\n this.#mode = options.mode || defaultOptions.mode;\n }\n\n renderSync(data: TemplateData = {}): E {\n const result = toElement<E>(this.#templateFn(data));\n this.#bindPlaceholders(result, data);\n this.#bindIcons(result);\n this.#renderChildViews(result, data);\n return result;\n }\n\n async renderAsync(data: TemplateData = {}): Promise<E> {\n const result = toElement<E>(this.#templateFn(data));\n this.#bindPlaceholders(result, data);\n this.#bindIcons(result);\n await this.#renderChildViews(result, data);\n return result;\n }\n\n render(data: TemplateData): E | Promise<E> {\n return this.#mode === 'sync' ? this.renderSync(data) : this.renderAsync(data);\n }\n\n async #renderChildViews(result: E, data: ViewData) {\n const placeholders = result.querySelectorAll<HTMLElement>('[data-view]');\n\n const asyncViews: Promise<HTMLElement>[] = [];\n\n for (const placeholder of placeholders) {\n const view = data[placeholder.dataset.view as string];\n if (view) {\n if (placeholder.dataset.render !== 'sync') {\n asyncViews.push(view.render().then(result => {\n placeholder.replaceWith(result);\n return result;\n }));\n } else {\n placeholder.replaceWith(view.renderSync());\n }\n } else {\n placeholder.remove();\n }\n }\n\n return Promise.all(asyncViews);\n }\n\n #bindIcons(result: E) {\n const icons = result.querySelectorAll<HTMLElement>('i[data-icon]');\n icons.forEach((placeholder: HTMLElement) => {\n const { icon: iconKey, size } = placeholder.dataset;\n placeholder.replaceWith(icon(iconKey as string, size as IconSize));\n })\n }\n\n #bindPlaceholders(result: E, data: TemplateData): E {\n const placeholders = result.querySelectorAll<HTMLElement>('[data-placeholder]');\n \n placeholders.forEach((placeholder: HTMLElement) => {\n const key = placeholder.dataset.placeholder;\n\n if (key && data[key]) {\n const replacement = data[key];\n placeholder.replaceWith(...[replacement].flat());\n } else {\n console.warn(`Missing placeholder element for key \"${key}\"`);\n }\n });\n\n return result;\n }\n}\n","import { View } from './view';\nimport { Template } from '../Template';\nimport { getPrefixedClasses } from '../util';\n\nconst classes = getPrefixedClasses(\n 'imagePlaceholder',\n 'placeholder'\n);\n\nconst template = new Template(({ classes }) => /* html */`\n <div class=\"${classes.placeholder} ${classes.imagePlaceholder}\"></div>\n`);\n\ntype ImageOptions = {\n classNames?: string;\n};\n\nexport class Image extends View {\n private classNames?: string;\n\n constructor({ classNames }: ImageOptions = {}) {\n super({ template, classes });\n this.classNames = classNames;\n }\n\n load(src: string | Promise<string>) {\n const img = document.createElement('img');\n if (this.classNames) {\n img.className = this.classNames;\n }\n\n img.addEventListener('load', () => {\n this.el.replaceWith(img);\n }, { once: true });\n\n Promise.resolve(src).then(src => img.src = src);\n }\n\n renderSync() {\n super.renderSync();\n if (this.classNames) {\n const classNames = this.classNames.split(' ');\n classNames.forEach(className => this.el.classList.add(className));\n }\n\n return this.el;\n }\n}\n","import { LazyLoader } from '../LazyLoader';\nimport { CustomEmoji, EmojiRecord, EmojiSelection } from '../types';\nimport { View } from '../views/view';\nimport { Image } from '../views/Image';\nimport { getPrefixedClasses } from '../util';\n\nconst classes = getPrefixedClasses('customEmoji');\n\nexport type RenderTask = {\n content: View | Element;\n resolver?: () => Element;\n}\n\nexport abstract class Renderer {\n abstract render(emoji: EmojiRecord, classNames?: string): RenderTask;\n abstract emit(emoji: EmojiRecord): EmojiSelection | Promise<EmojiSelection>;\n\n renderElement(content: Element): RenderTask {\n return { content };\n }\n\n renderImage(classNames = '', urlResolver: () => string | Promise<string>): RenderTask {\n const image = new Image({ classNames });\n image.renderSync();\n\n const resolver = () => {\n image.load(urlResolver());\n return image.el;\n }\n\n return { content: image, resolver };\n }\n\n doRender(emoji: EmojiRecord, lazyLoader?: LazyLoader, classNames?: string): Element {\n if (emoji.custom) {\n return this.renderCustom(emoji as CustomEmoji, lazyLoader, classNames);\n }\n\n const { content, resolver } = this.render(emoji, classNames);\n const contentElement = content instanceof Element ? content : content.el;\n\n // if (lazyLoader && resolver) {\n // return lazyLoader.lazyLoad(contentElement, resolver)\n // }\n\n if (resolver) {\n resolver();\n }\n return contentElement;\n }\n\n doEmit(emoji: EmojiRecord): EmojiSelection | Promise<EmojiSelection> {\n if (emoji.custom) {\n return this.emitCustom(emoji as CustomEmoji);\n }\n\n return this.emit(emoji);\n }\n\n emitCustom({ url, label, emoji, data }: CustomEmoji): EmojiSelection {\n return { url, label, emoji, data };\n }\n\n renderCustom(emoji: CustomEmoji, lazyLoader?: LazyLoader, additionalClasses = ''): Element {\n const classNames = [classes.customEmoji, additionalClasses].join(' ').trim();\n\n const { content, resolver } = this.renderImage(classNames, () => emoji.url);\n const contentElement = content instanceof Element ? content : content.el;\n\n if (resolver) {\n resolver();\n }\n\n return contentElement;\n }\n}\n","import { Renderer } from './renderer';\nimport { EmojiRecord, EmojiSelection } from '../types';\nimport { Template } from '../Template';\n\nconst template = new Template(({ emoji }) => /* html */ `<span>${emoji}</span>`);\n\nexport class NativeRenderer extends Renderer {\n render(emoji: EmojiRecord) {\n return this.renderElement(template.renderSync({ emoji: emoji.emoji }));\n }\n\n emit({ emoji, hexcode, label }: EmojiRecord): EmojiSelection {\n return { emoji, hexcode, label };\n }\n}\n","export default {\n 'categories.activities': 'Activities',\n 'categories.animals-nature': 'Animals & Nature',\n 'categories.custom': 'Custom',\n 'categories.flags': 'Flags',\n 'categories.food-drink': 'Food & Drink',\n 'categories.objects': 'Objects',\n 'categories.people-body': 'People & Body',\n 'categories.recents': 'Recently Used',\n 'categories.smileys-emotion': 'Smileys & Emotion',\n 'categories.symbols': 'Symbols',\n 'categories.travel-places': 'Travel & Places',\n 'error.load': 'Failed to load emojis',\n 'recents.clear': 'Clear recent emojis',\n 'recents.none': 'You haven\\'t selected any emojis yet.',\n 'retry': 'Try again',\n 'search.clear': 'Clear search',\n 'search.error': 'Failed to search emojis',\n 'search.notFound': 'No results found',\n 'search': 'Search emojis...'\n};\n","import { GroupMessage, Emoji, Locale } from 'emojibase';\nimport { PickerOptions, EmojiRecord, Category, CategoryKey } from '../types';\nimport { applyRules } from '../rules';\nimport { queryMatches, getEmojiRecord, DataStore } from './DataStore';\n\n// Base database name. It will have the locale appended to it.\nconst DATABASE_NAME = 'PicMo';\n\nexport function IndexedDbStoreFactory(locale: Locale): DataStore {\n return new IndexedDbStore(locale);\n}\n\nIndexedDbStoreFactory.deleteDatabase = (locale: Locale) => {\n return new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(`${DATABASE_NAME}-${locale}`);\n request.addEventListener('success', resolve);\n request.addEventListener('error', reject);\n });\n};\n\nexport class IndexedDbStore extends DataStore {\n private db: IDBDatabase;\n\n /**\n * Creates/opens the database.\n *\n * There are three data stores:\n *\n * - category: stores the categories\n * - emoji: stores the emoji data itself\n * - meta: stores metadata such as the ETags\n *\n * @returns a Promise that resolves when the database is ready\n */\n async open(): Promise<void> {\n const request = indexedDB.open(`${DATABASE_NAME}-${this.locale}`);\n\n return new Promise((resolve, reject) => {\n request.addEventListener('success', (event: any) => {\n this.db = event.target?.result;\n resolve();\n });\n\n request.addEventListener('error', reject);\n\n request.addEventListener('upgradeneeded', async (event: any) => {\n this.db = event.target?.result;\n\n this.db.createObjectStore('category', { keyPath: 'order' });\n\n const emojiStore = this.db.createObjectStore('emoji', { keyPath: 'emoji' });\n emojiStore.createIndex('category', 'group');\n emojiStore.createIndex('version', 'version');\n\n this.db.createObjectStore('meta');\n });\n });\n }\n\n async delete() {\n this.close();\n const request = indexedDB.deleteDatabase(`${DATABASE_NAME}-${this.locale}`);\n await this.waitForRequest(request);\n }\n\n close() {\n this.db.close();\n }\n\n async getEmojiCount(): Promise<number> {\n const transaction = this.db.transaction('emoji', 'readonly');\n const store = transaction.objectStore('emoji');\n const result = await this.waitForRequest(store.count());\n return result.target.result;\n }\n\n /**\n * Gets the ETags stored in the meta datastore.\n * @returns a Promise that resolves to the ETag data\n */\n async getEtags(): Promise<Record<string, string | undefined>> {\n const transaction = this.db.transaction('meta', 'readonly');\n const store = transaction.objectStore('meta');\n const [emojisEtag, messagesEtag] = await Promise.all([\n this.waitForRequest(store.get('emojisEtag')),\n this.waitForRequest(store.get('messagesEtag'))\n ]);\n\n return {\n storedEmojisEtag: emojisEtag.target.result,\n storedMessagesEtag: messagesEtag.target.result\n };\n }\n\n /**\n * Stores ETag values for the emoji and message data.\n * @param emojisEtag the ETag for the emoji data\n * @param messagesEtag the ETag for the message data\n */\n async setMeta(meta) {\n const transaction = this.db.transaction('meta', 'readwrite');\n const store = transaction.objectStore('meta');\n\n return new Promise(resolve => {\n transaction.oncomplete = resolve;\n\n const properties = Object.keys(meta).filter(Boolean);\n properties.forEach(property => {\n store.put(meta[property], property);\n });\n });\n }\n\n async getHash() {\n const transaction = this.db.transaction('meta', 'readonly');\n const store = transaction.objectStore('meta');\n const result = await this.waitForRequest(store.get('hash'));\n return result.target.result;\n }\n\n /**\n * Determines whether or not the database is populated.\n *\n * @returns a Promise that resolves to a boolean indicating the populated state\n */\n async isPopulated(): Promise<boolean> {\n const transaction = this.db.transaction('category', 'readonly');\n const store = transaction.objectStore('category');\n const categoryCountResult = await this.waitForRequest(store.count());\n const categoryCount = categoryCountResult.target.result;\n return categoryCount > 0;\n }\n\n /**\n * Removes any current data and re-populates the data stores with the given data.\n *\n * @param groups the group message data\n * @param emojis the emoji data\n * @param emojisEtag the emoji data ETag\n * @param messagesEtag the message data ETag\n * @returns a Promise that resolves when all data has been written\n */\n async populate({\n groups,\n emojis,\n emojisEtag,\n messagesEtag,\n hash\n }: {\n groups: GroupMessage[];\n emojis: Emoji[];\n emojisEtag?: string | null;\n messagesEtag?: string | null;\n hash?: string | null;\n }) {\n // Wipe out any old data first\n await this.removeAllObjects('category', 'emoji');\n\n const tasks = [\n this.addObjects('category', groups),\n this.addObjects('emoji', emojis),\n this.setMeta({ emojisEtag, messagesEtag, hash })\n ];\n\n await Promise.all(tasks);\n }\n\n /**\n * Gets the emoji categories.\n *\n * If an include list is specified, only those categories will be returned - and will be in the same sort order.\n * Otherwise, all categories (except 'component') are returned.\n *\n * @param include an array of CategoryKeys to include\n * @returns an arrya of all categories, or only the ones specified if include is given\n */\n async getCategories(options: PickerOptions): Promise<Category[]> {\n const transaction = this.db.transaction('category', 'readonly');\n const categoryStore = transaction.objectStore('category');\n const result = await this.waitForRequest(categoryStore.getAll());\n let categories = result.target.result.filter(category => category.key !== 'component');\n\n if (options.showRecents) {\n categories.unshift({ key: 'recents', order: -1 });\n }\n\n if (options.custom?.length) {\n categories.push({ key: 'custom', order: 10 });\n }\n\n if (options.categories) {\n const includeList = options.categories as CategoryKey[];\n categories = categories.filter(category => includeList.includes(category.key));\n categories.sort((a: Category, b: Category) => includeList.indexOf(a.key) - includeList.indexOf(b.key));\n } else {\n categories.sort((a: Category, b: Category) => a.order - b.order);\n }\n\n return categories;\n }\n\n /**\n * Gets all emojis for a particular category and emoji version.\n *\n * @param category the category to get emojis for\n * @param emojiVersion the maximum version for returned emojis\n * @returns a Promise that resolves to an array of the EmojiRecord data\n */\n async getEmojis(category: Category, emojiVersion: number): Promise<EmojiRecord[]> {\n const transaction = this.db.transaction('emoji', 'readonly');\n const emojiStore = transaction.objectStore('emoji');\n const groupsIndex = emojiStore.index('category');\n const result = await this.waitForRequest(groupsIndex.getAll(category.order));\n const emojis = result.target.result as Emoji[];\n const records = emojis\n .filter((e: Emoji) => e.version <= emojiVersion)\n .sort((a: Emoji, b: Emoji) => {\n if (a.order != null && b.order != null) {\n return a.order - b.order;\n }\n\n return 0;\n })\n .map(getEmojiRecord);\n\n return applyRules(records, emojiVersion);\n }\n\n /**\n * Searches the database for emojis.\n *\n * @param query the text query\n * @param customEmojis the custom emojis\n * @param emojiVersion the maximum emoji version for search results\n * @param categories the categories to search\n * @returns a Promise that resolves to the matching EmojiRecords\n */\n async searchEmojis(\n query: string,\n customEmojis: EmojiRecord[],\n emojiVersion: number,\n categories: Category[]\n ): Promise<EmojiRecord[]> {\n const results: EmojiRecord[] = [];\n\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction('emoji', 'readonly');\n const emojiStore = transaction.objectStore('emoji');\n const request = emojiStore.openCursor();\n\n request.addEventListener('success', (event: any) => {\n const cursor: IDBCursorWithValue = event.target?.result;\n if (!cursor) {\n return resolve([\n // matching emojis from the database\n ...applyRules(results, emojiVersion),\n\n // matching custom emojis\n ...customEmojis.filter(emoji => queryMatches(emoji, query))\n ]);\n }\n\n const emoji = cursor.value as Emoji;\n if (queryMatches(emoji, query, categories) && emoji.version <= emojiVersion) {\n results.push(getEmojiRecord(emoji));\n }\n\n cursor.continue();\n });\n\n request.addEventListener('error', (error: Event) => {\n reject(error);\n });\n });\n }\n\n /**\n * Waits for a request to complete.\n *\n * @param request the request\n * @returns a Promise that resolves when the request succeeds, or rejects if it fails\n */\n async waitForRequest(request: IDBRequest): Promise<any> {\n return new Promise((resolve, reject) => {\n request.onsuccess = resolve;\n request.onerror = reject;\n });\n }\n\n /**\n * Wraps an operation in an IndexedDB transaction.\n *\n * @param storeName the data store(s) to use\n * @param mode the transaction mode\n * @param callback a callback containing the work to do in the transaction\n * @returns a Promise that resolves when the transaction completes, or rejects if it fails\n */\n protected withTransaction(\n storeName: string | string[],\n mode: IDBTransactionMode = 'readwrite',\n callback: (transaction: IDBTransaction) => void\n ) {\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(storeName, mode);\n transaction.oncomplete = resolve;\n transaction.onerror = reject;\n\n callback(transaction);\n });\n }\n\n /**\n * Removes all entries from one or more stores.\n * @param storeNames the stores to clear\n * @return a Promise that resolves when the clear is complete\n */\n protected async removeAllObjects(...storeNames: string[]) {\n const transaction = this.db.transaction(storeNames, 'readwrite');\n const stores = storeNames.map(storeName => transaction.objectStore(storeName));\n await Promise.all(stores.map(store => this.waitForRequest(store.clear())));\n }\n\n /**\n * Adds a collection of objects to a data store.\n *\n * @param storeName the store to populate\n * @param objects the objects to add\n * @returns a Promise that resolves when the add is complete, or rejects if it fails\n */\n protected async addObjects(storeName: string, objects: any[]) {\n return this.withTransaction(storeName, 'readwrite', transaction => {\n const store = transaction.objectStore(storeName);\n objects.forEach(object => {\n store.add(object);\n });\n });\n }\n}\n","// A super basic in-memory WebStorage emulation. This is required in\n// some environments where localStorage/sessionStorage are not allowed.\nexport function createStorage(): Storage {\n let data = {};\n\n return {\n getItem: key => data[key],\n setItem: (key, value) => data[key] = value,\n length: Object.keys(data).length,\n clear: () => data = {},\n key: index => Object.keys(data)[index],\n removeItem: key => delete data[key]\n };\n}","import { EmojiRecord } from '../types';\n\nexport abstract class RecentsProvider {\n abstract clear(): void;\n abstract getRecents(maxCount: number): Array<EmojiRecord>;\n abstract addOrUpdateRecent(emoji: EmojiRecord, maxCount: number): void;\n}\n","import { EmojiRecord } from '../types';\nimport { RecentsProvider } from './RecentsProvider';\n\nconst STORAGE_KEY = 'PicMo:recents';\n\nexport abstract class WebStorageProvider extends RecentsProvider {\n storage: Storage;\n\n constructor(storage: Storage) {\n super();\n this.storage = storage;\n }\n\n clear(): void {\n this.storage.removeItem(STORAGE_KEY);\n }\n\n getRecents(maxCount: number): Array<EmojiRecord> {\n try {\n const recents = JSON.parse(this.storage.getItem(STORAGE_KEY) ?? '[]');\n return recents.slice(0, maxCount);\n } catch (error) { // storage is not available, no recents\n return [];\n }\n }\n\n addOrUpdateRecent(emoji: EmojiRecord, maxCount: number) {\n // Add the new recent to the beginning of the list, removing it if it exists already\n const recents = [\n emoji,\n ...this.getRecents(maxCount).filter(recent => recent.hexcode !== emoji.hexcode)\n ].slice(0, maxCount);\n \n try {\n this.storage.setItem(STORAGE_KEY, JSON.stringify(recents));\n } catch (error) {\n console.warn('storage is not available, recent emojis will not be saved');\n }\n }\n}\n","import { isLocalStorageAvailable } from '../util';\nimport { createStorage } from '../webStorageShim';\nimport { WebStorageProvider } from './WebStorageProvider';\n\nexport class LocalStorageProvider extends WebStorageProvider {\n constructor() {\n super(isLocalStorageAvailable() ? localStorage : createStorage());\n }\n}\n","import { PickerOptions } from './types';\nimport { lightTheme } from './themes';\nimport { NativeRenderer } from './renderers/native';\nimport en from './i18n/lang-en';\nimport { IndexedDbStoreFactory } from './data/IndexedDbStore';\nimport { LocalStorageProvider } from './recents/LocalStorageProvider';\n\nconst defaultOptions: Partial<PickerOptions> = {\n dataStore: IndexedDbStoreFactory,\n theme: lightTheme,\n\n animate: true,\n\n showCategoryTabs: true,\n showPreview: true,\n showRecents: true,\n showSearch: true,\n showVariants: true,\n\n emojisPerRow: 8,\n visibleRows: 6,\n\n emojiVersion: 'auto',\n i18n: en,\n locale: 'en',\n\n maxRecents: 50,\n\n custom: []\n};\n\nexport function getOptions(options: Partial<PickerOptions> = {}): PickerOptions {\n return { \n ...defaultOptions,\n ...options,\n renderer: options.renderer || new NativeRenderer(),\n recentsProvider: options.recentsProvider || new LocalStorageProvider()\n } as PickerOptions;\n}\n","export type AsyncEventCallback = (...args: any[]) => Promise<void>;\nexport type EventCallback = (...args: any[]) => void;\nexport type EventArgs = any[];\n\nexport type EventKey<T> = Extract<T, string>;\n\nexport type EventBinding = {\n context?: any;\n handler: EventCallback;\n once?: boolean;\n};\n\nexport type EventHandlerRecord<T> = {\n event: EventKey<T>;\n handler: EventCallback;\n};\n\nexport class Events<T> {\n #events: Map<string, EventBinding[]> = new Map();\n \n #getBindings(event: EventKey<T>): EventBinding[] {\n if (!this.#events.has(event)) {\n this.#events.set(event, []);\n }\n\n return this.#events.get(event) as EventBinding[];\n }\n\n #addListener(event: EventKey<T>, handler: EventCallback, context?: any, once = false) {\n const bindings = this.#getBindings(event);\n bindings.push({ context, handler, once });\n }\n\n on(event: EventKey<T>, handler: EventCallback, context?: any) {\n this.#addListener(event, handler, context);\n }\n\n once(event: EventKey<T>, handler: EventCallback, context?: any) {\n this.#addListener(event, handler, context, true);\n }\n\n off(event: EventKey<T>, handler: EventCallback) {\n const bindings = this.#getBindings(event);\n this.#events.set(event, bindings.filter(h => h.handler !== handler));\n }\n\n emit(event: EventKey<T>, ...args: EventArgs) {\n const bindings = this.#getBindings(event);\n bindings.forEach((binding: EventBinding) => {\n binding.handler.apply(binding.context, args);\n if (binding.once) {\n this.off(event, binding.handler);\n }\n });\n }\n\n removeAll() {\n this.#events.clear();\n }\n}\n","export default {\n injectStyles: true\n};\n","import { Events, EventKey } from './events';\n\nexport type AppEvent =\n | 'data:ready'\n | 'error'\n | 'reinitialize'\n | 'emoji:select'\n | 'content:show'\n | 'preview:show'\n | 'preview:hide'\n | 'variantPopup:hide'\n | 'category:select'\n | 'category:next'\n | 'category:previous'\n | 'recent:add'\n | 'focus:change';\n\nexport type AppEventKey = EventKey<AppEvent>;\n\nexport class AppEvents extends Events<AppEvent> {}\n","import { Events, EventKey } from './events';\n\nexport type ExternalEvent = \n 'emoji:select' |\n 'data:ready';\n\nexport type ExternalEventKey = EventKey<ExternalEvent>;\n\nexport class ExternalEvents extends Events<ExternalEvent> {}\n","import { View } from './view';\nimport { Template } from '../Template';\nimport { EmojiContainer } from './EmojiContainer';\nimport { Category, EmojiFocusTarget } from '../types';\nimport { LazyLoader } from '../LazyLoader';\nimport { getPrefixedClasses } from '../util';\n\ntype BaseEmojiCategoryOptions = {\n category: Category;\n showVariants: boolean;\n lazyLoader?: LazyLoader;\n template: Template;\n}\n\nexport const classes = getPrefixedClasses(\n 'emojiCategory',\n 'categoryName',\n 'noRecents',\n 'recentEmojis'\n);\n\nexport abstract class BaseEmojiCategory extends View {\n category: Category;\n protected showVariants: boolean;\n protected lazyLoader?: LazyLoader;\n protected emojiContainer: EmojiContainer;\n\n protected baseUIElements = {\n categoryName: View.byClass(classes.categoryName)\n }\n\n setActive(active: boolean, focusTarget?: EmojiFocusTarget, performFocus?: boolean) {\n this.emojiContainer.setActive(active, focusTarget, performFocus);\n }\n\n constructor({ template, category, showVariants, lazyLoader }: BaseEmojiCategoryOptions) {\n super({ template, classes });\n\n this.category = category;\n this.showVariants = showVariants;\n this.lazyLoader = lazyLoader;\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classes, emoji }) => /* html */`\n <button\n type=\"button\"\n class=\"${classes.emojiButton}\"\n title=\"${emoji.label}\"\n data-emoji=\"${emoji.emoji}\"\n tabindex=\"-1\">\n <div data-placeholder=\"emojiContent\"></div>\n </button>\n`);","import { LazyLoader } from '../LazyLoader';\n\nimport { View } from './view';\n\nimport { CategoryKey, EmojiRecord } from '../types';\n\nimport template from './Emoji.template';\nimport { getPrefixedClasses } from '../util';\n\nconst classes = getPrefixedClasses('emojiButton');\n\n\ntype EmojiOptions = {\n emoji: EmojiRecord\n lazyLoader?: LazyLoader;\n category?: CategoryKey;\n};\n\nexport class Emoji extends View {\n private emoji: EmojiRecord\n private lazyLoader?: LazyLoader;\n private category?: CategoryKey;\n\n constructor({ emoji, lazyLoader, category }: EmojiOptions) {\n super({ template, classes });\n\n this.emoji = emoji;\n this.lazyLoader = lazyLoader;\n this.category = category;\n }\n\n initialize() {\n this.uiEvents = [\n View.uiEvent('focus', this.handleFocus)\n ];\n \n super.initialize();\n }\n\n private handleFocus() {\n if (this.category) {\n this.events.emit('focus:change', this.category);\n }\n }\n\n activateFocus(performFocus?: boolean) {\n this.el.tabIndex = 0;\n if (performFocus) {\n this.el.focus();\n }\n }\n\n deactivateFocus() {\n this.el.tabIndex = -1;\n }\n\n renderSync(): HTMLElement {\n return super.renderSync({\n emoji: this.emoji,\n emojiContent: this.renderer.doRender(this.emoji, this.lazyLoader)\n });\n }\n}\n","import { Events } from './events';\n\ntype FocusGridEvent = 'focus:change' | 'focus:underflow' | 'focus:overflow';\n\nexport type FocusChangeEvent = {\n from: number;\n to: number;\n performFocus: boolean;\n};\n\ntype Cell = {\n row: number;\n column: number;\n};\n\n/**\n * Represents an array of emojis as a grid with rows and columns as they appear in the UI.\n * This makes focus traversal calculations less complex in the EmojiContainer.\n * \n * The grid is given a flat array of emojis for the current category and the number of columns. It will create\n * a virtual grid structure mapping those emojis to rows of the desired length.\n * \n * The focus can be traversed left, right, up, and down, or to a specific row and column coordinate. Later, the currently\n * selected grid cell can be translated back to the index in the original emoji array.\n * \n * The grid emits three events:\n * - focus:change - when the focused cell changes\n * Event properties: from (the previous index), to (the new index), and performFocus (whether to focus the new cell)\n * \n * - focus:underflow - when the focus tries to move below the first emoji in the category\n * Event properties: index (the current index within the grid)\n * \n * - focus:overflow - when the focus tries to move beyond the last emoji in the category\n * Event properties: index (the current index within the grid)\n */\n export class FocusGrid {\n private focusedRow: number;\n private focusedColumn: number;\n private rowCount: number;\n private columnCount: number;\n private emojiCount: number;\n private wrap: boolean;\n\n private events = new Events<FocusGridEvent>();\n\n /** Maps focus traversal keys to their associated handlers. */\n private keyHandlers = {\n ArrowLeft: this.focusPrevious.bind(this),\n ArrowRight: this.focusNext.bind(this),\n ArrowUp: this.focusUp.bind(this),\n ArrowDown: this.focusDown.bind(this)\n };\n\n /**\n * Creates a FocusGrid.\n * \n * @param columnCount The number of columns in the emoji picker.\n * @param emojiCount The total number of emojis in this category.\n * @param initialRow The initial focused row.\n * @param initialColumn The initial focused column.\n */\n constructor(columnCount: number, emojiCount: number, initialRow = 0, initialColumn = 0, wrap = false) {\n this.rowCount = Math.ceil(emojiCount / columnCount);\n this.columnCount = columnCount;\n this.focusedRow = initialRow;\n this.focusedColumn = initialColumn;\n this.emojiCount = emojiCount;\n this.wrap = wrap;\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n /**\n * Removes all bound event listeners.\n */\n destroy() {\n this.events.removeAll();\n }\n\n /**\n * Public API for listening for focus events.\n */\n on(event: FocusGridEvent, handler: (...args: any[]) => void) {\n this.events.on(event, handler);\n }\n\n /**\n * Handles keydown events that are forwarded from the EmojiContainer and executes\n * the appropriate focus function.\n * @param event the KeyboardEvent that occurred\n */\n handleKeyDown(event: KeyboardEvent) {\n if (event.key in this.keyHandlers) {\n event.preventDefault();\n this.keyHandlers[event.key]();\n }\n }\n\n /**\n * Sets the focused cell to a specific row and, optionally, column. If no column is specified,\n * the focused column remains unchanged.\n * \n * The `performFocus` flag determines whether the focus should be moved to the new cell. If it\n * is false, the focused element will be changed but the actual focus() call will not be triggered yet.\n * \n * @param row The new focused row\n * @param column The new focused column, if specified\n * @param performFocus Whether or not to perform the actual focus operation.\n */\n setCell(row: number, column?: number, performFocus = true) {\n const previousIndex = this.getIndex();\n this.focusedRow = row;\n\n if (column !== undefined) {\n // If the column exceeds the column count, focus the last column.\n this.focusedColumn = Math.min(this.columnCount, column);\n }\n\n // If the given cell is out of bounds, focus to the last cell.\n if (this.focusedRow >= this.rowCount || this.getIndex() >= this.emojiCount) {\n this.focusedRow = this.rowCount - 1;\n this.focusedColumn = (this.emojiCount % this.columnCount) - 1;\n }\n\n this.events.emit('focus:change', { from: previousIndex, to: this.getIndex(), performFocus });\n }\n\n setFocusedIndex(index: number, performFocus = true) {\n const row = Math.floor(index / this.columnCount);\n const column = index % this.columnCount;\n this.setCell(row, column, performFocus);\n }\n\n /**\n * Moves the focus to the next cell in the current row.\n * Emits `focus:overflow` if there is no next cell. \n */\n focusNext() {\n if (this.focusedColumn < this.columnCount - 1 && this.getIndex() < this.emojiCount - 1) {\n this.setCell(this.focusedRow, this.focusedColumn + 1);\n } else if (this.focusedRow < this.rowCount - 1) {\n this.setCell(this.focusedRow + 1, 0);\n } else if (this.wrap) {\n this.setCell(0, 0);\n } else {\n this.events.emit('focus:overflow', 0);\n }\n }\n\n /**\n * Moves the focus to the previous cell in the current row.\n * Emits `focus:underflow` if there is no previous cell.\n */\n focusPrevious() {\n if (this.focusedColumn > 0) {\n this.setCell(this.focusedRow, this.focusedColumn - 1);\n } else if (this.focusedRow > 0) {\n this.setCell(this.focusedRow - 1, this.columnCount - 1);\n } else if (this.wrap) {\n this.setCell(this.rowCount - 1, this.columnCount - 1);\n } else {\n this.events.emit('focus:underflow', this.columnCount - 1);\n }\n }\n\n /**\n * Moves the focus to the cell directly above the current one.\n * Emits `focus:underflow` if the current cell is in the first row.\n */\n focusUp() {\n if (this.focusedRow > 0) {\n this.setCell(this.focusedRow - 1, this.focusedColumn);\n } else {\n this.events.emit('focus:underflow', this.focusedColumn);\n }\n }\n\n /**\n * Moves the focus to the cell directly below the current one.\n * Emits `focus:overflow` if the current cell is in the last row.\n */\n focusDown() {\n if (this.focusedRow < this.rowCount - 1) {\n this.setCell(this.focusedRow + 1, this.focusedColumn);\n } else {\n this.events.emit('focus:overflow', this.focusedColumn);\n }\n }\n\n /**\n * Moves the focus to a specific emoji in the category.\n * @param index the index of the emoji to focus on\n */\n focusToIndex(index: number) {\n this.setCell(Math.floor(index / this.columnCount), index % this.columnCount);\n }\n\n /**\n * Gets the index in the emoji array of the currently focused cell.\n * @returns the currently focused cell's index\n */\n getIndex(): number {\n return (this.focusedRow * this.columnCount) + this.focusedColumn;\n }\n\n /**\n * Gets the row and column of the currently focused cell.\n * @returns the row and column data\n */\n getCell(): Cell {\n return { row: this.focusedRow, column: this.focusedColumn };\n }\n\n /**\n * Gets the total number of rows in the grid\n * @returns the number of rows in the grid\n */\n getRowCount() {\n return this.rowCount;\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classes }) => /* html */`\n <div class=\"${classes.emojiContainer}\">\n <div data-placeholder=\"emojis\"></div>\n </div>\n`);\n","import { Emoji } from './Emoji';\nimport { LazyLoader } from '../LazyLoader';\nimport { getEmojiForEvent, getPrefixedClasses } from '../util';\nimport { View } from './view';\nimport { CategoryKey, EmojiFocusTarget, EmojiRecord } from '../types';\nimport { FocusGrid, FocusChangeEvent } from '../focusGrid';\n\nimport template from './EmojiContainer.template';\n\nconst classes = getPrefixedClasses('emojiContainer');\n\ntype EmojiContainerOptions = {\n emojis: EmojiRecord[];\n showVariants: boolean;\n preview: boolean;\n lazyLoader?: LazyLoader;\n category?: CategoryKey;\n fullHeight?: boolean;\n};\n\n/**\n * An EmojiContainer contains all the emojis in a given category.\n * \n * It manages keybaord focus for all emojis in the category.\n */\nexport class EmojiContainer extends View {\n protected emojis: EmojiRecord[];\n protected showVariants: boolean;\n protected preview: boolean;\n protected lazyLoader?: LazyLoader;\n private category?: CategoryKey;\n private grid: FocusGrid;\n emojiViews: Emoji[];\n emojiElements: HTMLElement[];\n fullHeight = false;\n\n constructor({ emojis, showVariants, preview = true, lazyLoader, category, fullHeight = false }: EmojiContainerOptions) {\n super({ template, classes });\n\n this.showVariants = showVariants;\n this.lazyLoader = lazyLoader;\n this.preview = preview;\n this.emojis = emojis;\n this.category = category;\n this.fullHeight = fullHeight;\n\n this.setFocus = this.setFocus.bind(this);\n this.triggerNextCategory = this.triggerNextCategory.bind(this);\n this.triggerPreviousCategory = this.triggerPreviousCategory.bind(this);\n }\n\n initialize() {\n this.grid = new FocusGrid(this.options.emojisPerRow, this.emojiCount, 0, 0, !this.category);\n this.grid.on('focus:change', this.setFocus);\n this.grid.on('focus:overflow', this.triggerNextCategory);\n this.grid.on('focus:underflow', this.triggerPreviousCategory);\n\n this.uiEvents = [\n View.uiEvent('click', this.selectEmoji),\n View.uiEvent('keydown', this.grid.handleKeyDown)\n ];\n\n if (this.preview) {\n this.uiEvents.push(\n View.uiEvent('mouseover', this.showPreview),\n View.uiEvent('mouseout', this.hidePreview),\n View.uiEvent('focus', this.showPreview, { capture: true }),\n View.uiEvent('blur', this.hidePreview, { capture: true })\n );\n }\n\n super.initialize();\n }\n\n /**\n * Marks the specified cell in the emoji grid as focused.\n * \n * @param focusTarget The target emoji to make focusable.\n * @param performFocus Whether or not to actually focus the new target.\n */\n private setFocusedView(focusTarget: EmojiFocusTarget | undefined, performFocus?: boolean): void {\n if (!focusTarget) {\n return;\n }\n\n if (typeof focusTarget === 'string') {\n const index = this.emojis.findIndex(emoji => emoji.emoji === focusTarget);\n this.grid.setFocusedIndex(index, false);\n\n setTimeout(() => {\n const targetView = this.emojiViews[index].el;\n targetView.scrollIntoView();\n\n // Need to scroll up a bit to offset the sticky header\n const header = targetView.parentElement?.previousElementSibling as HTMLElement;\n const emojiArea = targetView.parentElement?.parentElement?.parentElement as HTMLElement;\n emojiArea.scrollTop -= header?.offsetHeight ?? 0;\n });\n } else if (focusTarget.row === 'first' || focusTarget.row === 0) {\n this.grid.setCell(0, focusTarget.offset, performFocus);\n } else if (focusTarget.row === 'last') {\n this.grid.setCell(this.grid.getRowCount() - 1, focusTarget.offset, performFocus);\n }\n }\n\n /**\n * Sets the active state of this category's emojis. If a category is active, its emojis\n * are focusable.\n * \n * @param active the desired active state\n * @param focusTarget the target emoji to make focusable if active is true\n * @param performFocus whether or not to actually focus the new target if active is true\n */\n setActive(active: boolean, focusTarget?: EmojiFocusTarget, performFocus?: boolean) {\n if (active) {\n this.setFocusedView(focusTarget, performFocus);\n } else {\n this.emojiViews[this.grid.getIndex()]?.deactivateFocus();\n }\n }\n\n renderSync(): HTMLElement {\n this.emojiViews = this.emojis.map(emoji =>\n this.viewFactory.create(Emoji, {\n emoji,\n category: this.category,\n lazyLoader: this.lazyLoader,\n renderer: this.renderer\n })\n );\n\n this.emojiElements = this.emojiViews.map(view => view.renderSync());\n\n return super.renderSync({\n emojis: this.emojiElements,\n i18n: this.i18n\n });\n }\n\n destroy() {\n super.destroy();\n this.emojiViews.forEach(view => view.destroy());\n this.grid.destroy();\n }\n\n /**\n * Causes the previous category to become active/focusable due to a focus:underflow event.\n * @param column the currently focused column\n */\n private triggerPreviousCategory(column: number) {\n this.events.emit('category:previous', column);\n }\n\n /**\n * Causes the next category to become active/focusable due to a focus:overflow event.\n * @param column the currently focused column\n */\n private triggerNextCategory(column: number) {\n if (this.category) {\n this.events.emit('category:next', column);\n }\n }\n\n /**\n * Reacts to a focus:change event from the grid.\n * \n * The current emoji is deactivated, and the new emoji is activated.\n * An event is then emitted which will pause the scroll listener in the main emoji area,\n * otherwise the active category tab can get out of sync.\n * \n * @param event The focus:change event.\n */\n private setFocus({ from, to, performFocus }: FocusChangeEvent) {\n this.emojiViews[from]?.deactivateFocus();\n this.emojiViews[to]?.activateFocus(performFocus);\n }\n\n private selectEmoji(event: Event) {\n // Prevent the document click listener from firing, which in some cases\n // can cause the picker to close even when it's configured not to.\n event.stopPropagation();\n const emoji = getEmojiForEvent(event, this.emojis);\n if (emoji) {\n this.events.emit('emoji:select', {\n emoji,\n showVariants: this.showVariants\n });\n }\n }\n\n private showPreview(event: Event) {\n const target = event.target as HTMLElement;\n const button = target.closest('button');\n const content = button?.firstElementChild;\n \n const emoji = getEmojiForEvent(event, this.emojis);\n if (emoji) {\n this.events.emit('preview:show', emoji, content?.cloneNode(true));\n }\n }\n\n private hidePreview(event: Event) {\n const emoji = getEmojiForEvent(event, this.emojis);\n if (emoji) {\n this.events.emit('preview:hide');\n }\n }\n\n get emojiCount(): number {\n return this.emojis.length;\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classes, category, pickerId, icon, i18n }) => /* html */`\n <section class=\"${classes.emojiCategory}\" role=\"tabpanel\" aria-labelledby=\"${pickerId}-category-${category.key}\">\n <h3 data-category=\"${category.key}\" class=\"${classes.categoryName}\">\n <i data-icon=\"${icon}\"></i>\n ${i18n.get(`categories.${category.key}`, category.message || category.key)}\n </h3>\n <div data-view=\"emojis\" data-render=\"sync\"></div>\n </section>\n`);\n","import { BaseEmojiCategory } from './BaseEmojiCategory';\nimport { EmojiContainer } from './EmojiContainer';\nimport { LazyLoader } from '../LazyLoader';\nimport { categoryIcons } from '../icons';\nimport { Category } from '../types';\nimport template from './EmojiCategory.template';\n\ntype EmojiCategoryOptions = {\n category: Category;\n showVariants: boolean;\n lazyLoader?: LazyLoader;\n emojiVersion: number;\n};\nexport class EmojiCategory extends BaseEmojiCategory {\n private emojiVersion: number;\n\n constructor({ category, showVariants, lazyLoader, emojiVersion }: EmojiCategoryOptions) {\n super({ category, showVariants, lazyLoader, template });\n\n this.showVariants = showVariants;\n this.lazyLoader = lazyLoader;\n this.emojiVersion = emojiVersion;\n }\n\n initialize() {\n this.uiElements = { ...this.baseUIElements };\n super.initialize();\n }\n\n async render(): Promise<HTMLElement> {\n await this.emojiDataPromise;\n const emojis = await this.emojiData.getEmojis(this.category, this.emojiVersion);\n\n this.emojiContainer = this.viewFactory.create(EmojiContainer, {\n emojis,\n showVariants: this.showVariants,\n lazyLoader: this.lazyLoader,\n category: this.category.key\n });\n\n return super.render({\n category: this.category,\n emojis: this.emojiContainer,\n emojiCount: emojis.length,\n icon: categoryIcons[this.category.key]\n });\n }\n}\n","import { EmojiContainer } from './EmojiContainer';\nimport { Emoji as EmojiView } from './Emoji';\nimport { EmojiRecord } from '../types';\n\nexport class RecentEmojiContainer extends EmojiContainer {\n constructor({ category, emojis, preview = true, lazyLoader }) {\n super({ category, emojis, showVariants: false, preview, lazyLoader });\n }\n\n async addOrUpdate(emoji: EmojiRecord): Promise<void> {\n // If the emoji already exists, remove it as it is being moved to the front\n const existing = this.el.querySelector(`[data-emoji=\"${emoji.emoji}\"]`);\n if (existing) {\n this.el.removeChild(existing);\n this.emojis = this.emojis.filter(e => e !== emoji);\n }\n \n // Add the new emoji to the beginning of the list\n const newView = this.viewFactory.create(EmojiView, { emoji });\n this.el.insertBefore(newView.renderSync(), this.el.firstChild);\n this.emojis = [\n emoji,\n ...this.emojis.filter(e => e !== emoji)\n ];\n\n // Prune the list to the maximum length\n if (this.emojis.length > this.options.maxRecents) {\n this.emojis = this.emojis.slice(0, this.options.maxRecents);\n const excess = this.el.childElementCount - this.options.maxRecents;\n for (let i = 0; i < excess; i++) {\n if (this.el.lastElementChild) {\n this.el.removeChild(this.el.lastElementChild);\n }\n }\n }\n }\n}","import { Template } from '../Template';\n\nexport default new Template(({ emojiCount, classes, category, pickerId, icon, i18n }) => /* html */`\n <section class=\"${classes.emojiCategory}\" role=\"tabpanel\" aria-labelledby=\"${pickerId}-category-${category.key}\">\n <h3 data-category=\"${category.key}\" class=\"${classes.categoryName}\">\n <i data-icon=\"${icon}\"></i>\n ${i18n.get(`categories.${category.key}`, category.message || category.key)}\n </h3>\n <div data-empty=\"${emojiCount === 0}\" class=\"${classes.recentEmojis}\">\n <div data-view=\"emojis\" data-render=\"sync\"></div>\n </div>\n <div class=\"${classes.noRecents}\">\n ${i18n.get('recents.none')}\n </div>\n </section>\n`, { mode: 'async' });","import { View } from './view';\nimport { BaseEmojiCategory, classes } from './BaseEmojiCategory';\nimport { RecentEmojiContainer } from './RecentEmojiContainer';\nimport { Category, EmojiRecord } from '../types';\nimport { LazyLoader } from '../LazyLoader';\nimport { categoryIcons } from '../icons';\nimport template from './RecentEmojiCategory.template';\nimport { RecentsProvider } from '../recents/RecentsProvider';\n\ntype RecentEmojiCategoryOptions = {\n category: Category;\n provider: RecentsProvider;\n lazyLoader?: LazyLoader;\n};\nexport class RecentEmojiCategory extends BaseEmojiCategory {\n emojiContainer: RecentEmojiContainer;\n private provider: RecentsProvider;\n\n constructor({ category, lazyLoader, provider }: RecentEmojiCategoryOptions) {\n super({ category, showVariants: false, lazyLoader, template });\n this.provider = provider;\n }\n\n initialize() {\n this.uiElements = {\n ...this.baseUIElements,\n recents: View.byClass(classes.recentEmojis),\n };\n\n this.appEvents = {\n 'recent:add': this.addRecent\n };\n\n super.initialize();\n }\n\n async addRecent(recent: EmojiRecord) {\n await this.emojiContainer.addOrUpdate(recent);\n this.ui.recents.dataset.empty = 'false';\n }\n\n async render(): Promise<HTMLElement> {\n const recents = this.provider?.getRecents(this.options.maxRecents);\n\n this.emojiContainer = this.viewFactory.create(RecentEmojiContainer, {\n emojis: recents,\n showVariants: false,\n lazyLoader: this.lazyLoader,\n category: this.category.key\n });\n\n await super.render({\n category: this.category,\n emojis: this.emojiContainer,\n emojiCount: recents.length,\n icon: categoryIcons[this.category.key]\n });\n \n return this.el;\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classes, category, pickerId, icon, i18n }) => /* html */`\n <section class=\"${classes.emojiCategory}\" role=\"tabpanel\" aria-labelledby=\"${pickerId}-category-${category.key}\">\n <h3 data-category=\"${category.key}\" class=\"${classes.categoryName}\">\n <i data-icon=\"${icon}\"></i>\n ${i18n.get(`categories.${category.key}`, category.message || category.key)}\n </h3>\n <div data-view=\"emojis\" data-render=\"sync\"></div>\n </section>\n`);","import { EmojiContainer } from './EmojiContainer';\nimport { BaseEmojiCategory } from './BaseEmojiCategory';\nimport { LazyLoader } from '../LazyLoader';\nimport { Category } from '../types';\nimport { categoryIcons } from '../icons';\nimport template from './CustomEmojiCategory.template';\n\ntype CustomEmojiCategoryOptions = {\n category: Category;\n lazyLoader?: LazyLoader;\n}\nexport class CustomEmojiCategory extends BaseEmojiCategory {\n constructor({ category, lazyLoader }: CustomEmojiCategoryOptions) {\n super({ template, showVariants: false, lazyLoader, category})\n }\n\n initialize() {\n this.uiElements = { ...this.baseUIElements };\n super.initialize();\n }\n\n async render(): Promise<HTMLElement> {\n this.emojiContainer = this.viewFactory.create(EmojiContainer, {\n emojis: this.customEmojis,\n showVariants: this.showVariants,\n lazyLoader: this.lazyLoader,\n category: this.category.key\n });\n\n return super.render({\n category: this.category,\n emojis: this.emojiContainer,\n emojiCount: this.customEmojis.length,\n icon: categoryIcons[this.category.key]\n });\n }\n}","type Callback = () => void;\n\nexport class LazyLoader {\n private elements: Map<Element, Callback> = new Map();\n\n lazyLoad(placeholder: HTMLElement, callback: Callback): HTMLElement {\n this.elements.set(placeholder, callback);\n return placeholder;\n }\n\n observe(root: HTMLElement): void {\n if (window.IntersectionObserver) {\n const observer = new IntersectionObserver(\n entries => {\n entries\n .filter(entry => entry.intersectionRatio > 0)\n .map(entry => entry.target)\n .forEach(element => {\n const callback = this.elements.get(element);\n callback?.();\n observer.unobserve(element);\n });\n },\n {\n root\n }\n );\n\n this.elements.forEach((callback, element) => {\n observer.observe(element);\n });\n } else {\n this.elements.forEach(callback => {\n callback();\n });\n }\n }\n}\n","import { View } from './view';\nimport { CategoryTabs } from './CategoryTabs';\nimport { EmojiCategory } from './EmojiCategory';\nimport { RecentEmojiCategory } from './RecentEmojiCategory';\nimport { CustomEmojiCategory } from './CustomEmojiCategory';\nimport { getPrefixedClasses, throttle } from '../util';\nimport { LazyLoader } from '../LazyLoader';\nimport { Category, CategoryKey, EmojiFocusTarget } from '../types';\nimport { Template } from '../Template';\n\nimport { SetActiveOptions } from './CategoryTab';\nconst classes = getPrefixedClasses('emojiArea');\n\nconst template = new Template(({ classes }) => /* html */`\n <div class=\"${classes.emojiArea}\">\n <div data-placeholder=\"emojis\"></div>\n </div>\n`, { mode: 'async' });\n\nconst categoryClasses = {\n recents: RecentEmojiCategory,\n custom: CustomEmojiCategory\n};\n\nfunction getCategoryClass(category: Category) {\n return categoryClasses[category.key] || EmojiCategory;\n}\n\ntype ScrollListenerState = \n 'active' | // handle scroll events\n 'suspend' | // don't handle scroll events\n 'resume'; // skip current scroll event then re-enable for the next one\n\ntype CategoryFocusTarget = 'button' | EmojiFocusTarget;\n\ntype SelectCategoryOptions = {\n focus?: CategoryFocusTarget;\n scroll?: 'animate' | 'jump';\n performFocus?: boolean;\n};\n\nfunction getFocusTarget(focus: CategoryFocusTarget | undefined): EmojiFocusTarget | undefined {\n if (!focus || focus === 'button') {\n return {\n row: 'first',\n offset: 0\n };\n }\n\n return focus;\n}\n\ntype EmojiAreaOptions = {\n categoryTabs?: CategoryTabs;\n categories: Category[];\n emojiVersion: number;\n}\n\n/**\n * The EmojiArea is the main view of the picker, it contains all the categories and their emojis inside\n * a main scrollable area.\n */\nexport class EmojiArea extends View {\n private selectedCategory = 0;\n private categoryTabs?: CategoryTabs;\n private categories: Category[];\n private emojiVersion: number;\n\n private observer: ResizeObserver;\n\n private scrollListenerState: ScrollListenerState = 'active';\n private lazyLoader = new LazyLoader();\n\n emojiCategories: EmojiCategory[];\n\n constructor({ categoryTabs, categories, emojiVersion }: EmojiAreaOptions) {\n super({ template, classes });\n\n this.categoryTabs = categoryTabs;\n this.categories = categories;\n this.emojiVersion = emojiVersion;\n\n this.handleScroll = throttle(this.handleScroll.bind(this), 100);\n }\n\n initialize() {\n this.appEvents = { \n 'category:select': this.handleCategorySelect,\n 'category:previous': this.focusPreviousCategory,\n 'category:next': this.focusNextCategory,\n 'focus:change': this.updateFocusedCategory\n };\n this.uiElements = { emojis: View.byClass(classes.emojiArea) };\n this.uiEvents = [ View.uiEvent('scroll', this.handleScroll) ]\n\n super.initialize();\n }\n\n get focusableEmoji(): HTMLElement {\n return this.el.querySelector<HTMLElement>('[tabindex=\"0\"]') as HTMLElement;\n }\n\n async render(): Promise<HTMLElement> {\n this.emojiCategories = this.categories.map(this.createCategory, this);\n\n const categoryEmojiElements = {};\n this.categories.forEach((category, index) => {\n categoryEmojiElements[`emojis-${category.key}`] = this.emojiCategories[index];\n });\n\n await super.render({\n emojis: await Promise.all(this.emojiCategories.map(category => category.render()))\n });\n\n this.lazyLoader.observe(this.el);\n\n return this.el;\n }\n\n destroy() {\n super.destroy();\n this.emojiCategories.forEach(category => {\n this.observer?.unobserve(category.el);\n category.destroy();\n });\n }\n\n private handleCategorySelect(category: CategoryKey, options?: SelectCategoryOptions) {\n\n // On touch devices, if there is a \"momentum scroll\" in progress, we need to stop it so we can jump to the selected category\n this.el.style.overflow = 'hidden';\n this.selectCategory(category, options);\n this.el.style.overflow = 'auto';\n }\n\n private createCategory(category: Category): EmojiCategory {\n const Category = getCategoryClass(category);\n\n return this.viewFactory.create(Category, {\n category,\n showVariants: true,\n lazyLoader: this.lazyLoader,\n emojiVersion: this.emojiVersion,\n provider: this.options.recentsProvider\n });\n }\n\n private determineInitialCategory() {\n if (this.options.initialCategory) {\n if (this.categories.find(c => c.key === this.options.initialCategory)) {\n return this.options.initialCategory;\n }\n }\n\n return this.categories.find(c => c.key !== 'recents')?.key;\n }\n\n private determineFocusTarget(category) {\n const categoryView = this.emojiCategories.find(c => c.category.key === category);\n if (this.options.initialEmoji && categoryView?.el.querySelector(`[data-emoji=\"${this.options.initialEmoji}\"]`)) {\n return this.options.initialEmoji;\n }\n\n return 'button'\n }\n\n reset(performFocus = true): void {\n this.events.emit('preview:hide');\n\n const category = this.determineInitialCategory();\n if (category) {\n this.selectCategory(category, { \n focus: this.determineFocusTarget(category),\n performFocus, \n scroll: 'jump' \n });\n\n this.selectedCategory = this.getCategoryIndex(category);\n }\n }\n\n /**\n * Given a category key, returns the index of the category in the categories array.\n * @param key \n * @returns \n */\n private getCategoryIndex(key: CategoryKey): number {\n return this.categories.findIndex(category => category.key === key);\n }\n\n private focusPreviousCategory(column: number) {\n if (this.selectedCategory > 0) {\n this.focusCategory(this.selectedCategory - 1, { row: 'last', offset: column ?? this.options.emojisPerRow });\n }\n }\n\n private focusNextCategory(column: number) {\n if (this.selectedCategory < this.categories.length - 1) {\n this.focusCategory(this.selectedCategory + 1, { row: 'first', offset: column ?? 0 });\n }\n }\n\n /**\n * Changes the focused category.\n * \n * @param category the index of the category\n * @param focusTarget the desired focus target in the new category\n */\n private focusCategory(category: number, focusTarget: CategoryFocusTarget) {\n this.selectCategory(category, {\n focus: focusTarget,\n performFocus: true\n });\n }\n\n /**\n * Changes the current category, optionally animating, scrolling, and changing the focus.\n * \n * Supported options are:\n * - focus: The target element that should become focusable\n * - performFocus: Whether or not to actually focus the new focusable element\n * - scroll: Whether the scrolling should be immediate (jump), animated (animate), or none (undefined).\n * - animate: Whether or not to animate active indicator under the button.\n * \n * @param category The key or index of the category to select.\n * @param options The options for the category selection.\n */\n private async selectCategory(category: CategoryKey | number, options: SelectCategoryOptions = {}): Promise<void> {\n this.scrollListenerState = 'suspend';\n const { focus, performFocus, scroll } = {\n performFocus: false,\n ...options\n };\n\n this.emojiCategories[this.selectedCategory].setActive(false);\n\n const categoryIndex = this.selectedCategory = typeof category === 'number' ? category : this.getCategoryIndex(category);\n this.categoryTabs?.setActiveTab(this.selectedCategory, {\n performFocus,\n scroll: focus === 'button'\n })\n // this.categoryTabs?.setActiveTab(this.selectedCategory, performFocus, focus === 'button');\n const targetPosition = this.emojiCategories[categoryIndex].el.offsetTop;\n this.emojiCategories[categoryIndex].setActive(true, getFocusTarget(focus), focus !== 'button' && performFocus);\n\n if (scroll) {\n this.el.scrollTop = targetPosition;\n }\n\n this.scrollListenerState = 'resume';\n }\n\n /**\n * Updates the category tabs to reflect the currently focused category.\n * @param category the key of the currently focused category\n */\n private updateFocusedCategory(category: CategoryKey) {\n // Do nothing if this is already the focused category\n if (this.categories[this.selectedCategory].key === category) {\n return;\n }\n\n this.scrollListenerState = 'suspend';\n this.selectedCategory = this.getCategoryIndex(category);\n this.categoryTabs?.setActiveTab(this.selectedCategory, {\n changeFocusable: false,\n performFocus: false\n });\n this.scrollListenerState = 'resume';\n }\n\n /**\n * On scroll, checks the new scroll position and highlights a new category if necessary.\n */\n handleScroll(): void {\n // Do nothing if we are in the 'suspend' state or if category tabs are disabled.\n if (this.scrollListenerState === 'suspend' || !this.categoryTabs) {\n return;\n }\n\n // If we are in the 'resume' state, don't handle the scroll but re-enable the listener for the\n // next scroll event.\n if (this.scrollListenerState === 'resume') {\n this.scrollListenerState = 'active';\n return;\n }\n\n const currentPosition = this.el.scrollTop;\n const maxScroll = this.el.scrollHeight - this.el.offsetHeight; \n\n const targetCategory = this.emojiCategories.findIndex((category: EmojiCategory, index: number) => {\n return currentPosition < (this.emojiCategories[index + 1])?.el.offsetTop;\n });\n\n const options: SetActiveOptions = {\n changeFocusable: false,\n performFocus: false,\n scroll: false\n };\n\n if (currentPosition === 0) {\n this.categoryTabs.setActiveTab(0, options);\n } else if (Math.floor(currentPosition) === Math.floor(maxScroll) || targetCategory < 0) {\n this.categoryTabs.setActiveTab(this.categories.length - 1, options);\n } else {\n this.categoryTabs.setActiveTab(targetCategory, options);\n }\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classList, classes, icon, message }) => /* html */`\n<div class=\"${classList}\" role=\"alert\">\n <div class=\"${classes.iconContainer}\"><i data-size=\"10x\" data-icon=\"${icon}\"></i></div>\n <h3 class=\"${classes.title}\">${message}</h3>\n</div>\n`);\n","import { View } from './view';\nimport { Template } from '../Template';\nimport errorTemplate from './ErrorMessage.template';\nimport { getPrefixedClasses } from '../util';\n\ntype ErrorMessageOptions = {\n message: string;\n icon?: string;\n template?: Template;\n className?: string;\n};\n\nconst classes = getPrefixedClasses('error', 'iconContainer', 'title');\n\nexport class ErrorMessage extends View {\n private message: string;\n private icon: string;\n private className?: string;\n\n constructor({ message, icon = 'warning', template = errorTemplate, className }: ErrorMessageOptions) {\n super({ template, classes });\n\n this.message = message;\n this.icon = icon;\n this.className = className;\n }\n\n renderSync() {\n const classList = [classes.error, this.className].join(' ').trim();\n return super.renderSync({ message: this.message, icon: this.icon, classList });\n }\n}","import { Template } from '../Template';\n\nexport default new Template(({ classList, classes, icon, i18n, message }) => /* html */`\n <div class=\"${classList}\" role=\"alert\">\n <div class=\"${classes.icon}\"><i data-size=\"10x\" data-icon=\"${icon}\"></i></div>\n <h3 class=\"${classes.title}\">${message}</h3>\n <button type=\"button\">${i18n.get('retry')}</button>\n </div>\n`);\n","import { View } from './view';\nimport { ErrorMessage } from './ErrorMessage';\nimport { initDatabase } from '../data/emojiData';\n\nimport template from './DataError.template';\nimport { getPrefixedClasses } from '../util';\n\nconst classes = getPrefixedClasses('dataError');\n\ntype DataErrorOptions = {\n message: string;\n};\n\nexport class DataError extends ErrorMessage {\n constructor({ message }: DataErrorOptions) {\n super({ message, template, className: classes.dataError });\n }\n\n initialize() {\n this.uiElements = { retryButton: 'button' };\n this.uiEvents = [View.childEvent('retryButton', 'click', this.onRetry)];\n\n super.initialize();\n }\n\n private async onRetry() {\n if (this.emojiData) {\n await this.emojiData.delete();\n } else {\n await this.options.dataStore.deleteDatabase(this.options.locale);\n }\n\n this.events.emit('reinitialize');\n const db = await initDatabase(this.options.locale, this.options.dataStore, this.options.messages, this.options.emojiData, this.emojiData);\n this.viewFactory.setEmojiData(db);\n this.events.emit('data:ready', db);\n }\n}\n","import { View } from './view';\nimport { EmojiRecord } from '../types';\n\nimport { Template } from '../Template';\nimport { getPrefixedClasses, empty, replaceChildren } from '../util';\n\nconst classes = getPrefixedClasses(\n 'preview',\n 'previewEmoji',\n 'previewName',\n 'tagList',\n 'tag'\n);\n\nconst tagTemplate = new Template(({ classes, tag }) => /* html */`\n <li class=\"${classes.tag}\">${tag}</li>\n`);\n\nconst template = new Template(({ classes }) => /* html */`\n <div class=\"${classes.preview}\">\n <div class=\"${classes.previewEmoji}\"></div>\n <div class=\"${classes.previewName}\"></div>\n <ul class=\"${classes.tagList}\"></ul>\n </div>\n`);\n\nexport class EmojiPreview extends View {\n constructor() {\n super({ template, classes });\n }\n\n initialize() {\n this.uiElements = {\n emoji: View.byClass(classes.previewEmoji), \n name: View.byClass(classes.previewName),\n tagList: View.byClass(classes.tagList)\n };\n\n this.appEvents = {\n 'preview:show': this.showPreview,\n 'preview:hide': this.hidePreview\n };\n\n super.initialize();\n }\n\n private showPreview(emoji: EmojiRecord, content: HTMLElement) {\n replaceChildren(this.ui.emoji, content);\n this.ui.name.textContent = emoji.label;\n if (emoji.tags) {\n this.ui.tagList.style.display = 'flex';\n const tags = emoji.tags.map(tag => tagTemplate.renderSync({ tag, classes }) as HTMLElement);\n replaceChildren(this.ui.tagList, ...tags);\n }\n }\n\n private hidePreview() {\n empty(this.ui.emoji);\n empty(this.ui.name);\n empty(this.ui.tagList);\n }\n}\n","import { Template } from '../Template';\n\nexport const clearSearchButtonTemplate = new Template<HTMLButtonElement>(({ classes, i18n }) => /* html */`\n <button title=\"${i18n.get('search.clear')}\" class=\"${classes.clearSearchButton}\">\n <i data-icon=\"xmark\"></i>\n </button>\n`);\n\nexport const searchTemplate = new Template(({ classes, i18n }) => /* html */`\n<div class=\"${classes.searchContainer}\">\n <input class=\"${classes.searchField}\" placeholder=\"${i18n.get('search')}\">\n <span class=\"${classes.searchAccessory}\"></span>\n</div>\n`, { mode: 'async' });","import { View } from './view';\n\nimport { icon } from '../icons';\n\nimport { EmojiContainer } from './EmojiContainer';\nimport { ErrorMessage } from './ErrorMessage';\n\nimport { debounce, getPrefixedClasses, replaceChildren } from '../util';\nimport { LazyLoader } from '../LazyLoader';\nimport { Category } from '../types';\n\nimport { clearSearchButtonTemplate, searchTemplate } from './Search.template';\n\ntype SearchOptions = {\n categories: Category[];\n emojiVersion: number;\n};\n\nconst classes = getPrefixedClasses(\n 'searchContainer',\n 'searchField',\n 'clearButton',\n 'searchAccessory',\n 'clearSearchButton',\n 'notFound'\n);\n\nexport class Search extends View {\n private categories: Category[];\n private emojiVersion: number;\n\n private searchIcon: Element;\n private clearSearchButton: HTMLButtonElement;\n private resultsContainer: EmojiContainer | null;\n private notFoundMessage: ErrorMessage;\n private errorMessage: ErrorMessage;\n\n searchField: HTMLInputElement;\n\n constructor({ categories, emojiVersion }: SearchOptions) {\n super({ template: searchTemplate, classes });\n\n this.categories = categories.filter((category: Category) => category.key !== 'recents');\n this.emojiVersion = emojiVersion;\n\n this.search = debounce(this.search.bind(this), 100);\n }\n\n initialize() {\n this.uiElements = {\n searchField: View.byClass(classes.searchField),\n searchAccessory: View.byClass(classes.searchAccessory)\n };\n\n this.uiEvents = [\n View.childEvent('searchField', 'keydown', this.onKeyDown),\n View.childEvent('searchField', 'input', this.onSearchInput)\n ];\n\n super.initialize();\n }\n\n async render(): Promise<HTMLElement> {\n await super.render();\n\n this.searchIcon = icon('search');\n\n this.notFoundMessage = this.viewFactory.create(ErrorMessage, { \n message: this.i18n.get('search.notFound'),\n className: classes.notFound,\n icon: 'sad' \n });\n this.notFoundMessage.renderSync();\n\n this.errorMessage = this.viewFactory.create(ErrorMessage, { message: this.i18n.get('search.error') });\n this.errorMessage.renderSync();\n\n this.clearSearchButton = clearSearchButtonTemplate.render({\n classes,\n i18n: this.i18n\n }) as HTMLButtonElement;\n\n this.clearSearchButton.addEventListener('click', (event: MouseEvent) => this.onClearSearch(event));\n\n this.searchField = this.ui.searchField as HTMLInputElement;\n\n this.showSearchIcon();\n\n return this.el;\n }\n\n private showSearchIcon() {\n this.showSearchAccessory(this.searchIcon);\n }\n\n private showClearSearchButton() {\n this.showSearchAccessory(this.clearSearchButton);\n }\n\n private showSearchAccessory(accessory: Element) {\n replaceChildren(this.ui.searchAccessory, accessory);\n }\n\n clear(): void {\n (this.searchField as HTMLInputElement).value = '';\n this.showSearchIcon();\n }\n\n focus(): void {\n this.searchField.focus();\n }\n\n onClearSearch(event: Event): void {\n event.stopPropagation();\n\n this.searchField.value = '';\n this.resultsContainer?.destroy();\n this.resultsContainer = null;\n\n this.showSearchIcon();\n\n this.events.emit('content:show');\n this.searchField.focus();\n }\n\n handleResultsKeydown(event: KeyboardEvent): void {\n if (this.resultsContainer) {\n if (event.key === 'Escape') {\n this.onClearSearch(event);\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.searchField.value) {\n this.onClearSearch(event);\n } else if ((event.key === 'Enter' || event.key === 'ArrowDown') && this.resultsContainer) {\n event.preventDefault();\n this.resultsContainer.el.querySelector<HTMLElement>('[tabindex=\"0\"]')?.focus();\n }\n }\n\n onSearchInput(event: Event): void {\n if (this.searchField.value) {\n this.showClearSearchButton();\n this.search();\n } else {\n this.onClearSearch(event);\n }\n }\n\n async search() {\n if (!this.searchField.value) {\n return;\n }\n\n try {\n const searchResults = await this.emojiData.searchEmojis(\n this.searchField.value,\n this.customEmojis, \n this.emojiVersion,\n this.categories\n );\n\n this.events.emit('preview:hide');\n\n if (searchResults.length) {\n const lazyLoader = new LazyLoader();\n this.resultsContainer = this.viewFactory.create(EmojiContainer, {\n emojis: searchResults,\n fullHeight: true,\n showVariants: true,\n lazyLoader\n });\n\n this.resultsContainer.renderSync();\n if (this.resultsContainer?.el) {\n lazyLoader.observe(this.resultsContainer.el);\n this.resultsContainer.setActive(true, { row: 0, offset: 0}, false);\n\n this.resultsContainer.el.addEventListener('keydown', event => this.handleResultsKeydown(event));\n\n this.events.emit('content:show', this.resultsContainer);\n }\n } else {\n this.events.emit('content:show', this.notFoundMessage);\n }\n } catch (error) {\n this.events.emit('content:show', this.errorMessage);\n }\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classes }) => /* html */`\n <div class=\"${classes.variantOverlay}\">\n <div class=\"${classes.variantPopup}\">\n <div data-view=\"emojis\" data-render=\"sync\"></div>\n </div>\n </div>\n`);\n","import { View } from './view';\n\nimport { EmojiContainer } from './EmojiContainer';\nimport { EmojiRecord } from '../types';\nimport { animate, getPrefixedClasses } from '../util';\nimport { FocusTrap } from '../focusTrap';\n\nimport template from './VariantPopup.template';\n\nconst classes = getPrefixedClasses(\n 'variantOverlay',\n 'variantPopup'\n);\n\ntype VariantPopupOptions = {\n emoji: EmojiRecord;\n parent: HTMLElement;\n};\n\nconst animationOptions = {\n easing: 'ease-in-out',\n duration: 250,\n fill: 'both' as FillMode\n};\n\nconst overlayAnimation = {\n opacity: [0, 1]\n};\n\nconst popupAnimation = {\n opacity: [0, 1],\n transform: ['scale3d(0.8, 0.8, 0.8)', 'scale3d(1, 1, 1)']\n};\n\nexport class VariantPopup extends View {\n private focusedEmojiIndex = 0;\n\n private emoji: EmojiRecord;\n private renderedEmojis: HTMLElement[];\n\n private emojiContainer: EmojiContainer;\n private focusTrap = new FocusTrap();\n\n constructor({ emoji, parent }: VariantPopupOptions) {\n super({ template, classes, parent });\n\n this.emoji = emoji;\n }\n\n initialize() {\n this.uiElements = {\n popup: View.byClass(classes.variantPopup)\n };\n\n this.uiEvents = [\n View.uiEvent('click', this.handleClick),\n View.uiEvent('keydown', this.handleKeydown)\n ]\n\n super.initialize();\n }\n\n animateShow = () => \n Promise.all([\n animate(this.el, overlayAnimation, animationOptions, this.options),\n animate(this.ui.popup, popupAnimation, animationOptions, this.options)\n ]);\n\n animateHide() {\n const hideOptions: KeyframeAnimationOptions = { ...animationOptions, direction: 'reverse' };\n\n return Promise.all([\n animate(this.el, overlayAnimation, hideOptions, this.options),\n animate(this.ui.popup, popupAnimation, hideOptions, this.options),\n ]);\n }\n\n private async hide() {\n await this.animateHide();\n this.events.emit('variantPopup:hide');\n }\n\n private handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.hide();\n event.stopPropagation();\n }\n }\n\n private handleClick(event): void {\n if (!this.ui.popup.contains(event.target as Node)) {\n this.hide();\n }\n }\n\n getEmoji(index: number): Element {\n return this.renderedEmojis[index];\n }\n\n setFocusedEmoji(newIndex: number): void {\n const currentFocusedEmoji = this.getEmoji(this.focusedEmojiIndex) as HTMLElement;\n currentFocusedEmoji.tabIndex = -1;\n\n this.focusedEmojiIndex = newIndex;\n const newFocusedEmoji = this.getEmoji(this.focusedEmojiIndex) as HTMLElement;\n newFocusedEmoji.tabIndex = 0;\n newFocusedEmoji.focus();\n }\n\n destroy() {\n this.emojiContainer.destroy();\n this.focusTrap.deactivate();\n super.destroy();\n }\n\n renderSync(): HTMLElement {\n const baseEmoji = {\n ...this.emoji,\n skins: null\n };\n\n const variants = (this.emoji.skins || []).map(variant => ({\n ...variant,\n label: this.emoji.label,\n tags: this.emoji.tags\n }));\n\n const emojis = [baseEmoji, ...variants];\n this.emojiContainer = this.viewFactory.create(EmojiContainer, {\n emojis,\n preview: false\n })\n\n super.renderSync({ emojis: this.emojiContainer });\n\n if (emojis.length < this.options.emojisPerRow) {\n this.el.style.setProperty('--emojis-per-row', emojis.length.toString());\n }\n\n return this.el;\n }\n\n activate() {\n this.emojiContainer.setActive(true, { row: 0, offset: 0}, true);\n this.focusTrap.activate(this.el);\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classes, i18n, category, pickerId, icon }) => /* html */`\n<li class=\"${classes.categoryTab}\">\n <button\n aria-selected=\"false\"\n role=\"tab\"\n class=\"${classes.categoryButton}\"\n tabindex=\"-1\"\n title=\"${i18n.get(`categories.${category.key}`, category.message || category.key)}\"\n type=\"button\"\n data-category=\"${category.key}\"\n id=\"${pickerId}-category-${category.key}\"\n >\n <i data-icon=\"${icon}\"></i>\n</li>\n`);\n","import { View } from './view';\n\nimport { Category } from '../types';\n\nimport template from './CategoryTab.template';\nimport { getPrefixedClasses } from '../util';\n\n\nconst classes = getPrefixedClasses(\n 'categoryTab', \n 'categoryTabActive', \n 'categoryButton'\n);\n\ntype CategoryTabOptions = {\n category: Category;\n icon: Element;\n}\n\nexport type SetActiveOptions = {\n changeFocusable?: boolean;\n performFocus?: boolean;\n scroll?: boolean;\n}\n\nexport class CategoryTab extends View {\n category: Category;\n private icon: Element;\n \n isActive = false;\n\n constructor({ category, icon }: CategoryTabOptions) {\n super({ template, classes });\n\n this.category = category;\n this.icon = icon;\n }\n\n initialize() {\n this.uiElements = {\n button: View.byClass(classes.categoryButton)\n }\n\n this.uiEvents = [\n View.childEvent('button', 'click', this.selectCategory),\n View.childEvent('button', 'focus', this.selectCategory)\n ];\n\n super.initialize();\n }\n\n renderSync(): HTMLElement {\n super.renderSync({\n category: this.category,\n icon: this.icon\n });\n\n this.ui.button.ariaSelected = 'false';\n\n return this.el;\n }\n\n /**\n * Sets the active state of the tab.\n * \n * @param isActive The new active state\n * @param changeFocus Whether or not to change the active focusable element to the tab button\n * @param scroll Whether or not to scroll to the new category\n */\n setActive(active: boolean, options: SetActiveOptions = {}) {\n const { changeFocusable, performFocus, scroll } = {\n changeFocusable: true,\n performFocus: true,\n scroll: true,\n ...options\n };\n\n this.el.classList.toggle(classes.categoryTabActive, active);\n\n if (changeFocusable) {\n this.ui.button.tabIndex = active ? 0 : -1;\n this.ui.button.ariaSelected = active.toString();\n }\n\n if (active && performFocus) {\n this.ui.button.focus();\n\n if (scroll) {\n this.events.emit('category:select', this.category.key, { scroll: 'animate', focus: 'button', performFocus: false });\n }\n }\n\n this.isActive = active;\n }\n\n private selectCategory() {\n if (!this.isActive) {\n this.events.emit('category:select', this.category.key, { scroll: 'animate', focus: 'button', performFocus: true });\n }\n }\n}\n","import { Template } from '../Template';\n\nexport default new Template(({ classes }) => /* html */`\n <div class=\"${classes.categoryButtonsContainer}\">\n <ul role=\"tablist\" class=\"${classes.categoryButtons}\">\n <div data-placeholder=\"tabs\"></div>\n </ul>\n </div>\n`);","import { View } from './view';\n\nimport { CategoryTab, SetActiveOptions } from './CategoryTab';\nimport { categoryIcons } from '../icons';\nimport { Category } from '../types';\n\nimport template from './CategoryTabs.template';\nimport { getPrefixedClasses } from '../util';\n\ntype CategoryTabsOptions = {\n categories: Category[];\n}\n\nconst classes = getPrefixedClasses('categoryButtons', 'categoryButtonsContainer');\n\nexport class CategoryTabs extends View {\n private categories: Category[];\n private tabViews: CategoryTab[];\n private activeCategoryIndex = 0;\n\n constructor({ categories }: CategoryTabsOptions) {\n super({ template, classes });\n\n this.categories = categories;\n }\n\n initialize() {\n this.keyBindings = {\n ArrowLeft: this.stepSelectedTab(-1),\n ArrowRight: this.stepSelectedTab(1)\n };\n\n this.uiEvents = [\n View.uiEvent('scroll', this.checkOverflow)\n ];\n\n super.initialize();\n }\n\n checkOverflow() {\n // Check the difference to account for fractional pixels in the scroll position\n const hasOverflowRight = Math.abs(this.el.scrollLeft - (this.el.scrollWidth - this.el.offsetWidth)) > 1;\n const hasOverflowLeft = this.el.scrollLeft > 0;\n\n this.el.className = 'categoryButtonsContainer';\n if (hasOverflowLeft && hasOverflowRight) {\n this.el.classList.add('has-overflow-both');\n } else if (hasOverflowLeft) {\n this.el.classList.add('has-overflow-left');\n } else if (hasOverflowRight) {\n this.el.classList.add('has-overflow-right');\n }\n }\n\n renderSync(): HTMLElement {\n this.tabViews = this.categories.map(category => \n this.viewFactory.create(CategoryTab, { category, icon: categoryIcons[category.key] }));\n \n super.renderSync({\n tabs: this.tabViews.map(view => view.renderSync())\n });\n\n return this.el;\n }\n\n get currentCategory(): Category {\n return this.categories[this.activeCategoryIndex];\n }\n\n get currentTabView(): CategoryTab {\n return this.tabViews[this.activeCategoryIndex];\n }\n\n setActiveTab(index: number, options: SetActiveOptions = {}): void {\n this.checkOverflow();\n\n const oldCategory = this.currentTabView;\n const newCategory = this.tabViews[index];\n\n oldCategory.setActive(false, options);\n newCategory.setActive(true, options);\n this.activeCategoryIndex = index;\n }\n\n private getTargetCategory(index: number): number {\n if (index < 0) {\n return this.categories.length - 1;\n }\n\n if (index >= this.categories.length) {\n return 0;\n }\n\n return index;\n }\n \n private stepSelectedTab(step: number) {\n return () => {\n const newIndex = this.activeCategoryIndex + step;\n this.setActiveTab(this.getTargetCategory(newIndex), {\n changeFocusable: true,\n performFocus: true\n });\n };\n }\n}\n","// Representative emojis for each emoji version. If a given emoji is supported,\n// we assume the system supports that emoji version.\nconst TEST_EMOJIS = [\n { version: 15, emoji: String.fromCodePoint(0x1FAE8) },\n { version: 14, emoji: String.fromCodePoint(0x1F6DD) },\n { version: 13, emoji: String.fromCodePoint(0x1FAC1) },\n { version: 12, emoji: String.fromCodePoint(0x1F9A9) },\n { version: 11, emoji: String.fromCodePoint(0x1F9B7) },\n { version: 5, emoji: String.fromCodePoint(0x1F92A) }, \n { version: 4, emoji: String.fromCodePoint(0x2695) },\n { version: 3, emoji: String.fromCodePoint(0x1F922) },\n { version: 2, emoji: String.fromCodePoint(0x1F5E8) },\n { version: 1, emoji: String.fromCodePoint(0x1F600) }\n];\n\n/**\n * Determines the latest emoji version that is supported by the browser.\n * @returns the supported emoji version number\n */\nexport function determineEmojiVersion() {\n const supportedEmoji = TEST_EMOJIS.find(emoji => supportsEmoji(emoji.emoji));\n return supportedEmoji?.version ?? 1;\n}\n\n/**\n * Checks if the given emoji is rendered correctly by the browser.\n * \n * @param emoji the emoji to attempt to render\n * @returns true if the emoji renders correctly, false otherwise\n */\nfunction supportsEmoji(emoji: string) {\n const context = document.createElement('canvas').getContext('2d');\n\n if (context) {\n context.textBaseline = 'top';\n context.font = '32px Arial';\n context.fillText(emoji, 0, 0);\n\n return context.getImageData(16, 16, 1, 1).data[0] !== 0;\n }\n}\n","import { Template } from '../Template';\n\nfunction repeat(count, content) {\n return Array.from({ length: count }, () => content).join('');\n}\n\nfunction header({ showHeader, classes }) {\n return showHeader ? /* html */`\n <header class=\"${classes.header}\">\n <div data-view=\"search\"></div>\n <div data-view=\"categoryTabs\" data-render=\"sync\"></div>\n </header>\n ` : '';\n}\n\nfunction renderPicker(data) {\n const { classes, theme, className = ''} = data;\n return /* html */`\n <div class=\"picmo__picker ${classes.picker} ${theme} ${className}\">\n ${header(data)}\n <div class=\"${classes.content}\">\n <div data-view=\"emojiArea\"></div>\n </div>\n <div data-view=\"preview\"></div>\n </div>\n `;\n}\n\nfunction renderPlaceholder(data) {\n const { emojiCount, classes, theme, className, categoryCount } = data;\n\n const search = ({ showSearch, classes }) => showSearch ? /* html */`\n <div class=\"${classes.searchSkeleton}\">\n <div class=\"${classes.searchInput} ${classes.placeholder}\"></div>\n </div>\n ` : '';\n\n const categoryTabs = ({ showCategoryTabs, classes }) => showCategoryTabs ? /* html */`\n <div class=\"${classes.categoryTabsSkeleton}\">\n ${repeat(categoryCount, /* html */`<div class=\"${classes.placeholder} ${classes.categoryTab}\"></div>`)}\n </div>\n ` : '';\n\n const header = ({ showHeader, classes }) => showHeader ? /* html */`\n <header class=\"${classes.headerSkeleton}\">\n ${search(data)}\n ${categoryTabs(data)}\n </header>\n ` : '';\n\n const preview = ({ showPreview, classes }) => showPreview ? /* html */`\n <div class=\"${classes.previewSkeleton}\">\n <div class=\"${classes.placeholder} ${classes.previewEmoji}\"></div>\n <div class=\"${classes.placeholder} ${classes.previewName}\"></div>\n <ul class=\"${classes.tagList}\">\n ${repeat(3, /* html */`<li class=\"${classes.placeholder} ${classes.tag}\"></li>`)}\n </ul>\n </div>\n ` : '';\n\n return /* html */`\n <div class=\"picmo__picker ${classes.skeleton} ${classes.picker} ${theme} ${className}\">\n ${header(data)}\n <div class=\"${classes.contentSkeleton}\">\n <div class=\"${classes.placeholder} ${classes.categoryName}\"></div>\n <div class=\"${classes.emojiGrid}\">\n ${repeat(emojiCount, /* html */`<div class=\"${classes.placeholder} ${classes.emoji}\"></div>`)}\n </div>\n </div>\n ${preview(data)}\n </div>\n `;\n}\n\nexport default new Template(data => {\n return data.isLoaded ? renderPicker(data) : renderPlaceholder(data);\n});\n","import { ExternalEvent, ExternalEvents } from '../ExternalEvents';\n\nimport { View } from './view';\nimport { EmojiArea } from './EmojiArea';\nimport { DataError } from './DataError';\nimport { EmojiPreview } from './Preview';\nimport { Search } from './Search';\nimport { VariantPopup } from './VariantPopup';\nimport { CategoryTabs } from './CategoryTabs';\nimport { setProvider } from '../recents';\nimport { DataStore } from '../data/DataStore';\nimport { EventCallback } from '../events';\n\nimport { determineEmojiVersion } from '../emojiSupport';\n\nimport { Category, EmojiRecord, UpdatableOptions } from '../types';\nimport { LATEST_EMOJI_VERSION } from 'emojibase';\n\nimport template from './EmojiPicker.template';\nimport { getPrefixedClasses, replaceChildren } from '../util';\n\nconst classes = getPrefixedClasses(\n 'picker',\n 'skeleton',\n 'placeholder',\n 'searchSkeleton',\n 'searchInput',\n 'categoryTabsSkeleton',\n 'headerSkeleton',\n 'categoryTab',\n 'contentSkeleton',\n 'categoryName',\n 'emojiGrid',\n 'emoji',\n 'previewSkeleton',\n 'previewEmoji',\n 'previewName',\n 'tagList',\n 'tag',\n 'overlay',\n 'content',\n 'fullHeight',\n 'pluginContainer',\n 'header'\n);\n\nconst variableNames = {\n emojisPerRow: '--emojis-per-row',\n visibleRows: '--row-count',\n emojiSize: '--emoji-size'\n};\n\n/**\n * The main emoji picker view. Contains the full picker UI and an event emitter to react to\n * emoji selection events.\n */\nexport class EmojiPicker extends View {\n pickerReady = false;\n\n private categories: Category[];\n\n private categoryTabs: CategoryTabs;\n private search: Search;\n private emojiArea: EmojiArea;\n private preview: EmojiPreview;\n private variantPopup: VariantPopup | null;\n private emojiVersion: number;\n\n private currentView: View;\n\n private externalEvents = new ExternalEvents();\n\n constructor() {\n super({ template, classes });\n }\n\n initialize() {\n this.uiElements = {\n pickerContent: View.byClass(classes.content),\n header: View.byClass(classes.header)\n };\n\n this.uiEvents = [\n View.uiEvent('keydown', this.handleKeyDown)\n ];\n\n this.appEvents = {\n error: this.onError,\n reinitialize: this.reinitialize,\n 'data:ready': this.onDataReady,\n 'content:show': this.showContent,\n 'variantPopup:hide': this.hideVariantPopup,\n 'emoji:select': this.selectEmoji\n };\n\n super.initialize();\n setProvider(this.options.recentsProvider);\n }\n\n /**\n * Destroys the picker when it is no longer needed.\n * After calling this method, the picker will no longer be usable.\n *\n * @returns a Promise that resolves when the destroy is complete.\n */\n destroy(): void {\n super.destroy();\n this.search?.destroy();\n this.emojiArea.destroy();\n this.categoryTabs?.destroy();\n this.events.removeAll();\n this.externalEvents.removeAll();\n }\n\n /**\n * Convenience method to clear the recents using the configured recents provider.\n */\n clearRecents() {\n this.options.recentsProvider.clear();\n }\n\n /**\n * Listens for a picker event.\n *\n * @param event The event to listen for\n * @param callback The callback to call when the event is triggered\n */\n addEventListener(event: ExternalEvent, callback: EventCallback) {\n this.externalEvents.on(event, callback);\n }\n\n /**\n * Removes a recent emoji from the picker.\n *\n * @param event The event to stop listening for\n * @param callback The previously bound event listener\n */\n removeEventListener(event: ExternalEvent, callback: EventCallback) {\n this.externalEvents.off(event, callback);\n }\n\n /**\n * Finishes setting up the picker view once the data is ready.\n * This will only be called if the emoji data is available and all\n * emoji picker views have been rendered.\n *\n * This is the last thing to happen before the emoji picker UI becomes visible.\n */\n initializePickerView() {\n if (this.pickerReady) {\n this.showContent();\n this.emojiArea.reset(false);\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const isShortcut = event.ctrlKey || event.metaKey;\n if (event.key === 's' && isShortcut && this.search) {\n event.preventDefault();\n this.search.focus();\n }\n }\n\n /**\n * Builds the three sections of the picker:\n *\n * - preview area (if enabled in options)\n * - search area (if enabled in options)\n * - emoji area (always shown)\n *\n * @returns an array containing the three child views. The preview and search\n * views are optional, and will be undefined if they are not enabled.\n */\n private buildChildViews(): [EmojiPreview, Search, EmojiArea, CategoryTabs] {\n if (this.options.showPreview) {\n this.preview = this.viewFactory.create(EmojiPreview);\n }\n\n if (this.options.showSearch) {\n this.search = this.viewFactory.create(Search, {\n categories: this.categories,\n emojiVersion: this.emojiVersion\n });\n }\n\n if (this.options.showCategoryTabs) {\n this.categoryTabs = this.viewFactory.create(CategoryTabs, {\n categories: this.categories\n });\n }\n\n this.currentView = this.emojiArea = this.viewFactory.create(EmojiArea, {\n categoryTabs: this.categoryTabs,\n categories: this.categories,\n emojiVersion: this.emojiVersion\n });\n\n return [this.preview, this.search, this.emojiArea, this.categoryTabs];\n }\n\n /**\n * Sets any CSS variables corresponding to options that were set.\n */\n private setStyleProperties() {\n if (!this.options.showSearch) {\n this.el.style.setProperty('--search-height-full', '0px');\n }\n\n if (!this.options.showCategoryTabs) {\n this.el.style.setProperty('--category-tabs-height', '0px');\n this.el.style.setProperty('--category-tabs-offset', '0px');\n }\n\n if (!this.options.showPreview) {\n this.el.style.setProperty('--emoji-preview-height-full', '0px');\n }\n\n Object.keys(variableNames).forEach(key => {\n if (this.options[key]) {\n this.el.style.setProperty(variableNames[key], this.options[key].toString());\n }\n });\n }\n\n private updateStyleProperty(option: string, value: any) {\n this.el.style.setProperty(variableNames[option], value.toString());\n }\n\n private reinitialize() {\n this.renderSync();\n }\n\n private onError(error: Error) {\n const errorView = this.viewFactory.createWithOptions({ data: false }, DataError, { message: this.i18n.get('error.load') });\n const height = this.el.offsetHeight || 375;\n this.el.style.height = `${height}px`;\n replaceChildren(this.el, errorView.renderSync());\n throw error;\n }\n\n /**\n * Called when the emoji database is ready to be used.\n *\n * This will replace the loader placeholder with the full picker UI.\n */\n private async onDataReady(db: DataStore) {\n // Save the current el so we can replace it in the DOM after the new render.\n const currentView = this.el;\n\n try {\n if (db) {\n this.emojiData = db;\n } else {\n await this.emojiDataPromise;\n }\n\n if (this.options.emojiVersion === 'auto') {\n this.emojiVersion = determineEmojiVersion() || parseFloat(LATEST_EMOJI_VERSION);\n } else {\n this.emojiVersion = this.options.emojiVersion;\n }\n\n this.categories = await this.emojiData.getCategories(this.options);\n\n const [preview, search, emojiArea, categoryTabs] = this.buildChildViews();\n\n await super.render({\n isLoaded: true,\n search,\n categoryTabs,\n emojiArea,\n preview,\n showHeader: Boolean(this.search || this.categoryTabs),\n theme: this.options.theme,\n className: this.options.className\n });\n\n this.el.style.setProperty('--category-count', this.categories.length.toString());\n\n this.pickerReady = true;\n\n currentView.replaceWith(this.el);\n this.setStyleProperties();\n this.initializePickerView();\n\n this.setInitialFocus();\n\n this.externalEvents.emit('data:ready');\n } catch (error) {\n this.events.emit('error', error);\n }\n }\n\n /**\n * Renders the picker.\n *\n * @returns the root element of the picker\n */\n renderSync(): HTMLElement {\n let categoryCount = this.options.categories?.length || 10;\n if (this.options.showRecents) {\n categoryCount += 1;\n }\n\n super.renderSync({\n isLoaded: false,\n theme: this.options.theme,\n className: this.options.className,\n showSearch: this.options.showSearch,\n showPreview: this.options.showPreview,\n showCategoryTabs: this.options.showCategoryTabs,\n showHeader: this.options.showSearch || this.options.showCategoryTabs,\n emojiCount: this.options.emojisPerRow * this.options.visibleRows,\n categoryCount\n });\n\n this.el.style.setProperty('--category-count', categoryCount.toString());\n\n if (!this.options.rootElement) {\n throw new Error('Picker must be given a root element via the rootElement option');\n }\n \n replaceChildren(this.options.rootElement, this.el);\n this.setStyleProperties();\n\n if (this.pickerReady) {\n this.initializePickerView();\n }\n\n return this.el;\n }\n\n /**\n * Determines what element, if any, should be automatically focused when the picker is rendered.\n * \n * @returns the focus target, or `null` if nothing should be focused\n */\n private getInitialFocusTarget() {\n if (typeof this.options.autoFocus !== 'undefined') {\n switch (this.options.autoFocus) {\n case 'emojis':\n return this.emojiArea.focusableEmoji;\n case 'search':\n return this.search;\n case 'auto':\n return this.search || this.emojiArea.focusableEmoji;\n default:\n return null;\n }\n }\n\n if (this.options.autoFocusSearch === true) {\n console.warn('options.autoFocusSearch is deprecated, please use options.focusTarget instead');\n return this.search;\n }\n }\n\n /**\n * Sets the initial autofocus, depending on options.\n */\n setInitialFocus() {\n if (!this.pickerReady) {\n return;\n }\n\n this.getInitialFocusTarget()?.focus();\n }\n\n /**\n * Resets the picker to its default, \"inactive\" state.\n */\n reset(performFocus = true) {\n if (this.pickerReady) {\n this.emojiArea.reset(performFocus);\n this.showContent(this.emojiArea);\n }\n\n this.search?.clear();\n this.hideVariantPopup();\n }\n\n /**\n * Shows content in the main picker content area.\n * If no View is specified, the built-in emoji area will be shown.\n *\n * The currently shown view will be removed from the DOM and destroyed.\n *\n * @param content The View to show\n */\n private showContent(content: View = this.emojiArea) {\n if (content === this.currentView) {\n return;\n }\n\n if (this.currentView !== this.emojiArea) {\n this.currentView?.destroy();\n }\n\n this.ui.pickerContent.classList.toggle(classes.fullHeight, content !== this.emojiArea);\n replaceChildren(this.ui.pickerContent, content.el);\n this.currentView = content;\n\n if (content === this.emojiArea) {\n this.emojiArea.reset();\n if (this.categoryTabs) {\n this.ui.header.appendChild(this.categoryTabs.el);\n }\n } else {\n this.categoryTabs?.el.remove();\n }\n }\n\n /**\n * Closes and destroys the variant popup.\n */\n private hideVariantPopup() {\n this.variantPopup?.destroy();\n }\n\n /**\n * Given a mouse event, determines if the event occurred on the picker or one of its components.\n *\n * @param event The mouse event\n * @returns true if the click should be treated as on the picker, false otherwise\n */\n isPickerClick(event: MouseEvent) {\n const clickedNode = event.target as Node;\n\n const isClickInsidePicker = this.el.contains(clickedNode);\n const isClickOnVariantPopup = this.variantPopup?.el?.contains(clickedNode);\n\n return isClickInsidePicker || isClickOnVariantPopup;\n }\n\n /**\n * Handles a click on an emoji.\n * @param emoji The emoji that was clicked\n * @returns a Promise that resolves when either the variant popup is shown or the emoji is rendered and emitted\n */\n private async selectEmoji({ emoji }: { emoji: EmojiRecord }): Promise<void> {\n // Show the variant popup if the emoji has variants\n if (emoji.skins?.length && this.options.showVariants && !this.isVariantPopupOpen) {\n this.showVariantPopup(emoji);\n } else {\n await this.variantPopup?.animateHide();\n this.events.emit('variantPopup:hide');\n await this.emitEmoji(emoji);\n }\n }\n\n private get isVariantPopupOpen() {\n return this.variantPopup && !this.variantPopup.isDestroyed;\n }\n\n /**\n * Shows the variant popup for an emoji.\n *\n * @param emoji The emoji whose variants are to be shown.\n * @returns a Promise that resolves when the popup is shown\n */\n private async showVariantPopup(emoji: EmojiRecord): Promise<void> {\n const currentFocus = document.activeElement as HTMLElement;\n this.events.once('variantPopup:hide', () => {\n currentFocus?.focus();\n });\n\n this.variantPopup = this.viewFactory.create(VariantPopup, { emoji, parent: this.el });\n this.el.appendChild(this.variantPopup.renderSync());\n this.variantPopup.activate();\n }\n\n /**\n * Renders an emoji, and emits a public emoji:select event with the rendered result.\n * @param emoji the emoji that was selected.\n */\n private async emitEmoji(emoji: EmojiRecord): Promise<void> {\n this.externalEvents.emit('emoji:select', await this.renderer.doEmit(emoji));\n this.options.recentsProvider.addOrUpdateRecent(emoji, this.options.maxRecents);\n this.events.emit('recent:add', emoji);\n }\n\n private updaters = {\n styleProperty: propertyName => value => this.el.style.setProperty(variableNames[propertyName], value.toString()),\n\n theme: theme => {\n const currentTheme = this.options.theme;\n const container = this.el.closest(`.${currentTheme}`)\n\n this.el.classList.remove(currentTheme);\n container?.classList.remove(currentTheme);\n\n this.el.classList.add(theme);\n container?.classList.add(theme);\n },\n\n className: className => {\n if (this.options.className) {\n this.el.classList.remove(this.options.className);\n }\n\n this.el.classList.add(className);\n },\n\n emojisPerRow: this.updateStyleProperty.bind(this, 'emojisPerRow'),\n emojiSize: this.updateStyleProperty.bind(this, 'emojiSize'),\n visibleRows: this.updateStyleProperty.bind(this, 'visibleRows')\n }\n\n updateOptions(options: UpdatableOptions) {\n Object.keys(options).forEach(option => {\n this.updaters[option](options[option]);\n });\n\n Object.assign(this.options, options);\n }\n}\n","import { AppEvent } from './AppEvents';\nimport { DataStore } from './data/DataStore';\nimport { Events } from './events';\nimport { Bundle } from './i18n/bundle';\nimport { Renderer } from './renderers/renderer';\nimport { PickerOptions, EmojiRecord } from './types';\nimport { View } from './views/view';\n\ntype ViewFactoryOptions = {\n data?: boolean;\n};\n\ntype DependencyMapping = {\n events: Events<AppEvent>;\n i18n: Bundle;\n renderer: Renderer;\n emojiData: Promise<DataStore>;\n options: PickerOptions;\n customEmojis: EmojiRecord[];\n pickerId: string;\n};\n\nexport type ViewConstructor<T extends View> = new (...args: any[]) => T;\nexport type ViewConstructorParameters<T extends View> = ConstructorParameters<ViewConstructor<T>>;\n\nexport class ViewFactory {\n private events: Events<AppEvent>;\n private i18n: Bundle;\n private renderer: Renderer;\n private emojiData: Promise<DataStore>;\n private options: PickerOptions;\n private customEmojis: EmojiRecord[];\n private pickerId: string;\n\n constructor({ events, i18n, renderer, emojiData, options, customEmojis = [], pickerId }: DependencyMapping) {\n this.events = events;\n this.i18n = i18n;\n this.renderer = renderer;\n this.emojiData = emojiData;\n this.options = options;\n this.customEmojis = customEmojis;\n this.pickerId = pickerId;\n }\n\n setEmojiData(emojiData: DataStore) {\n this.emojiData = Promise.resolve(emojiData);\n }\n\n createWithOptions<T extends View>(options: ViewFactoryOptions = {}, constructor: ViewConstructor<T>, ...args: ViewConstructorParameters<T>): T {\n const view = new constructor(...args);\n \n view.setPickerId(this.pickerId);\n view.setEvents(this.events);\n view.setI18n(this.i18n);\n view.setRenderer(this.renderer);\n\n if (options.data !== false) {\n view.setEmojiData(this.emojiData);\n }\n\n view.setOptions(this.options);\n view.setCustomEmojis(this.customEmojis);\n\n view.viewFactory = this;\n\n view.initialize();\n return view;\n }\n\n create<T extends View>(constructor: ViewConstructor<T>, ...args: ViewConstructorParameters<T>): T {\n return this.createWithOptions({}, constructor, ...args);\n }\n}\n","export type Dictionary = Record<string, string>;\n\nexport class Bundle {\n #dictionary: Map<string, string>;\n\n constructor(dictionary: Dictionary = {}) {\n this.#dictionary = new Map(Object.entries(dictionary));\n }\n\n get(key: string, fallback = key): string {\n return this.#dictionary.get(key) || fallback;\n }\n}\n","import styleInject from 'style-inject';\nimport globalConfig from './globalConfig';\n\nexport function createStyleInjector() {\n let isInjected = false;\n\n return function inject(css) {\n if (globalConfig.injectStyles && !isInjected) {\n styleInject(css);\n isInjected = true;\n }\n }\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { AppEvents } from './AppEvents';\nimport { EmojiPicker } from './views/EmojiPicker';\nimport { PickerOptions, CustomEmoji, EmojiRecord } from './types';\nimport { ViewFactory } from './viewFactory';\nexport { LazyLoader } from './LazyLoader';\nimport { DataStore } from './data/DataStore';\nimport { initDatabase } from './data/emojiData';\nimport { Bundle } from './i18n/bundle';\nimport { getOptions } from './options';\nimport { createStyleInjector } from './injectStyles';\n\nimport css from './styles/index.css?inline';\n\nfunction initData(options: PickerOptions): Promise<DataStore> {\n return initDatabase(options.locale, options.dataStore, options.messages, options.emojiData);\n}\n\nlet pickerIndex = 0;\n\nlet emojiDataPromise;\n\nfunction getPickerId() {\n return `picmo-${Date.now()}-${pickerIndex++}`;\n}\n\nconst styleInject = createStyleInjector();\n\n/**\n * Creates a new emoji picker.\n * @param options The options for the emoji picker.\n * @returns a Promise that resolves to the picker when it is ready.\n */\nexport function createPicker(options: Partial<PickerOptions>): EmojiPicker {\n styleInject(css);\n \n const finalOptions = getOptions(options);\n const customEmojis: EmojiRecord[] = (finalOptions?.custom || []).map((custom: CustomEmoji) => ({\n ...custom,\n custom: true,\n tags: ['custom', ...(custom.tags || [])]\n }));\n\n const events = new AppEvents();\n if (!emojiDataPromise) {\n emojiDataPromise = initData(finalOptions);\n }\n\n const i18n = new Bundle(finalOptions.i18n);\n\n emojiDataPromise.then(emojiData => {\n events.emit('data:ready', emojiData);\n }).catch(error => {\n events.emit('error', error);\n });\n\n const viewFactory = new ViewFactory({\n events,\n i18n,\n customEmojis,\n renderer: finalOptions.renderer,\n options: finalOptions,\n emojiData: emojiDataPromise,\n pickerId: getPickerId()\n });\n\n const picker = viewFactory.create(EmojiPicker);\n picker.renderSync();\n return picker;\n}","export default {\n 'categories.activities': 'Aktiviteter',\n 'categories.animals-nature': 'Djur & natur',\n 'categories.custom': 'Anpassad',\n 'categories.flags': 'Flagga',\n 'categories.food-drink': 'Mat & dryck',\n 'categories.objects': 'Objekt',\n 'categories.people-body': 'Människor & kropp',\n 'categories.recents': 'Nyligen använd',\n 'categories.smileys-emotion': 'Humör & känslor',\n 'categories.symbols': 'Symboler',\n 'categories.travel-places': 'Resor & platser',\n 'error.load': 'Det gick inte att ladda emojis',\n 'recents.clear': 'Ta bort de senaste emojis',\n 'recents.none': 'Du har inte valt nÃ¥gra emojis än',\n 'retry': 'Försök igen',\n 'search.clear': 'Tom sökning',\n 'search.error': 'Det gick inte att söka efter emojis',\n 'search.notFound': 'Inga emojis hittades',\n 'search': 'Sök efter emojis...'\n };\n ","function getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (middleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement`', 'middleware detected. This will lead to an infinite loop. Ensure only', 'one of either has been passed to the `middleware` array.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n\n for (let i = 0; i < middleware.length; i++) {\n const {\n name,\n fn\n } = middleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = { ...middlewareData,\n [name]: { ...middlewareData[name],\n ...data\n }\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n\n if (reset && resetCount <= 50) {\n resetCount++;\n\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects[elementContext]);\n return {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const alignment = getAlignment(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n const currentPlacement = placements[currentIndex];\n\n if (currentPlacement == null) {\n return {};\n }\n\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = side === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip2;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n\n return {};\n }\n\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n let {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = _temp === void 0 ? {} : _temp;\n return {\n name: 'hide',\n\n async fn(middlewareArguments) {\n const {\n rects\n } = middlewareArguments;\n\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n default:\n {\n return {};\n }\n }\n }\n\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({ ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n const paddingObject = getSideObjectFromPadding(padding);\n\n function getBoundingClientRect() {\n // There are two rects and they are disjoined\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n return fallback;\n }\n\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction isWindow(value) {\n return value && value.document && value.location && value.alert && value.setInterval;\n}\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (!isWindow(node)) {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';\n}\n\nfunction getUAString() {\n const uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n }\n\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle(element); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n return css.transform !== 'none' || css.perspective !== 'none' || // @ts-ignore (TS 4.1 compat)\n css.contain === 'paint' || ['transform', 'perspective'].includes(css.willChange) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false);\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;\n\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scaleX = 1;\n let scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n const win = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX;\n const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY;\n const width = clientRect.width / scaleX;\n const height = clientRect.height / scaleY;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction isScaled(element) {\n const rect = getBoundingClientRect(element);\n return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, // @ts-ignore - checked above (TS 4.1 compat)\n isOffsetParentAnElement && isScaled(offsetParent), strategy === 'fixed');\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // @ts-ignore\n node.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n node.parentNode || ( // DOM Element detected\n isShadowRoot(node) ? node.host : null) || // ShadowRoot detected\n getDocumentElement(node) // fallback\n\n );\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return composedOffsetParent(element);\n}\n/**\n * Polyfills the old offsetParent behavior from before the spec was changed:\n * https://github.com/w3c/csswg-drafts/issues/159\n */\n\n\nfunction composedOffsetParent(element) {\n let {\n offsetParent\n } = element;\n let ancestor = element;\n let foundInsideSlot = false;\n\n while (ancestor && ancestor !== offsetParent) {\n const {\n assignedSlot\n } = ancestor;\n\n if (assignedSlot) {\n let newOffsetParent = assignedSlot.offsetParent;\n\n if (getComputedStyle(assignedSlot).display === 'contents') {\n const hadStyleAttribute = assignedSlot.hasAttribute('style');\n const oldDisplay = assignedSlot.style.display;\n assignedSlot.style.display = getComputedStyle(ancestor).display;\n newOffsetParent = assignedSlot.offsetParent;\n assignedSlot.style.display = oldDisplay;\n\n if (!hadStyleAttribute) {\n assignedSlot.removeAttribute('style');\n }\n }\n\n ancestor = assignedSlot;\n\n if (offsetParent !== newOffsetParent) {\n offsetParent = newOffsetParent;\n foundInsideSlot = true;\n }\n } else if (isShadowRoot(ancestor) && ancestor.host && foundInsideSlot) {\n break;\n }\n\n ancestor = isShadowRoot(ancestor) && ancestor.host || ancestor.parentNode;\n }\n\n return offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && !['html', 'body'].includes(getNodeName(currentNode))) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n const parent = currentNode.parentNode;\n currentNode = isShadowRoot(parent) ? parent.host : parent;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n\n const rect = getBoundingClientRect(element);\n return {\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to be need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return { ...rect,\n x: rect.x - scroll.scrollLeft + offsets.x,\n y: rect.y - scroll.scrollTop + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n\n if (['html', 'body', '#document'].includes(getNodeName(parentNode))) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor;\n const updatedList = list.concat(target);\n return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here\n updatedList.concat(getOverflowAncestors(target));\n}\n\nfunction contains(parent, child) {\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n\n do {\n // use `===` replace node.isSameNode()\n if (next && parent === next) {\n return true;\n } // @ts-ignore: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n }\n\n return false;\n}\n\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, false, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n return {\n top,\n left,\n x: left,\n y: top,\n right: left + element.clientWidth,\n bottom: top + element.clientHeight,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getClientRectFromClippingAncestor(element, clippingParent, strategy) {\n if (clippingParent === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n\n if (isElement(clippingParent)) {\n return getInnerBoundingClientRect(clippingParent, strategy);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping ancestor\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingAncestors(element) {\n const clippingAncestors = getOverflowAncestors(element);\n const canEscapeClipping = ['absolute', 'fixed'].includes(getComputedStyle(element).position);\n const clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // @ts-ignore isElement check ensures we return Array<Element>\n\n\n return clippingAncestors.filter(clippingAncestors => isElement(clippingAncestors) && contains(clippingAncestors, clipperElement) && getNodeName(clippingAncestors) !== 'body');\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\n\n\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const mainClippingAncestors = boundary === 'clippingAncestors' ? getClippingAncestors(element) : [].concat(boundary);\n const clippingAncestors = [...mainClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getElementRects: _ref => {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n return {\n reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),\n floating: { ...getDimensions(floating),\n x: 0,\n y: 0\n }\n };\n },\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize: _ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestorResize = _ancestorResize && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n observer.observe(floating);\n }\n\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\n if (animationFrame) {\n frameLoop();\n }\n\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n\n update();\n return () => {\n var _observer;\n\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n\nconst computePosition = (reference, floating, options) => computePosition$1(reference, floating, {\n platform,\n ...options\n});\n\nexport { autoUpdate, computePosition, getOverflowAncestors };\n","import { autoUpdate, ComputePositionConfig, computePosition, Placement, flip, offset, autoPlacement, shift } from '@floating-ui/dom';\nimport { PopupPickerController } from './popupPicker';\nimport { Position, RelativePosition, FixedPosition, PositionLostStrategy } from './types';\n\nexport type PositionCleanup = () => void;\n\nexport async function setPosition(picker: PopupPickerController, pickerElement: HTMLElement, referenceElement: HTMLElement | undefined, position: Position): Promise<PositionCleanup> {\n if (!position) {\n throw new Error('Must provide a positioning option');\n }\n\n return await (typeof position === 'string' ? \n setRelativePosition(picker, pickerElement, referenceElement, position) : \n setFixedPosition(pickerElement, position));\n}\n\nasync function setRelativePosition(picker: PopupPickerController, pickerElement: HTMLElement, referenceElement: HTMLElement | undefined, placement: RelativePosition): Promise<PositionCleanup> {\n if (!referenceElement) {\n throw new Error('Reference element is required for relative positioning');\n }\n\n let config: Partial<ComputePositionConfig>;\n\n if (placement === 'auto') {\n config = {\n middleware: [\n autoPlacement(),\n shift(),\n offset({ mainAxis: 5, crossAxis: 12 })\n ]\n };\n } else {\n config = {\n placement: placement as Placement,\n middleware: [\n flip(),\n shift(),\n offset(5)\n ]\n };\n }\n\n return autoUpdate(referenceElement, pickerElement, async () => {\n if (!referenceElement.isConnected || !referenceElement.offsetParent) {\n if (handlePositionLost(picker)) {\n return;\n }\n }\n\n const { x, y } = await computePosition(referenceElement, pickerElement, config);\n Object.assign(pickerElement.style, {\n position: 'absolute',\n left: `${x}px`,\n top: `${y}px`\n });\n });\n}\n\nfunction setFixedPosition(picker: HTMLElement, position: FixedPosition): PositionCleanup {\n picker.style.position = 'fixed';\n\n Object.entries(position).forEach(([key, value]) => {\n picker.style[key] = value;\n });\n\n /* eslint-disable @typescript-eslint/no-empty-function */\n return () => {};\n}\n\nfunction handlePositionLost(picker: PopupPickerController) {\n switch (picker.options.onPositionLost) {\n case 'close':\n picker.close();\n return true;\n case 'destroy':\n picker.destroy();\n return true;\n case 'hold':\n return true;\n }\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\\\"M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z\\\"/></svg>\"","import {\n animate,\n getOptions as getPickerOptions,\n EmojiPicker,\n EventCallback,\n Events,\n createPicker,\n FocusTrap,\n PickerOptions,\n ExternalEvent,\n getPrefixedClasses,\n} from 'picmo';\nimport { PopupEvent } from './PopupEvents';\nimport { setPosition, PositionCleanup } from './positioning';\nimport { PopupOptions, Position } from './types';\nimport { getOptions } from './options';\n\nimport closeIcon from './icons/close.svg?raw';\n\ntype OpenOptions = {\n referenceElement?: HTMLElement;\n triggerElement?: HTMLElement;\n}\n\nconst classes = getPrefixedClasses(\n 'popupContainer',\n 'closeButton'\n);\n\nexport class PopupPickerController {\n picker: EmojiPicker;\n isOpen = false;\n\n referenceElement?: HTMLElement;\n triggerElement?: HTMLElement;\n options: PickerOptions & PopupOptions;\n\n private popupEl: HTMLElement;\n private focusTrap: FocusTrap;\n private positionCleanup: PositionCleanup;\n\n private closeButton: HTMLButtonElement;\n private externalEvents = new Events<PopupEvent>();\n\n constructor(pickerOptions: Partial<PickerOptions>, popupOptions: Partial<PopupOptions>) {\n this.options = { ...getOptions(popupOptions), ...getPickerOptions(pickerOptions) };\n\n this.popupEl = document.createElement('div');\n this.popupEl.classList.add(classes.popupContainer);\n this.popupEl.classList.add(this.options.theme);\n\n if (popupOptions.className) {\n this.popupEl.classList.add(popupOptions.className);\n }\n\n if (this.options.showCloseButton) {\n this.closeButton = document.createElement('button');\n this.closeButton.type = 'button';\n this.closeButton.classList.add(classes.closeButton);\n this.closeButton.innerHTML = closeIcon;\n this.closeButton.addEventListener('click', () => {\n this.close();\n });\n this.popupEl.appendChild(this.closeButton);\n }\n\n const pickerContainer = document.createElement('div');\n this.popupEl.appendChild(pickerContainer);\n\n this.picker = createPicker({ ...this.options, rootElement: pickerContainer });\n this.focusTrap = new FocusTrap();\n\n this.picker.addEventListener('data:ready', () => {\n this.focusTrap.activate(this.picker.el);\n this.picker.setInitialFocus();\n });\n\n if (this.options.hideOnEmojiSelect) {\n this.picker.addEventListener('emoji:select', () => {\n this.close();\n this.triggerElement?.focus();\n });\n }\n\n if (this.options.hideOnClickOutside) {\n this.onDocumentClick = this.onDocumentClick.bind(this);\n document.addEventListener('click', this.onDocumentClick);\n }\n\n if (this.options.hideOnEscape) {\n this.handleKeydown = this.handleKeydown.bind(this);\n this.popupEl.addEventListener('keydown', this.handleKeydown);\n }\n\n this.referenceElement = this.options.referenceElement;\n this.triggerElement = this.options.triggerElement;\n }\n\n /**\n * Listens for a picker event.\n *\n * @param event The event to listen for\n * @param callback The callback to call when the event is triggered\n */\n addEventListener(event: PopupEvent, callback: EventCallback) {\n this.externalEvents.on(event, callback);\n this.picker.addEventListener(event as ExternalEvent, callback);\n }\n\n removeEventListener(event: PopupEvent, callback: EventCallback) {\n this.externalEvents.off(event, callback);\n this.picker.removeEventListener(event as ExternalEvent, callback);\n }\n\n private handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.close();\n this.triggerElement?.focus();\n }\n }\n\n /**\n * Destroys the picker when it is no longer needed.\n * After calling this method, the picker will no longer be usable.\n *\n * If this is called while the picker is open, it will be closed first.\n *\n * @returns a Promise that resolves when the close/destroy is complete.\n */\n async destroy() {\n if (this.isOpen) {\n await this.close();\n }\n\n document.removeEventListener('click', this.onDocumentClick);\n\n this.picker.destroy();\n this.externalEvents.removeAll();\n }\n\n /**\n * Toggles the visible state of the picker\n * If the picker is currently open, it will be closed, and if it si currently closed, it will be opened.\n *\n * @returns a Promise that resolves when the visibility state change is complete\n */\n toggle(options?: OpenOptions): Promise<void> {\n return this.isOpen ? this.close() : this.open(options);\n }\n\n /**\n * Opens the picker.\n *\n * @returns a Promise that resolves when the picker is finished opening\n */\n async open({ triggerElement, referenceElement }: OpenOptions = {}): Promise<void> {\n if (this.isOpen) {\n return;\n }\n\n if (triggerElement) {\n this.triggerElement = triggerElement;\n }\n\n if (referenceElement) {\n this.referenceElement = referenceElement;\n }\n\n await this.initiateOpenStateChange(true);\n\n // Picker must be in the DOM in order to find the\n // Hide it with opacity until it's ready to show.\n this.popupEl.style.opacity = '0';\n\n // Calculate position and add to DOM\n this.options.rootElement.appendChild(this.popupEl);\n await this.setPosition();\n\n // Reset to the initial category and state\n this.picker.reset(false);\n\n // Picker is positioned and scrolled. \n // Now we can show it with the animation.\n await this.animatePopup(true);\n await this.animateCloseButton(true);\n this.picker.setInitialFocus();\n this.externalEvents.emit('picker:open');\n }\n\n /**\n * Closes the picker.\n *\n * @returns a Promise that resolves when the picker is finished closing\n */\n async close(): Promise<void> {\n if (!this.isOpen) {\n return;\n }\n\n await this.initiateOpenStateChange(false);\n await this.animateCloseButton(false);\n await this.animatePopup(false);\n\n this.popupEl.remove();\n this.picker.reset();\n this.positionCleanup?.();\n\n this.focusTrap.deactivate();\n this.externalEvents.emit('picker:close');\n }\n\n /**\n * Finds any pending (running) animations on the picker element.\n *\n * @returns an array of Animation objects that are in the 'running' state.\n */\n private getRunningAnimations(): Animation[] {\n return this.picker.el.getAnimations().filter(animation => animation.playState === 'running');\n }\n\n /**\n * Sets up the picker positioning.\n */\n private async setPosition() {\n this.positionCleanup?.();\n this.positionCleanup = await setPosition(\n this,\n this.popupEl,\n this.referenceElement,\n this.options.position as Position\n );\n }\n\n /**\n * Waits for all pending animations on the picker element to finish.\n *\n * @returns a Promise that resolves when all animations have finished\n */\n private awaitPendingAnimations(): Promise<Animation[]> {\n return Promise.all(this.getRunningAnimations().map(animation => animation.finished));\n }\n\n /**\n * Handles a click on the document, so that the picker is closed\n * if the mouse is clicked outside of it.\n *\n * The picker will only be closed if:\n * - The picker is currently open\n * - The click target is not the trigger element or any of its children\n * - The click target is not the picker or any of its children\n *\n * @param event The MouseEvent that was dispatched.\n */\n private onDocumentClick(event: MouseEvent) {\n const clickedNode = event.target as Node;\n\n const isClickOnTrigger = this.triggerElement?.contains(clickedNode);\n\n if (this.isOpen && !this.picker.isPickerClick(event) && !isClickOnTrigger) {\n this.close();\n }\n }\n\n private animatePopup(openState: boolean) {\n return animate(\n this.popupEl,\n {\n opacity: [0, 1],\n transform: ['scale(0.9)', 'scale(1)']\n },\n {\n duration: 150,\n id: openState ? 'show-picker' : 'hide-picker',\n easing: 'ease-in-out',\n direction: openState ? 'normal' : 'reverse',\n fill: 'both'\n },\n this.options\n );\n }\n\n private animateCloseButton(openState: boolean) {\n if (this.closeButton) {\n return animate(this.closeButton, {\n opacity: [0, 1]\n },\n {\n duration: 25,\n id: openState ? 'show-close' : 'hide-close',\n easing: 'ease-in-out',\n direction: openState ? 'normal' : 'reverse',\n fill: 'both',\n },\n this.options);\n }\n }\n\n /**\n * Prepares for an animation either for opening or closing the picker.\n * If other animations are still running (this will happen when toggled rapidly), this will wait for them to finish.\n *\n * It will mark the new open state immediately then wait for pending animations to finish.\n *\n * @param openState The desired open state\n */\n private async initiateOpenStateChange(openState: boolean) {\n this.isOpen = openState;\n await this.awaitPendingAnimations();\n }\n}\n","import { Locale, MessagesDataset, Emoji } from 'emojibase';\nimport { initDatabase as initDatabaseInternal } from './data/emojiData';\n\nexport * from './util';\nexport * from './focusTrap';\nexport * from './options';\nexport * from './events';\nexport * from './types';\nexport * from './themes';\nexport { default as globalConfig } from './globalConfig';\nexport { createPicker } from './createPicker';\nexport { EmojiPicker } from './views/EmojiPicker';\nexport type { ExternalEvent, ExternalEventKey } from './ExternalEvents';\n\nexport { Renderer } from './renderers/renderer';\nexport { NativeRenderer } from './renderers/native';\n\nimport * as i18n from './i18n';\nexport { i18n };\n\nexport { default as en } from './i18n/lang-en';\nexport { deleteDatabase } from './data/emojiData';\nimport { DataStoreFactory } from './data/DataStore';\nexport { createStyleInjector } from './injectStyles';\nexport { IndexedDbStoreFactory } from './data/IndexedDbStore';\nexport { InMemoryStoreFactory } from './data/InMemoryStore';\n\nexport * from './recents/index';\n\nexport async function createDatabase(locale: Locale, factory: DataStoreFactory, staticMessages?: MessagesDataset, staticEmojis?: Emoji[]): Promise<void> {\n const database = await initDatabaseInternal(locale, factory, staticMessages, staticEmojis);\n database.close();\n}\n\n",null,null,null,"/**\n * Gets the configured messages for Decidim. The configuration is passed from\n * the view to the JS within the layout template.\n *\n * @param {String | null} key The top-level key to fetch from the messages\n * object or `null` to fetch all messages.\n * @returns {Object} The messages object\n */\nexport const getMessages = (key = null) => {\n const allMessages = window.Decidim.config.get(\"messages\");\n if (key === null) {\n return allMessages;\n }\n let messages = allMessages;\n key.split(\".\").forEach((part) => (messages = messages[part] || {}));\n return messages;\n};\n\n/**\n * Turns a deep messages object into a dictionary object with a single level and\n * the keys separated with a dot.\n *\n * @param {Object} messages The messages object\n * @param {String | null} prefix Prefix for the messages on recursive calls\n * @returns {Object} The converted dictionary object\n */\nexport const createDictionary = (messages, prefix = \"\") => {\n let final = {};\n Object.keys(messages).forEach((key) => {\n if (typeof messages[key] === \"object\") {\n final = { ...final, ...createDictionary(messages[key], `${prefix}${key}.`) };\n } else if (key === \"\") {\n final[prefix?.replace(/\\.$/, \"\") || \"\"] = messages[key];\n } else {\n final[`${prefix}${key}`] = messages[key];\n }\n });\n\n return final;\n};\n\n/**\n * Creates a dictionary object from the top-level messages object with the\n * provided key.\n *\n * @param {String | null} key The top-level message key to create the dictionary\n * for\n * @returns {Object} The dictionary object\n */\nexport const getDictionary = (key) => {\n return createDictionary(getMessages(key));\n}\n","import { createPopup } from \"@picmo/popup-picker\";\nimport { screens } from \"tailwindcss/defaultTheme\"\nimport { SUPPORTED_LOCALES } from \"emojibase\";\n\nimport * as i18n from \"src/decidim/i18n\";\n\nlet I18N_CONFIG = null;\n\nexport class EmojiButton {\n static i18n() {\n if (I18N_CONFIG) {\n return I18N_CONFIG;\n }\n\n let dict = i18n.getMessages(\"emojis\") || null;\n const buttonText = dict.button;\n if (dict) {\n Reflect.deleteProperty(dict, \"button\");\n dict = i18n.createDictionary(dict);\n }\n\n // dictionary = the messages dictionary passed to Picmo\n // messages = local \"extra\" messages\n I18N_CONFIG = {\n dictionary: dict,\n messages: { buttonText }\n }\n return I18N_CONFIG;\n }\n\n // Get the current locale used for the emoji database\n //\n // @returns {string} the current locale if it is supported by emoji base, or english as the fallback locale\n static locale() {\n let emojiLocale = document.documentElement.getAttribute(\"lang\");\n\n if (!SUPPORTED_LOCALES.includes(emojiLocale)) {\n const secondaryLocale = emojiLocale?.split(\"-\")[0];\n if (SUPPORTED_LOCALES.includes(secondaryLocale)) {\n emojiLocale = secondaryLocale;\n } else {\n emojiLocale = \"en\";\n }\n }\n\n return emojiLocale;\n }\n\n constructor(elem) {\n const i18nConfig = EmojiButton.i18n();\n const i18nDictionary = i18nConfig.dictionary;\n const buttonText = i18nConfig.messages.buttonText;\n\n const wrapper = document.createElement(\"span\");\n wrapper.className = \"emoji__container\"\n const btnContainer = document.createElement(\"span\");\n btnContainer.className = \"emoji__trigger\"\n const btn = document.createElement(\"button\");\n btn.className = \"emoji__button\"\n btn.type = \"button\"\n btn.setAttribute(\"aria-label\", buttonText)\n btn.innerHTML = '<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"smile\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 496 512\"><path fill=\"currentColor\" d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\"></path></svg>'\n const referenceElement = document.createElement(\"span\");\n referenceElement.className = \"emoji__reference\";\n\n const parent = elem.parentNode;\n parent.insertBefore(wrapper, elem);\n wrapper.appendChild(elem);\n wrapper.appendChild(btnContainer);\n wrapper.appendChild(referenceElement);\n btnContainer.appendChild(btn);\n\n // The form errors need to be in the same container with the field they\n // belong to for Foundation Abide to show them automatically.\n parent.querySelectorAll(\".form-error\").forEach((el) => wrapper.appendChild(el));\n\n const picker = createPopup({\n autoFocus: \"search\",\n locale: EmojiButton.locale(),\n i18n: i18nDictionary,\n // shrink the size of the emoji when mobile\n ...(window.matchMedia(`(max-width: ${screens.sm})`).matches && { emojiSize: \"1.5rem\" })\n }, {\n position: \"bottom-end\",\n triggerElement: btn,\n className: \"emoji__decidim\",\n referenceElement\n });\n\n // Prevent the picker close button to submit the comment form\n picker.closeButton.type = \"button\";\n\n let handlerPicker = () => {\n picker.toggle();\n }\n\n btn.addEventListener(\"click\", handlerPicker);\n\n elem.addEventListener(\"characterCounter\", (event) => {\n if (event.detail.remaining >= 4) {\n btn.addEventListener(\"click\", handlerPicker);\n btn.removeAttribute(\"style\");\n } else {\n btn.removeEventListener(\"click\", handlerPicker);\n btn.setAttribute(\"style\", \"color:lightgrey\");\n }\n });\n\n picker.addEventListener(\"emoji:select\", ({emoji}) => {\n if (elem.contentEditable === \"true\") {\n if (elem.editor) {\n elem.editor.chain().insertContent(` ${emoji} `).focus().run();\n } else {\n elem.innerHTML += ` ${emoji} `\n }\n } else {\n elem.value += ` ${emoji} `\n }\n\n // Make sure the input event is dispatched on the input/textarea elements\n if (elem.tagName === \"TEXTAREA\" || elem.tagName === \"INPUT\") {\n elem.dispatchEvent(new Event(\"input\"));\n }\n\n const event = new Event(\"emoji.added\");\n elem.dispatchEvent(event);\n });\n }\n}\n\n/**\n * Adds the input emojis to the input elements that are defined to have them.\n *\n * @param {HTMLElement} element target node\n * @returns {void}\n */\nexport default function addInputEmoji(element = document) {\n const containers = element.querySelectorAll(\"[data-input-emoji]\");\n\n if (containers.length) {\n containers.forEach((elem) => new EmojiButton(elem))\n }\n};\n","const focusGuardClass = \"focusguard\";\nconst focusableNodes = [\"A\", \"IFRAME\", \"OBJECT\", \"EMBED\"];\nconst focusableDisableableNodes = [\"BUTTON\", \"INPUT\", \"TEXTAREA\", \"SELECT\"];\n\nexport default class FocusGuard {\n constructor(container) {\n this.container = container;\n this.guardedElement = null;\n this.triggerElement = null;\n }\n\n trap(element, trigger) {\n this.enable();\n this.guardedElement = element;\n this.triggerElement = trigger;\n }\n\n enable() {\n // Check if the guards already exists due to some other dialog\n const guards = this.container.querySelectorAll(`:scope > .${focusGuardClass}`);\n if (guards.length > 0) {\n // Make sure the guards are the first and last element as there have\n // been changes in the DOM.\n guards.forEach((guard) => {\n if (guard.dataset.position === \"start\") {\n this.container.prepend(guard);\n } else {\n this.container.append(guard);\n }\n })\n\n return;\n }\n\n // Add guards at the start and end of the document and attach their focus\n // listeners\n const startGuard = this.createFocusGuard(\"start\");\n const endGuard = this.createFocusGuard(\"end\");\n\n this.container.prepend(startGuard);\n this.container.append(endGuard);\n\n startGuard.addEventListener(\"focus\", () => this.handleContainerFocus(startGuard));\n endGuard.addEventListener(\"focus\", () => this.handleContainerFocus(endGuard));\n }\n\n disable() {\n const guards = this.container.querySelectorAll(`:scope > .${focusGuardClass}`);\n guards.forEach((guard) => guard.remove());\n\n this.guardedElement = null;\n\n if (this.triggerElement) {\n this.triggerElement.focus();\n this.triggerElement = null;\n }\n }\n\n createFocusGuard(position) {\n const guard = document.createElement(\"div\");\n guard.className = focusGuardClass;\n guard.dataset.position = position;\n guard.tabIndex = 0;\n guard.setAttribute(\"aria-hidden\", \"true\");\n\n return guard;\n };\n\n handleContainerFocus(guard) {\n if (!this.guardedElement) {\n guard.blur();\n return;\n }\n\n const visibleNodes = Array.from(this.guardedElement.querySelectorAll(\"*\")).filter((item) => {\n return this.isVisible(item);\n });\n\n let target = null;\n if (guard.dataset.position === \"start\") {\n // Focus at the start guard, so focus the first focusable element after that\n for (let ind = 0; ind < visibleNodes.length; ind += 1) {\n if (!this.isFocusGuard(visibleNodes[ind]) && this.isFocusable(visibleNodes[ind])) {\n target = visibleNodes[ind];\n break;\n }\n }\n } else {\n // Focus at the end guard, so focus the first focusable element after that\n for (let ind = visibleNodes.length - 1; ind >= 0; ind -= 1) {\n if (!this.isFocusGuard(visibleNodes[ind]) && this.isFocusable(visibleNodes[ind])) {\n target = visibleNodes[ind];\n break;\n }\n }\n }\n\n if (target) {\n target.focus();\n } else {\n // If no focusable element was found, blur the guard focus\n guard.blur();\n }\n };\n\n isVisible(element) {\n return element.offsetWidth > 0 || element.offsetHeight > 0;\n }\n\n isFocusGuard(element) {\n return element.classList.contains(focusGuardClass);\n }\n\n isFocusable(element) {\n if (focusableNodes.indexOf(element.nodeName) > -1) {\n return true;\n }\n if (focusableDisableableNodes.indexOf(element.nodeName) > -1 || element.getAttribute(\"contenteditable\")) {\n if (element.getAttribute(\"disabled\")) {\n return false;\n }\n return true;\n }\n\n const tabindex = parseInt(element.getAttribute(\"tabindex\"), 10);\n if (!isNaN(tabindex) && tabindex >= 0) {\n return true;\n }\n\n return false;\n }\n}\n","/**\n * This file handles the interactions of the notifications site via javascript\n * @param {HTMLElement} node target node\n * @returns {void}\n */\nexport default function(node = document) {\n const noNotificationsText = node.querySelector(\"#empty-notifications\")\n const handleRemove = ({ currentTarget }) => currentTarget.remove()\n const handleFadeOut = (element) => {\n if (element) {\n element.addEventListener(\"transitionend\", handleRemove)\n element.style.opacity = 0\n }\n }\n const emptyNotifications = () => {\n noNotificationsText.hidden = false\n\n node.querySelector(\"#dropdown-menu-account [data-unread-notifications]\").remove()\n if (!node.querySelector(\".main-bar__notification\").dataset.unreadConversations) {\n node.querySelector(\".main-bar__notification\").remove()\n }\n }\n const handleClick = ({ currentTarget }) => {\n handleFadeOut(currentTarget.closest(\"[data-notification]\"))\n if (!node.querySelector(\"[data-notification]:not([style])\")) {\n emptyNotifications()\n }\n }\n const hideReadAllButton = () => {\n handleFadeOut(node.querySelector(\"[data-notification-read-all]\"))\n }\n\n const notifications = node.querySelectorAll(\"[data-notification]\")\n\n if (notifications.length) {\n notifications.forEach((btn) => btn.querySelector(\"[data-notification-read]\").addEventListener(\"click\", handleClick))\n\n node.querySelector(\"[data-notification-read-all]\").\n addEventListener(\n \"click\", () => {\n notifications.forEach((notification) => handleFadeOut(notification))\n emptyNotifications()\n hideReadAllButton()\n }\n )\n }\n}\n","export default class RemoteModal {\n constructor(element) {\n if (!element) {\n throw new Error(\"RemoteModal requires a DOM Element\")\n }\n\n const { dialogRemoteUrl: url, dialogOpen } = element.dataset\n this.url = url\n this.modalTarget = dialogOpen\n\n element.addEventListener(\"click\", (event) => this.handleClick(event))\n }\n\n handleClick() {\n fetch(this.url).\n then((res) => {\n if (!res.ok) {\n throw res\n }\n return res.text()\n }).\n then((res) => this.handleSuccess(res)).\n catch((err) => this.handleError(err));\n }\n\n handleSuccess(response) {\n const node = document.getElementById(`${this.modalTarget}-content`)\n\n // save the close button if exists (modal.closable = true)\n const btn = node.querySelector(\"button\")\n\n // clear the modal contents\n node.innerHTML = \"\"\n\n if (btn) {\n // append the close button\n node.appendChild(btn)\n }\n\n // create a fake div to wrap the response, and then, iterate over its children\n const div = document.createElement(\"div\")\n div.innerHTML = response\n // in this way we do not append the parent element, useless\n Array.from(div.children).forEach((child) => node.appendChild(child))\n\n document.dispatchEvent(new CustomEvent(\"remote-modal:loaded\", { detail: node }));\n }\n\n handleError(err) {\n const node = document.getElementById(`${this.modalTarget}-content`)\n node.innerHTML = `<h3>${err.status}</h3><p>${err.statusText}</p>`\n document.dispatchEvent(new CustomEvent(\"remote-modal:failed\", { detail: node }));\n }\n}\n","/**\n * Returns 9 useful positions (page coordinates) of a HTMLElement regarding the window object\n *\n * topLeft topCenter topRight\n * \\ ________|________ /\n * | |\n * middleLeft | middleCenter | middleRight\n * |_________________|\n * / | \\\n * bottomLeft bottomCenter bottomRight\n *\n * @param {HTMLElement} node target node\n * @param {HTMLElement} relativeParent relative parent, instead of window\n * @returns {Object} Nine pair of page coordinates\n */\nconst getAbsolutePosition = (node, relativeParent) => {\n const { top, left, width, height } = node.getBoundingClientRect()\n\n let [pageX, pageY] = [window.pageXOffset, window.pageYOffset]\n if (relativeParent) {\n // in order to calculate the relative parent position, we reuse this function,\n // using the parent regarding the window and substracting the topLeft corner (its relative position [0,0])\n const { topLeft: [parentX, parentY] } = getAbsolutePosition(relativeParent);\n [pageX, pageY] = [pageX - parentX, pageY - parentY]\n }\n\n return {\n topLeft: [pageX + left, pageY + top],\n topCenter: [pageX + left + width / 2, pageY + top],\n topRight: [pageX + left + width, pageY + top],\n middleLeft: [pageX + left, pageY + top + height / 2],\n middleCenter: [pageX + left + width / 2, pageY + top + height / 2],\n middleRight: [pageX + left + width, pageY + top + height / 2],\n bottomLeft: [pageX + left, pageY + top + height],\n bottomCenter: [pageX + left + width / 2, pageY + top + height],\n bottomRight: [pageX + left + width, pageY + top + height]\n }\n}\n\n/**\n * Initialize any tooltip in the same way, both plain texts or complex markup\n *\n * @param {HTMLElement} node trigger element who contains the tooltip\n * @returns {void}\n */\nexport default function(node) {\n const { tooltip: tooltipHtml } = node.dataset\n\n const div = document.createElement(\"div\")\n div.innerHTML = tooltipHtml\n const tooltip = div.firstElementChild\n\n // only run this script when the tooltip content is html\n if (!(tooltip instanceof HTMLElement)) {\n return\n }\n\n // in case of javascript disabled, the tooltip could use the title attribute as default behaviour\n // once arrives here, title is no longer necessary\n node.removeAttribute(\"title\")\n\n tooltip.id = tooltip.id || `tooltip-${Math.random().toString(36).substring(7)}`\n // append to dom hidden, to apply css transitions\n tooltip.setAttribute(\"aria-hidden\", true)\n\n // used to detect if the user is on a mobile device by checking the user agent\n const useMobile = (/Mobi|Android/i).test(navigator.userAgent);\n\n // used not to collapse tooltip\n let removeTooltip = () => {\n tooltip.setAttribute(\"aria-hidden\", \"true\");\n }\n\n // used to allow clicks outside the tooltip to take place on the page or device\n const OutsideClick = (event) => {\n if (!tooltip.contains(event.target) && event.target !== node) {\n removeTooltip();\n }\n }\n\n // function called again to allow clicks outside the tooltip to collapse the tooltip\n removeTooltip = () => {\n tooltip.setAttribute(\"aria-hidden\", \"true\");\n document.removeEventListener(\"click\", OutsideClick)\n }\n\n const toggleTooltip = (event) => {\n event.preventDefault();\n // if the tooltip is visible in the DOM, hide it otherwise display\n if (tooltip.getAttribute(\"aria-hidden\") === \"false\") {\n tooltip.setAttribute(\"aria-hidden\", \"true\");\n return\n }\n\n // remove any previous tooltip from the DOM, in order to avoid overlaps\n Array.from(document.body.children).map((child) => child.id.startsWith(\"tooltip\") && child.remove())\n\n document.body.appendChild(tooltip)\n\n node.setAttribute(\"aria-describedby\", tooltip.id)\n\n // the position must be calculated once the event has been triggered\n // in that way, we ensure the container position is that we want\n // otherwise, the trigger could be hidden or misplaced\n const { topCenter, bottomCenter, middleRight, middleLeft } = getAbsolutePosition(node)\n\n let positionX = null;\n let positionY = null;\n\n if (tooltip.classList.contains(\"bottom\")) {\n [positionX, positionY] = bottomCenter\n } else if (tooltip.classList.contains(\"left\")) {\n [positionX, positionY] = middleLeft\n } else if (tooltip.classList.contains(\"right\")) {\n [positionX, positionY] = middleRight\n } else if (tooltip.classList.contains(\"top\")) {\n [positionX, positionY] = topCenter\n }\n\n // when the node is placed at the left side of the screen\n // we translate the tooltip's arrow in order to fit inside the viewport\n if ((tooltip.classList.contains(\"top\") || tooltip.classList.contains(\"bottom\")) && positionX < Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0) * 0.5) {\n tooltip.style.setProperty(\"--arrow-offset\", \"80%\")\n } else {\n tooltip.style.removeProperty(\"--arrow-offset\")\n }\n\n tooltip.style.top = `${positionY}px`\n tooltip.style.left = `${positionX}px`\n\n tooltip.setAttribute(\"aria-hidden\", false)\n\n // sleep time before hiding the element from the DOM\n setTimeout(() => document.addEventListener(\"click\", OutsideClick))\n }\n\n if (useMobile) {\n // mobile use to click and toggle the tooltip\n node.addEventListener(\"click\", toggleTooltip);\n window.addEventListener(\"keydown\", (event) => event.key === \"Escape\" && removeTooltip())\n } else {\n // desktop use for hover and blur over tooltip\n node.addEventListener(\"mouseenter\", toggleTooltip)\n node.addEventListener(\"mouseleave\", removeTooltip)\n node.addEventListener(\"focus\", toggleTooltip)\n node.addEventListener(\"blur\", removeTooltip)\n\n // tooltip hover listeners to prevent hiding when hovered\n tooltip.addEventListener(\"mouseenter\", () => tooltip.setAttribute(\"aria-hidden\", false))\n tooltip.addEventListener(\"mouseleave\", removeTooltip)\n }\n}\n","import createTooltip from \"src/decidim/tooltips\"\n\n/**\n * Given the following HTML structure,\n * <span data-remote-tooltip=\"true\" tooltip-url=\"some url\" data-author=\"true\">\n * <span></span>\n * </span>\n *\n * This function will check if the HTMLElement where is attached to has a child, and will add a data tooltip attribute\n * to the respective child in order to attach the fetched HTML content fetched under a json key as the content of the\n * HTML tooltip. The DOM structure is expected to be like follows:\n *\n * <span data-remote-tooltip=\"true\" tooltip-url=\"some url\" data-author=\"true\">\n * <span data-tooltip=\"HTML content from json data field\"></span>\n * </span>\n *\n * @param {HTMLElement} node The element holding the initialization data\n * @returns {void}\n */\nexport default async function(node) {\n const container = node.firstElementChild;\n\n if (container) {\n const response = await fetch(node.dataset.tooltipUrl, {\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n if (response.ok) {\n const json = await response.json();\n\n container.dataset.tooltip = json.data;\n createTooltip(container);\n } else {\n console.error(response.status, response.statusText);\n }\n }\n}\n","const Accordions=(()=>{const t={enter:13,space:32,pageUp:33,pageDown:34,end:35,home:36,up:38,down:40};class e{constructor(t){this.accordion=t.accordion,this.triggers=this.queryFilter(this.accordion.querySelectorAll(\"[data-controls]\")),[this.firstTrigger]=this.triggers,this.lastTrigger=this.triggers[this.triggers.length-1],this.state=[],this.currentFocusedIndex=null,this.isMultiSelectable=t.isMultiSelectable,this.isCollapsible=t.isCollapsible,this.onFocus=this.onFocus.bind(this),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}queryFilter(t){const e=[];let i;return t.forEach(t=>{for(i=t.parentNode;i!==this.accordion;){if(i.dataset.component===this.accordion.dataset.component)return;i=i.parentNode}e.push(t)}),e}setState(t){this.state.forEach(e=>{t.currentTarget===e.trigger?this.isCollapsible?e.isExpanded=!e.isExpanded:(e.isDisabled=!0,e.isExpanded=!0):(this.isMultiSelectable||(e.isExpanded=!1),this.isCollapsible||(e.isDisabled=!1))}),this.updateAttributes(t)}onFocus(t){this.state.forEach((e,i)=>{t.target===e.trigger&&(this.currentFocusedIndex=i)})}setFocus(e){e.target.hasAttribute(\"data-controls\")?(e.preventDefault(),e.stopPropagation(),e.which!==t.up&&e.which!==t.pageUp||this.state[this.currentFocusedIndex].prevTrigger.focus(),e.which!==t.down&&e.which!==t.pageDown||this.state[this.currentFocusedIndex].nextTrigger.focus(),e.which===t.home&&this.firstTrigger.focus(),e.which===t.end&&this.lastTrigger.focus()):(e.which!==t.pageUp&&e.which!==t.pageDown||(e.preventDefault(),e.stopPropagation()),e.which===t.pageUp&&this.state[this.currentFocusedIndex].trigger.focus(),e.which===t.pageDown&&this.state[this.currentFocusedIndex].nextTrigger.focus())}addAttributes(){this.accordion.setAttribute(\"role\",\"presentation\"),this.state.forEach(t=>{t.trigger.setAttribute(\"role\",\"button\"),t.trigger.setAttribute(\"tabindex\",0),t.trigger.setAttribute(\"aria-controls\",t.trigger.dataset.controls),t.panel.setAttribute(\"role\",\"region\"),t.panel.setAttribute(\"tabindex\",-1),t.panel.setAttribute(\"aria-labelledby\",t.trigger.id)})}updateAttributes(t){t&&t.preventDefault(),this.state.forEach(t=>{t.trigger.setAttribute(\"aria-expanded\",t.isExpanded),t.trigger.setAttribute(\"aria-disabled\",t.isDisabled),t.panel.setAttribute(\"aria-hidden\",!t.isExpanded)})}removeAttributes(){delete this.accordion.dataset.component,this.accordion.removeAttribute(\"role\"),this.state.forEach(t=>{t.trigger.removeAttribute(\"role\"),t.trigger.removeAttribute(\"tabindex\"),t.trigger.removeAttribute(\"aria-controls\"),t.trigger.removeAttribute(\"aria-expanded\"),t.trigger.removeAttribute(\"aria-disabled\"),t.panel.removeAttribute(\"role\"),t.panel.removeAttribute(\"tabindex\"),t.panel.removeAttribute(\"aria-hidden\"),t.panel.removeAttribute(\"aria-labelledby\")})}onClick(t){this.setState(t)}onKeydown(e){e.which===t.enter&&e.target.hasAttribute(\"data-controls\")&&this.setState(e),e.which===t.space&&e.target.hasAttribute(\"data-controls\")&&this.setState(e),e.which===t.up&&this.setFocus(e),e.which===t.down&&this.setFocus(e),e.which===t.home&&this.setFocus(e),e.which===t.end&&this.setFocus(e),e.which===t.pageUp&&this.setFocus(e),e.which===t.pageDown&&this.setFocus(e)}addEventListeners(t,e){t.addEventListener(\"focus\",this.onFocus),t.addEventListener(\"click\",this.onClick),t.addEventListener(\"keydown\",this.onKeydown),e.addEventListener(\"keydown\",this.onKeydown)}removeEventListeners(t,e){t.removeEventListener(\"focus\",this.onFocus),t.removeEventListener(\"click\",this.onClick),t.removeEventListener(\"keydown\",this.onKeydown),e.removeEventListener(\"keydown\",this.onKeydown)}destroy(){this.state.forEach(t=>{this.removeEventListeners(t.trigger,t.panel)}),this.removeAttributes()}render(){let t,e;this.triggers.forEach((i,s)=>{t=document.getElementById(i.dataset.controls),(e=\"true\"===i.dataset.open)&&(this.currentFocusedIndex=s),this.state.push({trigger:i,prevTrigger:this.triggers[s-1]||this.lastTrigger,nextTrigger:this.triggers[s+1]||this.firstTrigger,panel:t,isExpanded:e,isDisabled:!this.isCollapsible&&e}),this.addEventListeners(i,t)}),this.addAttributes(),this.updateAttributes()}}const i=[];return{render:(t,{isMultiSelectable:s=!0,isCollapsible:r=!0}={})=>{const o=document.getElementById(t),a={accordion:o,isMultiSelectable:s,isCollapsible:r};o.dataset.component=\"accordion\";const n=new e(a);n.render(),i.push(n)},destroy:t=>{i.forEach((e,s)=>{t===e.accordion.id&&(e.destroy(),i.splice(s,1))})},init:()=>{const t={};document.querySelectorAll('[data-component=\"accordion\"]').forEach(i=>{t.accordion=i,t.isMultiSelectable=\"false\"!==i.dataset.multiselectable,t.isCollapsible=\"false\"!==i.dataset.collapsible,new e(t).render()})}}})();export default Accordions;","const Dropdowns=(()=>{const t={escape:27,end:35,home:36,up:38,down:40};class e{constructor(t){this.trigger=t.trigger,this.dropdown=document.getElementById(t.dropdown),this.items=this.dropdown.querySelectorAll(\"[data-item]\"),this.links=this.dropdown.querySelectorAll(\"[data-focus]\"),[this.firstLink]=this.links,this.lastLink=this.links[this.links.length-1],this.state=[],this.currentFocusedIndex=0,this.hover=t.hover,this.isOpen=t.isOpen,this.autoClose=t.autoClose,this.open=this.open.bind(this),this.toggle=this.toggle.bind(this),this.onClick=this.onClick.bind(this),this.onFocus=this.onFocus.bind(this),this.onKeydown=this.onKeydown.bind(this),this.isOpen&&this.open()}onClick(t){this.autoClose||t.target.closest(`#${this.trigger.id}, #${this.dropdown.id}`)||this.close(),this.autoClose&&!t.target.closest(`#${this.trigger.id}`)&&this.close()}onFocus(t){this.state.forEach((e,i)=>{t.target===e.link&&(this.currentFocusedIndex=i)})}setFocus(e){switch(e.preventDefault(),e.target===this.trigger&&(this.currentFocusedIndex=0),e.which){case t.up:this.state[this.currentFocusedIndex].prevLink.focus();break;case t.home:this.firstLink.focus();break;case t.end:this.lastLink.focus();break;case t.down:e.target!==this.trigger?this.state[this.currentFocusedIndex].nextLink.focus():this.firstLink.focus()}}onKeydown(e){switch(e.which){case t.escape:this.close(e);break;case t.up:case t.down:case t.home:case t.end:this.setFocus(e)}}addAttributes(){this.trigger.setAttribute(\"aria-haspopup\",!0),this.trigger.setAttribute(\"aria-controls\",this.trigger.dataset.target),this.dropdown.setAttribute(\"role\",\"menu\"),this.dropdown.setAttribute(\"aria-labelledby\",this.trigger.id),this.dropdown.setAttribute(\"tabindex\",-1),this.dropdown.setAttribute(\"aria-hidden\",!this.isOpen),this.state.forEach(t=>{t.item&&t.item.setAttribute(\"role\",\"none\"),t.link.setAttribute(\"role\",\"menuitem\"),t.link.setAttribute(\"tabindex\",-1)})}removeAttributes(){this.trigger.removeAttribute(\"aria-haspopup\"),this.trigger.removeAttribute(\"aria-controls\"),this.trigger.removeAttribute(\"aria-expanded\"),this.dropdown.removeAttribute(\"role\"),this.dropdown.removeAttribute(\"aria-labelledby\"),this.dropdown.removeAttribute(\"tabindex\"),this.dropdown.removeAttribute(\"aria-hidden\"),this.state.forEach(t=>{t.item&&t.item.removeAttribute(\"role\"),t.link.removeAttribute(\"role\"),t.link.removeAttribute(\"tabindex\")})}addEventListeners(){document.addEventListener(\"click\",this.onClick),this.hover&&document.addEventListener(\"mouseover\",this.onClick),this.trigger.addEventListener(\"keydown\",this.onKeydown),this.dropdown.addEventListener(\"keydown\",this.onKeydown),this.links.forEach(t=>{t.addEventListener(\"focus\",this.onFocus)})}removeEventListeners(){document.removeEventListener(\"click\",this.onClick),this.hover&&document.removeEventListener(\"mouseover\",this.onClick),this.trigger.removeEventListener(\"keydown\",this.onKeydown),this.dropdown.removeEventListener(\"keydown\",this.onKeydown),this.links.forEach(t=>{t.removeEventListener(\"focus\",this.onFocus)})}open(){this.isOpen=!0,this.trigger.setAttribute(\"aria-expanded\",!0),this.dropdown.setAttribute(\"aria-hidden\",!1),this.addEventListeners()}close(t){this.isOpen=!1,this.trigger.setAttribute(\"aria-expanded\",!1),this.dropdown.setAttribute(\"aria-hidden\",!0),this.removeEventListeners(),t&&this.trigger.focus()}toggle(t){t.preventDefault(),this.isOpen=!this.isOpen,this.isOpen?this.open():this.close()}destroy(){this.removeAttributes(),this.removeEventListeners(),this.trigger.removeEventListener(\"click\",this.toggle),this.hover&&this.trigger.removeEventListener(\"mouseover\",this.open)}render(){this.links.forEach((t,e)=>{this.state.push({item:this.items[e],link:t,prevLink:this.links[e-1]||this.lastLink,nextLink:this.links[e+1]||this.firstLink})}),this.addAttributes(),this.trigger.addEventListener(\"click\",this.toggle),this.hover&&this.trigger.addEventListener(\"mouseover\",this.open)}}const i=[];return{render:(t,{isOpen:s=!1,hover:r=!1,autoClose:o=!1}={})=>{const n=document.getElementById(t),h=n.dataset.target,d=new e({trigger:n,dropdown:h,isOpen:s,hover:r,autoClose:o});d.render(),i.push(d)},destroy:t=>{i.forEach((e,s)=>{t===e.trigger.id&&(e.destroy(),i.splice(s,1))})},init:()=>{const t={};document.querySelectorAll('[data-component=\"dropdown\"]').forEach(i=>{t.trigger=i,t.dropdown=i.dataset.target,t.hover=\"true\"===i.dataset.hover,t.isOpen=\"true\"===i.dataset.open,t.autoClose=\"true\"===i.dataset.autoClose,new e(t).render()})}}})();export default Dropdowns;","/* defaults.js\n ========================================================================== */\n\n// Global configuration\nvar config = {\n documentSelector: '.js-document',\n documentDisabledClass: 'is-disabled',\n openingTriggerActiveClass: 'is-active',\n delay: 200,\n};\n\n/* focusableElements.js\n ========================================================================== */\n\n// Keyboard focusable elements\nvar focusableElements = [\n '[href]:not([tabindex^=\"-\"])',\n 'input:not([disabled]):not([type=\"hidden\"]):not([tabindex^=\"-\"]):not([type=\"radio\"])',\n 'input[type=\"radio\"]:checked',\n 'select:not([disabled]):not([tabindex^=\"-\"])',\n 'textarea:not([disabled]):not([tabindex^=\"-\"])',\n 'button:not([disabled]):not([tabindex^=\"-\"])',\n '[tabindex]:not([tabindex^=\"-\"])',\n '[contenteditable=\"true\"]:not([tabindex^=\"-\"])',\n];\n\n/* keyCodes.js\n ========================================================================== */\n\n// Keyboard codes\nvar keyCodes = {\n escape: 'Escape',\n tab: 'Tab',\n f6: 'F6',\n};\n\n/* utils.js\n ========================================================================== */\n\n// Only get visible elements\nfunction getVisibleElements(elements) {\n const visibleElements = [];\n\n elements.forEach((element) => {\n const bounding = element.getBoundingClientRect();\n const isVisible = bounding.width > 0 || bounding.height > 0;\n\n if (isVisible) visibleElements.push(element);\n });\n\n return visibleElements;\n}\n\n// Only get no nested elements\nfunction getNoNestedElements(context, selector, elements) {\n const nestedComponents = context.querySelectorAll(selector);\n const noNestedElements = [];\n let isNested = false;\n\n if (nestedComponents.length === 0) return elements;\n\n elements.forEach((element) => {\n nestedComponents.forEach((nestedComponent) => {\n if (nestedComponent.contains(element)) isNested = true;\n });\n\n if (!isNested) noNestedElements.push(element);\n\n isNested = false;\n });\n\n return noNestedElements;\n}\n\n// Check if the parent elements match the target\nfunction closest(element, target) {\n let currentElement = element;\n\n while (currentElement !== target && currentElement) {\n currentElement = currentElement.parentNode;\n }\n\n return !!currentElement;\n}\n\n/* a11y-dialog-component\n ========================================================================== */\n\n// Use Symbols to create private methods\nconst onClick = Symbol('onClick');\nconst onKeydown = Symbol('onKeydown');\nconst addEventDelegation = Symbol('addEventDelegation');\nconst addEventListeners = Symbol('addEventListeners');\nconst removeEventListeners = Symbol('removeEventListeners');\nconst addAttributes = Symbol('addAttributes');\nconst removeAttributes = Symbol('removeAttributes');\nconst setAttributes = Symbol('setAttributes');\nconst setFocusableElements = Symbol('setFocusableElements');\nconst setFocus = Symbol('setFocus');\nconst restoreFocus = Symbol('restoreFocus');\nconst switchFocus = Symbol('switchFocus');\nconst maintainFocus = Symbol('maintainFocus');\nconst addObserver = Symbol('addObserver');\nconst removeObserver = Symbol('removeObserver');\n\nlet customConfig = config;\n\n// Update the global configuration if needed\nfunction setDefaults({\n documentSelector = customConfig.documentSelector,\n documentDisabledClass = customConfig.documentDisabledClass,\n openingTriggerActiveClass = customConfig.openingTriggerActiveClass,\n delay = customConfig.delay,\n} = {}) {\n customConfig = {\n ...config,\n ...{\n documentSelector,\n documentDisabledClass,\n openingTriggerActiveClass,\n delay,\n },\n };\n}\n\n// Export the default Dialog() class\nclass Dialog {\n constructor(\n dialogSelector,\n {\n onOpen = () => {},\n onClose = () => {},\n openingSelector,\n closingSelector,\n backdropSelector,\n helperSelector,\n labelledby,\n describedby,\n isModal = true,\n isTooltip = false,\n isOpen = false,\n isCreated = true,\n disableScroll = true,\n enableAutoFocus = true,\n openingTriggerActiveClass = customConfig.openingTriggerActiveClass,\n delay = customConfig.delay,\n } = {},\n ) {\n // Check if the dialog exists, if not, set `isInitialized` to false\n if (!document.querySelector(dialogSelector)) {\n this.isInitialized = false;\n return;\n }\n\n // Save the initial configuration\n this.config = {\n dialogSelector,\n onOpen,\n onClose,\n openingSelector,\n closingSelector,\n backdropSelector,\n helperSelector,\n labelledby,\n describedby,\n isModal,\n isTooltip,\n isCreated,\n isOpen,\n disableScroll,\n enableAutoFocus,\n documentSelector: customConfig.documentSelector,\n documentDisabledClass: customConfig.documentDisabledClass,\n openingTriggerActiveClass,\n delay,\n };\n\n this.dialog = document.querySelector(dialogSelector);\n this.dialogArea = `${dialogSelector}, ${openingSelector}`;\n this.openingTriggers = document.querySelectorAll(openingSelector);\n this.backdropTrigger = document.querySelector(backdropSelector);\n this.helpers = document.querySelectorAll(helperSelector);\n\n this.document = document.querySelector(this.config.documentSelector) || document.querySelector('html');\n this.documentIsAlreadyDisabled = false;\n\n this.focusableElements = [];\n this.firstFocusableElement = null;\n this.lastFocusableElement = null;\n this.openingTrigger = null;\n this.closingTrigger = null;\n\n this.isCreated = false;\n this.isOpen = false;\n\n this.close = this.close.bind(this);\n this.toggle = this.toggle.bind(this);\n this[onClick] = this[onClick].bind(this);\n this[onKeydown] = this[onKeydown].bind(this);\n this[addEventDelegation] = this[addEventDelegation].bind(this);\n this[switchFocus] = this[switchFocus].bind(this);\n\n // Add mutation observer to update focusable elements\n this.observer = new MutationObserver((mutations) => mutations.forEach(() => this[setFocusableElements]()));\n\n // initialize the dialog\n this.isInitialized = true;\n\n // Create the dialog\n if (isCreated) this.create();\n }\n\n [onClick](event) {\n if (this.config.isTooltip && !event.target.closest(this.dialogArea)) {\n this.close(event);\n }\n if (event.target === this.backdropTrigger) this.close(event);\n }\n\n [onKeydown](event) {\n switch (event.key) {\n case keyCodes.escape:\n event.stopPropagation();\n this.close(event);\n break;\n case keyCodes.f6:\n if (!this.config.isModal) !this.config.isTooltip ? this[restoreFocus]() : this.close(event);\n break;\n case keyCodes.tab:\n this[maintainFocus](event);\n break;\n }\n }\n\n [addEventDelegation](event) {\n document.querySelectorAll(this.config.openingSelector).forEach((openingTrigger) => {\n if (closest(event.target, openingTrigger)) {\n this.openingTrigger = openingTrigger;\n this.toggle(event);\n }\n });\n\n document.querySelectorAll(this.config.closingSelector).forEach((closingTrigger) => {\n if (closest(event.target, closingTrigger)) {\n this.closingTrigger = closingTrigger;\n this.close();\n }\n });\n }\n\n [addEventListeners]() {\n document.addEventListener('click', this[onClick], { capture: true });\n this.dialog.addEventListener('keydown', this[onKeydown]);\n }\n\n [removeEventListeners]() {\n document.removeEventListener('click', this[onClick], { capture: true });\n this.dialog.removeEventListener('keydown', this[onKeydown]);\n\n if (this.openingTrigger) this.openingTrigger.removeEventListener('keydown', this[switchFocus]);\n }\n\n [addAttributes]() {\n this.dialog.setAttribute('role', 'dialog');\n this.dialog.setAttribute('tabindex', -1);\n this.dialog.setAttribute('aria-hidden', true);\n\n if (this.config.labelledby) this.dialog.setAttribute('aria-labelledby', this.config.labelledby);\n if (this.config.describedby) this.dialog.setAttribute('aria-describedby', this.config.describedby);\n\n if (this.config.isModal) this.dialog.setAttribute('aria-modal', true);\n\n this.openingTriggers.forEach((openingTrigger) => openingTrigger.setAttribute('aria-haspopup', 'dialog'));\n }\n\n [removeAttributes]() {\n this.dialog.removeAttribute('role');\n this.dialog.removeAttribute('tabindex');\n this.dialog.removeAttribute('aria-hidden');\n this.dialog.removeAttribute('aria-labelledby');\n this.dialog.removeAttribute('aria-describedby');\n this.dialog.removeAttribute('aria-modal');\n\n if (this.config.disableScroll && this.isOpen && !this.documentIsAlreadyDisabled) {\n this.document.classList.remove(this.config.documentDisabledClass);\n }\n\n this.openingTriggers.forEach((openingTrigger) => openingTrigger.removeAttribute('aria-haspopup'));\n\n if (this.openingTrigger) this.openingTrigger.classList.remove(this.config.openingTriggerActiveClass);\n\n this.helpers.forEach((helper) => helper.classList.remove(this.config.openingTriggerActiveClass));\n }\n\n [setAttributes]() {\n this.dialog.setAttribute('aria-hidden', !this.isOpen);\n\n if (this.config.disableScroll && !this.documentIsAlreadyDisabled) {\n if (this.isOpen) {\n this.document.classList.add(this.config.documentDisabledClass);\n } else {\n this.document.classList.remove(this.config.documentDisabledClass);\n }\n }\n\n if (this.openingTrigger) {\n if (this.isOpen) {\n this.openingTrigger.classList.add(this.config.openingTriggerActiveClass);\n } else {\n this.openingTrigger.classList.remove(this.config.openingTriggerActiveClass);\n }\n }\n\n this.helpers.forEach((helper) => {\n if (this.isOpen) {\n helper.classList.add(this.config.openingTriggerActiveClass);\n } else {\n helper.classList.remove(this.config.openingTriggerActiveClass);\n }\n });\n }\n\n [setFocusableElements]() {\n const visibleFocusableElements = getVisibleElements(this.dialog.querySelectorAll(focusableElements));\n const filteredFocusableElements = getNoNestedElements(this.dialog, '[role=\"dialog\"]', visibleFocusableElements);\n\n this.focusableElements = filteredFocusableElements.length > 0 ? filteredFocusableElements : [this.dialog];\n [this.firstFocusableElement] = this.focusableElements;\n this.lastFocusableElement = this.focusableElements[this.focusableElements.length - 1];\n }\n\n [setFocus]() {\n if (this.config.enableAutoFocus) window.setTimeout(() => this.firstFocusableElement.focus(), this.config.delay);\n }\n\n [restoreFocus]() {\n if (this.config.enableAutoFocus) window.setTimeout(() => this.openingTrigger.focus(), this.config.delay);\n\n // Switch focus between the current opening trigger and the non-modal dialog\n if (this.isOpen) this.openingTrigger.addEventListener('keydown', this[switchFocus]);\n }\n\n [switchFocus](event) {\n if (event.key === keyCodes.f6) {\n this.openingTrigger.removeEventListener('keydown', this[switchFocus]);\n this[setFocus]();\n }\n }\n\n [maintainFocus](event) {\n if (event.shiftKey && event.target === this.firstFocusableElement) {\n event.preventDefault();\n this.lastFocusableElement.focus();\n }\n\n if (!event.shiftKey && event.target === this.lastFocusableElement) {\n event.preventDefault();\n this.firstFocusableElement.focus();\n }\n }\n\n [addObserver]() {\n this.observer.observe(this.dialog, { childList: true, attributes: true, subtree: true });\n }\n\n [removeObserver]() {\n this.observer.disconnect();\n }\n\n open() {\n if (!this.isInitialized || !this.isCreated || this.isOpen) return;\n\n this.isOpen = true;\n this.documentIsAlreadyDisabled = this.document.classList.contains(this.config.documentDisabledClass);\n\n this[setAttributes]();\n this[addEventListeners]();\n this[setFocus]();\n\n this.config.onOpen(this.dialog, this.openingTrigger);\n }\n\n close(event) {\n if (!this.isInitialized || !this.isCreated || !this.isOpen) return;\n\n this.isOpen = false;\n\n if (event) event.preventDefault();\n\n this[setAttributes]();\n this[removeEventListeners]();\n\n // Restore focus except for tooltip click events\n if (this.openingTrigger && (!this.config.isTooltip || (this.config.isTooltip && event && event.type !== 'click'))) {\n this[restoreFocus]();\n }\n\n this.config.onClose(this.dialog, this.closingTrigger);\n }\n\n toggle(event) {\n if (!this.isInitialized || !this.isCreated) return;\n\n if (event) event.preventDefault();\n\n this.isOpen ? this.close() : this.open();\n }\n\n create() {\n if (!this.isInitialized || this.isCreated) return;\n\n this.isCreated = true;\n\n this[addAttributes]();\n this[setFocusableElements]();\n this[addObserver]();\n\n if (this.config.isOpen) this.open();\n\n document.addEventListener('click', this[addEventDelegation], { capture: true });\n }\n\n destroy() {\n if (!this.isInitialized || !this.isCreated) return;\n\n this.close();\n\n this.isCreated = false;\n\n this[removeAttributes]();\n this[removeEventListeners]();\n this[removeObserver]();\n\n document.removeEventListener('click', this[addEventDelegation], { capture: true });\n }\n}\n\nexport default Dialog;\nexport { setDefaults };\n","import Accordions from \"a11y-accordion-component\";\nimport Dropdowns from \"a11y-dropdown-component\";\nimport Dialogs from \"a11y-dialog-component\";\nimport { screens } from \"tailwindcss/defaultTheme\"\n\n\n/**\n * Checks if a key is in the current viewport\n *\n * @param {('sm'|'md'|'lg'|'xl'|'2xl')} key - The key to check the screen size.\n * @returns {boolean} - Returns true if the screen size corresponds with the key\n */\nconst isScreenSize = (key) => {\n return window.matchMedia(`(min-width: ${screens[key]})`).matches;\n}\n\n/**\n * Create accordion from a component\n *\n * @param {HTMLElement} component - The component to be created\n * @return {void}\n */\nconst createAccordion = (component) => {\n const accordionOptions = {};\n accordionOptions.isMultiSelectable = component.dataset.multiselectable !== \"false\";\n accordionOptions.isCollapsible = component.dataset.collapsible !== \"false\";\n\n // This snippet allows to change the OPEN data-attribute based on the current viewport\n // Just include the breakpoint where the different value will be applied from.\n // Ex:\n // data-open=\"false\" data-open-md=\"true\"\n Object.keys(screens).forEach((key) => {\n if (!isScreenSize(key)) {\n return;\n }\n\n const elementsToOpen = component.querySelectorAll(`[data-controls][data-open-${key}]`);\n\n elementsToOpen.forEach((elem) => {\n (elem.dataset.open = elem.dataset[`open-${key}`.replace(/-([a-z])/g, (str) => str[1].toUpperCase())])\n })\n })\n\n if (!component.id) {\n // when component has no id, we enforce to have it one\n component.id = `accordion-${Math.random().toString(36).substring(7)}`\n }\n\n Accordions.render(component.id, accordionOptions);\n}\n\n/**\n * Create dropdown from a component\n *\n * @param {HTMLElement} component - The component to be created\n * @return {void}\n */\nconst createDropdown = (component) => {\n const dropdownOptions = {};\n dropdownOptions.dropdown = component.dataset.target;\n dropdownOptions.hover = component.dataset.hover === \"true\";\n dropdownOptions.autoClose = component.dataset.autoClose === \"true\";\n\n // This snippet allows to disable the dropdown based on the current viewport\n // Just include the breakpoint where the different value will be applied from.\n // Ex:\n // data-disabled-md=\"true\"\n const isDisabled = Object.keys(screens).some((key) => {\n if (!isScreenSize(key)) {\n return false;\n }\n\n return Boolean(component.dataset[`disabled-${key}`.replace(/-([a-z])/g, (str) => str[1].toUpperCase())]);\n })\n\n if (isDisabled) {\n return\n }\n\n dropdownOptions.isOpen = component.dataset.open === \"true\";\n\n const isOpen = Object.keys(screens).some((key) => {\n if (!isScreenSize(key)) {\n return false;\n }\n return Boolean(component.dataset[`open-${key}`.replace(/-([a-z])/g, (str) => str[1].toUpperCase())]);\n });\n\n dropdownOptions.isOpen = dropdownOptions.isOpen || isOpen;\n\n if (!component.id) {\n // when component has no id, we enforce to have it one\n component.id = `dropdown-${Math.random().toString(36).substring(7)}`\n }\n\n const autofocus = component.dataset.autofocus;\n if (autofocus) {\n // set the focus to some inner element, use setTimeout hack due to waiting for element to display\n component.addEventListener(\"click\", () => setTimeout(() => document.getElementById(autofocus).focus(), 0));\n }\n\n const scrollToMenu = component.dataset.scrollToMenu === \"true\";\n if (scrollToMenu) {\n // Auto scroll to show the menu on the viewport\n component.addEventListener(\"click\", (event) => {\n const heightToScroll = component.getBoundingClientRect().top + window.scrollY + document.documentElement.clientTop;\n const isCollapsed = event.target.getAttribute(\"aria-expanded\") === \"false\";\n\n if (isCollapsed) {\n return;\n }\n\n window.scrollTo({ top: heightToScroll, behavior: \"smooth\" });\n });\n }\n\n Dropdowns.render(component.id, dropdownOptions);\n}\n\n/**\n * Create dialog from a component\n *\n * @param {HTMLElement} component - The component to be created\n * @return {void}\n */\nconst createDialog = (component) => {\n const {\n dataset: { dialog, ...attrs }\n } = component;\n\n // NOTE: due to some SR bugs we have to set the focus on the title\n // See discussion: https://github.com/decidim/decidim/issues/9760\n // See further info: https://adrianroselli.com/2020/10/dialog-focus-in-screen-readers.html\n const setFocusOnTitle = (content) => {\n const heading = content.querySelector(\"[id^=dialog-title]\")\n if (heading) {\n heading.setAttribute(\"tabindex\", heading.getAttribute(\"tabindex\") || -1)\n heading.focus();\n }\n }\n\n const modal = new Dialogs(`[data-dialog=\"${dialog}\"]`, {\n openingSelector: `[data-dialog-open=\"${dialog}\"]`,\n closingSelector: `[data-dialog-close=\"${dialog}\"]`,\n backdropSelector: `[data-dialog=\"${dialog}\"]`,\n enableAutoFocus: false,\n onOpen: (params, trigger) => {\n setFocusOnTitle(params);\n window.focusGuard.trap(params, trigger);\n params.dispatchEvent(new CustomEvent(\"open.dialog\"));\n },\n onClose: (params) => {\n window.focusGuard.disable();\n params.dispatchEvent(new CustomEvent(\"close.dialog\"));\n },\n // optional parameters (whenever exists the id, it will add the tagging)\n ...(Boolean(component.querySelector(`#dialog-title-${dialog}`)) && {\n labelledby: `dialog-title-${dialog}`\n }),\n ...(Boolean(component.querySelector(`#dialog-desc-${dialog}`)) && {\n describedby: `dialog-desc-${dialog}`\n }),\n // Add any other options passed via data-attributes\n ...attrs\n });\n\n // attach all modals to the body, removing them from wherever are placed\n document.body.appendChild(modal.dialog)\n\n // in order to use the Dialog object somewhere else\n window.Decidim.currentDialogs = { ...window.Decidim.currentDialogs, [dialog]: modal }\n\n // NOTE: when a remote modal is open, the contents are empty\n // once they are in the DOM, we append the ARIA attributes\n // otherwise they could not exist yet\n // (this listener must be applied over 'document', not 'element')\n document.addEventListener(\"remote-modal:loaded\", () => {\n const heading = modal.dialog.querySelector(`#dialog-title-${dialog}`)\n if (heading) {\n modal.dialog.setAttribute(\"aria-labelledby\", `dialog-title-${dialog}`);\n setFocusOnTitle(modal.dialog)\n }\n if (modal.dialog.querySelector(`#dialog-desc-${dialog}`)) {\n modal.dialog.setAttribute(\"aria-describedby\", `dialog-desc-${dialog}`);\n }\n })\n}\n\nexport {\n createAccordion,\n createDialog,\n createDropdown,\n Accordions,\n Dialogs,\n Dropdowns\n}\n","/**\n * These set of functions aims to change the behavior of the report modal forms\n * so that when checking various checkboxes, to change the label of the button\n * to either report or hide.\n * Given the behavior is similar for report content and report user, we have the\n * functionality grouped in one single function.\n * It is important to note that the report user modal has a checkbox that allows\n * the admin to block the user in the report user modal.\n */\n\n/**\n * @param {DomElement} input The checkbox that is being checked\n * @return {Void} Nothing\n */\nconst changeLabel = function (input) {\n let submit = input.closest(\"form\").querySelector(\"button[type=submit]\");\n\n if (submit.querySelector(\"span\") !== null) {\n submit = submit.querySelector(\"span\");\n }\n if (input.checked === true) {\n submit.innerHTML = input.dataset.labelAction;\n } else {\n submit.innerHTML = input.dataset.labelReport;\n }\n}\n\n/**\n * @param {Object} container The form handling the report.\n * @return {Void} Nothing\n */\nexport default function changeReportFormBehavior(container) {\n container.querySelectorAll(\"[data-hide=true]\").forEach((checkbox) => {\n checkbox.addEventListener(\"change\", (event) => {\n changeLabel(event.target);\n });\n });\n container.querySelectorAll(\"[data-block=true]\").forEach((checkbox) => {\n checkbox.addEventListener(\"change\", (event) => {\n changeLabel(event.target);\n let blockAndHide = event.target.closest(\"form\").querySelector(\"#block_and_hide\");\n blockAndHide.classList.toggle(\"invisible\");\n });\n });\n}\n","/* eslint-disable max-lines */\n\n/**\n * External dependencies\n */\n\n// external deps with no initialization\nimport \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\nimport \"jquery\"\n\n// REDESIGN_PENDING: deprecated\nimport \"foundation-sites\";\n\n// external deps that require initialization\nimport Rails from \"@rails/ujs\"\nimport svg4everybody from \"svg4everybody\"\nimport morphdom from \"morphdom\"\n\n// vendor customizated scripts (bad practice: these ones should be removed eventually)\nimport \"src/decidim/vendor/modernizr\"\n\n/**\n * Local dependencies\n */\n\n// local deps with no initialization\nimport \"src/decidim/input_tags\"\nimport \"src/decidim/input_hashtags\"\nimport \"src/decidim/input_mentions\"\nimport \"src/decidim/input_multiple_mentions\"\nimport \"src/decidim/input_autojump\"\nimport \"src/decidim/history\"\nimport \"src/decidim/callout\"\nimport \"src/decidim/clipboard\"\nimport \"src/decidim/append_elements\"\nimport \"src/decidim/user_registrations\"\nimport \"src/decidim/account_form\"\nimport \"src/decidim/append_redirect_url_to_modals\"\nimport \"src/decidim/form_attachments\"\nimport \"src/decidim/form_remote\"\nimport \"src/decidim/delayed\"\nimport \"src/decidim/vizzs\"\nimport \"src/decidim/responsive_horizontal_tabs\"\nimport \"src/decidim/security/selfxss_warning\"\nimport \"src/decidim/session_timeouter\"\nimport \"src/decidim/confirm\"\nimport \"src/decidim/results_listing\"\nimport \"src/decidim/impersonation\"\nimport \"src/decidim/gallery\"\nimport \"src/decidim/direct_uploads/upload_field\"\nimport \"src/decidim/data_consent\"\nimport \"src/decidim/abide_form_validator_fixer\"\nimport \"src/decidim/sw\"\n\n// local deps that require initialization\nimport Configuration from \"src/decidim/configuration\"\nimport ExternalLink from \"src/decidim/external_link\"\nimport updateExternalDomainLinks from \"src/decidim/external_domain_warning\"\nimport scrollToLastChild from \"src/decidim/scroll_to_last_child\"\nimport InputCharacterCounter, { createCharacterCounter } from \"src/decidim/input_character_counter\"\nimport FormValidator from \"src/decidim/form_validator\"\nimport FormFilterComponent from \"src/decidim/form_filter\"\nimport addInputEmoji, { EmojiButton } from \"src/decidim/input_emoji\"\nimport FocusGuard from \"src/decidim/focus_guard\"\nimport backToListLink from \"src/decidim/back_to_list\"\nimport markAsReadNotifications from \"src/decidim/notifications\"\nimport RemoteModal from \"src/decidim/remote_modal\"\nimport selectActiveIdentity from \"src/decidim/identity_selector_dialog\"\nimport createTooltip from \"src/decidim/tooltips\"\nimport fetchRemoteTooltip from \"src/decidim/remote_tooltips\"\nimport createToggle from \"src/decidim/toggle\"\nimport {\n createAccordion,\n createDialog,\n createDropdown,\n Dialogs\n} from \"src/decidim/a11y\"\nimport changeReportFormBehavior from \"src/decidim/change_report_form_behavior\"\n\n// bad practice: window namespace should avoid be populated as much as possible\n// rails-translations could be referrenced through a single Decidim.I18n object\nwindow.Decidim = window.Decidim || {\n config: new Configuration(),\n ExternalLink,\n InputCharacterCounter,\n FormValidator,\n addInputEmoji,\n EmojiButton,\n Dialogs\n};\n\nwindow.morphdom = morphdom\n\n// REDESIGN_PENDING: deprecated\nwindow.initFoundation = (element) => {\n $(element).foundation();\n\n // Fix compatibility issue with the `a11y-accordion-component` package that\n // uses the `data-open` attribute to indicate the open state for the accordion\n // trigger.\n //\n // In Foundation, these listeners are initiated on the document node always,\n // regardless of the element for which foundation is initiated. Therefore, we\n // need the document node here instead of the `element` passed to this\n // function.\n const $document = $(document);\n\n $document.off(\"click.zf.trigger\", window.Foundation.Triggers.Listeners.Basic.openListener);\n $document.on(\"click.zf.trigger\", \"[data-open]\", (ev, ...restArgs) => {\n // Do not apply for the accordion triggers.\n const accordion = ev.currentTarget?.closest(\"[data-component='accordion']\");\n if (accordion) {\n return;\n }\n\n // Otherwise call the original implementation\n Reflect.apply(window.Foundation.Triggers.Listeners.Basic.openListener, ev.currentTarget, [ev, ...restArgs]);\n });\n};\n\nRails.start()\n\n/**\n * Initializer event for those script who require to be triggered\n * when the page is loaded\n *\n * @param {HTMLElement} element target node\n * @returns {void}\n */\nconst initializer = (element = document) => {\n // focus guard must be initialized only once\n window.focusGuard = window.focusGuard || new FocusGuard(document.body);\n\n // REDESIGN_PENDING: deprecated\n window.initFoundation(element);\n\n svg4everybody();\n\n element.querySelectorAll(\".editor-container\").forEach((container) => window.createEditor(container));\n\n // initialize character counter\n $(\"input[type='text'], textarea, .editor>input[type='hidden']\", element).each((_i, elem) => {\n const $input = $(elem);\n\n if (!$input.is(\"[minlength]\") && !$input.is(\"[maxlength]\")) {\n return;\n }\n\n createCharacterCounter($input);\n });\n\n $(\"form.new_filter\", element).each(function () {\n // eslint-disable-next-line no-invalid-this\n const formFilter = new FormFilterComponent($(this));\n\n formFilter.mountComponent();\n })\n\n element.querySelectorAll(\"a[target=\\\"_blank\\\"]:not([data-external-link=\\\"false\\\"])\").forEach((elem) => {\n // both functions (updateExternalDomainLinks and ExternalLink) are related, so if we disable one, the other also\n updateExternalDomainLinks(elem)\n\n return new ExternalLink(elem)\n })\n\n addInputEmoji(element)\n\n backToListLink(element.querySelectorAll(\".js-back-to-list\"));\n\n markAsReadNotifications(element)\n\n scrollToLastChild(element)\n\n element.querySelectorAll('[data-component=\"accordion\"]').forEach((component) => createAccordion(component))\n\n element.querySelectorAll('[data-component=\"dropdown\"]').forEach((component) => createDropdown(component))\n\n element.querySelectorAll(\"[data-dialog]\").forEach((component) => createDialog(component))\n\n // Initialize available remote modals (ajax-fetched contents)\n element.querySelectorAll(\"[data-dialog-remote-url]\").forEach((elem) => new RemoteModal(elem))\n\n // Add event listeners to identity modal\n element.querySelectorAll(\"[data-user-identity]\").forEach((elem) => selectActiveIdentity(elem))\n\n // Initialize data-tooltips\n element.querySelectorAll(\"[data-tooltip]\").forEach((elem) => createTooltip(elem))\n\n // Initialize data-toggles\n element.querySelectorAll(\"[data-toggle]\").forEach((elem) => createToggle(elem))\n\n element.querySelectorAll(\"[data-remote-tooltip]\").forEach((elem) => fetchRemoteTooltip(elem))\n\n element.querySelectorAll(\".new_report\").forEach((elem) => changeReportFormBehavior(elem))\n}\n\n// If no jQuery is used the Tribute feature used in comments to autocomplete\n// mentions stops working\n// document.addEventListener(\"DOMContentLoaded\", () => {\n$(() => initializer());\n\n// Run initializer action over the new DOM elements\ndocument.addEventListener(\"remote-modal:loaded\", ({ detail }) => initializer(detail));\ndocument.addEventListener(\"ajax:loaded\", ({ detail }) => initializer(detail));\n\n// Run initializer action over the new DOM elements (for example after comments polling)\ndocument.addEventListener(\"comments:loaded\", (event) => {\n const commentsIds = event.detail.commentsIds;\n if (commentsIds) {\n commentsIds.forEach((commentId) => {\n const commentsContainer = document.getElementById(`comment_${commentId}`);\n if (commentsContainer) {\n initializer(commentsContainer)\n }\n });\n }\n});\n","/* eslint-disable require-jsdoc */\n\n/**\n * If you want to disable the warning but indicate that the link is an external\n * link, please define the `data-external-link-warning=\"false\"` attribute for\n * the link,\n * e.g. <a href=\"https://...\" target=\"_blank\" data-external-link=\"text-only\" data-external-domain-link=\"false\">...</a>\n *\n * @param {HTMLElement} element The element for which to replace the link href for.\n * @returns {void} Nothing\n */\nexport default function updateExternalDomainLinks(element) {\n if (window.location.pathname === \"/link\") {\n return;\n }\n\n if (!element.hasAttribute(\"href\") || element.closest(\".editor-container\")) {\n return;\n }\n\n if (element.dataset.externalDomainLink === \"false\") {\n return;\n }\n\n const parts = element.href.match(/^(([a-z]+):)?\\/\\/([^/:]+)(:[0-9]*)?(\\/.*)?$/) || null;\n if (!parts) {\n return;\n }\n\n const domain = parts[3].replace(/^www\\./, \"\")\n const whitelist = window.Decidim.config.get(\"external_domain_whitelist\") || []\n if (whitelist.includes(domain)) {\n return;\n }\n\n const externalHref = `/link?external_url=${encodeURIComponent(element.href)}`;\n element.href = externalHref;\n element.dataset.remote = true\n}\n","/**\n * Changes \"Back to list\" links to the one saved in sessionStorage API\n * To apply this to a link, at least one element must have the class \"js-back-to-list\".\n * For this to work it needs the filteredParams in SessionStorage, that is saved on FormFilterComponent.\n * @param {NodeList} links - Hyperlinks elements that point to the filters page that will use the fitererd params\n * @returns {void}\n */\nexport default function backToListLink(links) {\n\n if (!links) {\n return;\n }\n\n if (!window.sessionStorage) {\n return;\n }\n\n const filteredParams = JSON.parse(sessionStorage.getItem(\"filteredParams\")) || {};\n links.forEach((link) => {\n const href = link.getAttribute(\"href\");\n if (filteredParams[href]) {\n link.setAttribute(\"href\", filteredParams[href]);\n }\n });\n\n}\n","/**\n * Scroll smoothly to the last message automatically when the page is fully loaded.\n * To apply this to a page, at least one element must have the class \"scroll-to-last-message\".\n *\n * @param {HTMLElement} node target node\n * @returns {void}\n */\nexport default function(node = document) {\n const element = node.querySelector(\"[data-scroll-last-child]\")\n if (element && element.children.length) {\n const lastChild = [...element.children].pop()\n window.scrollTo({ top: lastChild.offsetTop, behavior: \"smooth\" });\n }\n}\n","/**\n * Send a request to select which identity want to use\n * NOTE: this should not be done using javascript\n *\n * @param {HTMLElement} node target node\n * @returns {void}\n */\nexport default function(node = document) {\n node.addEventListener(\"click\", ({ target: element }) => {\n const { method } = element.dataset\n\n let attr = \"destroy_url\";\n\n if (method === \"POST\") {\n attr = \"create_url\";\n }\n\n const { [attr]: url } = element.dataset\n Rails.ajax({\n url: url,\n type: method,\n success: function() {\n if (method === \"POST\") {\n element.classList.add(\"is-selected\")\n element.dataset.method = \"DELETE\"\n } else {\n element.classList.remove(\"is-selected\")\n element.dataset.method = \"POST\"\n }\n }\n })\n })\n}\n","/**\n * Toggles the visibility of an HTML element (or elements),\n * when the trigger is activated.\n *\n * @param {HTMLElement} component trigger element\n * @returns {void}\n */\nexport default function createToggle(component) {\n const { toggle } = component.dataset\n\n if (!component.id) {\n // when component has no id, we enforce it to have one\n component.id = `toggle-${Math.random().toString(36).substring(7)}`\n }\n\n component.setAttribute(\"aria-controls\", toggle);\n toggle.split(\" \").forEach((id) => {\n const node = document.getElementById(id)\n\n if (node) {\n node.setAttribute(\"aria-labelledby\", [node.getAttribute(\"aria-labelledby\"), component.id].filter(Boolean).join(\" \"))\n }\n })\n\n component.addEventListener(\"click\", () => {\n toggle.split(\" \").forEach((id) => {\n const node = document.getElementById(id)\n\n if (node) {\n node.hidden = !node.hidden\n node.setAttribute(\"aria-expanded\", !node.hidden);\n }\n });\n\n document.dispatchEvent(new Event(\"on:toggle\"));\n })\n}\n","// DO NOT include any javascript file here, but inside the following file instead\nimport \"src/decidim/index\"\n\n// Place for custom scripts\nimport \"src/decidim/decidim_application\"\n\n// CSS\nimport \"entrypoints/decidim_core.scss\"\n\n// Images\nrequire.context(\"../images\", true)\n"],"names":["this","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","call","nonce","loadCSPNonce","ref","document","querySelector","content","cspNonce","expando","m","Element","prototype","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","key","setData","value","$","Array","slice","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","forEach","input","CustomEvent","fire","preventDefault","window","event","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","result","defaultPrevented","Object","defineProperty","get","obj","name","data","dispatchEvent","stopEverything","e","target","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","error","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","type","toUpperCase","indexOf","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","createElement","setAttribute","head","appendChild","removeChild","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","push","checked","map","encodeURIComponent","join","formElements","form","filter","el","allowAction","handleConfirm","confirm","message","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","link","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","args","arguments","length","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","start","_rails_loaded","setTimeout","module","exports","factory","sparkMd5","fn","createCommonjsModule","undefined","hex_chr","md5cycle","x","k","a","b","c","d","md5blk","s","i","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","n","state","substring","toString","parseInt","md51_array","subarray","Uint8Array","rhex","j","hex","toUtf8","str","test","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arr","arrayBuffer2Utf8Str","String","fromCharCode","apply","concatenateArrayBuffers","first","second","byteLength","set","buffer","hexToBinaryString","bytes","substr","SparkMD5","reset","clamp","val","max","min","from","to","num","targetArray","sourceArray","begin","end","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","create","_this","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElement","root","eventInit","initEvent","toArray$1","isArray","BlobRecord","checksum","attributes","filename","content_type","byte_size","responseType","getMetaValue","requestDidLoad","requestDidError","stringify","blob","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","notify","upload","object","methodName","_len","messages","_key","DirectUploadController","directUpload","dispatch","hiddenInput","insertAdjacentElement","dispatchError","signed_id","progress","loaded","total","alert","_this2","uploadRequestDidProgress","DirectUploadsController","files","controllers","createDirectUploadControllers","startNextController","controller","shift","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","disable","removeAttribute","enable","focus","submitForm","ActiveStorage","_typeof","define","t","keys","getOwnPropertySymbols","r","getOwnPropertyDescriptor","getOwnPropertyDescriptors","Symbol","iterator","constructor","o","u","insertBefore","toLowerCase","normalize","l","class","outerHTML","f","feedback","p","mode","diacritics","highlight","Promise","cache","store","src","then","h","searchEngine","resultItem","next","resultsList","maxResults","query","results","y","v","selection","index","g","isOpen","wrapper","list","w","O","getElementsByTagName","tag","split","cursor","classList","remove","add","scrollTop","offsetTop","clientHeight","A","L","HTMLInputElement","HTMLTextAreaElement","trigger","threshold","noResults","DocumentFragment","concat","role","inside","S","T","events","debounce","clearTimeout","keydown","keyCode","submit","tabSelect","blur","mousedown","closest","nodeName","E","placeHolder","placeholder","around","dest","destination","position","hidden","init","unInit","close","goTo","previous","select","search","instances","appendAround","each","$self","att","$parent","parent","attval","attr","$set","isHidden","elem","css","appendToVisibleContainer","found","appendTo","bind","AbideFormValidatorFixer","_classCallCheck","isElementVisible","setupForm","offsetParent","getComputedStyle","_input$closest","errorElement","parentElement","hideErrorElement","initialize","on","$target","dialogTarget","redirectUrl","querystring","parameter","urlParts","urlBase","queryString","prefix","parts","lastIndexOf","splice","removeUrlParameter","$callout","$inputs","selectionStart","selectionEnd","originalEvent","dataset","jumpNext","maxLength","jumpPrev","prev","$responsiveTabBlock","innerWidth","toggleClass","console","process","allMessages","Decidim","config","selfxssWarning","log","title","description","_regeneratorRuntime","hasOwnProperty","asyncIterator","toStringTag","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","values","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isNaN","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","reverse","pop","charAt","stop","rval","handle","finish","delegateYield","asyncGeneratorStep","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","visitedPages","sessionStorage","getItem","deferredPrompt","includes","pathname","setItem","_ref","_callee","_yield$deferredPrompt","outcome","_context","localStorage","prompt","userChoice","removeItem","_next","_throw","_x","_asyncToGenerator","mandatoryElements","isOperaMini","navigator","serviceWorker","register","scope","userAgent","_callee5","GRANTED_PERMISSION","hideReminder","subscribeToNotifications","unsubscribeFromNotifications","setToggleState","toggle","registration","_context5","_ref2","permission","vapidElement","vapidPublicKeyElement","subscription","_document$querySelect","Notification","requestPermission","pushManager","subscribe","userVisibleOnly","applicationServerKey","fetch","_ref3","_callee2","_document$querySelect2","currentSubscription","auth","_context2","getSubscription","_x2","_ref4","_callee3","toggleChecked","_context3","_x3","_x4","getElementById","ready","_ref6","_callee4","_ref5","_context4","_x5","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","addTest","addAsyncTest","Modernizr","documentElement","aliases","Boolean","className","baseVal","RegExp","code","require","_TributeEvents","_interopRequireDefault","_TributeMenuEvents","_TributeRange","_TributeSearch","__esModule","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","err","_iterableToArrayLimit","_nonIterableRest","_defineProperties","_default","Tribute","_ref$values","_ref$iframe","iframe","_ref$selectClass","selectClass","_ref$trigger","_ref$autocompleteMode","autocompleteMode","_ref$selectTemplate","selectTemplate","_ref$menuItemTemplate","menuItemTemplate","_ref$lookup","lookup","_ref$fillAttr","fillAttr","_ref$collection","collection","_ref$menuContainer","menuContainer","_ref$noMatchTemplate","noMatchTemplate","_ref$requireLeadingSp","requireLeadingSpace","_ref$allowSpaces","allowSpaces","_ref$replaceTextSuffi","replaceTextSuffix","_ref$positionMenu","positionMenu","_ref$spaceSelectsMatc","spaceSelectsMatch","_ref$searchOpts","searchOpts","_ref$menuItemLimit","menuItemLimit","menuSelected","current","inputEvent","isActive","hasTrailingSpace","defaultSelectTemplate","defaultMenuItemTemplate","warn","item","range","isContentEditable","original","matchItem","string","NodeList","HTMLCollection","_attach","ensureEditable","inputTypes","contentEditable","getDocument","ul","scrollTo","mentionText","currentMentionTextSnapshot","menu","createMenu","tributeMenu","menuEvents","processValues","items","pre","post","skip","extract","filteredItems","positionMenuAtCaret","noMatchEvent","hideMenu","fragment","createDocumentFragment","li","_this2$_findLiTarget2","_findLiTarget","movementY","setActiveLi","collectionIndex","activeElement","placeCaretAtEnd","externalTrigger","insertTextAtCursor","insertAtCaret","showMenuFor","getSelection","createRange","selectNodeContents","collapse","sel","removeAllRanges","addRange","createTextRange","textRange","moveToElementText","getRangeAt","deleteContents","textNode","createTextNode","insertNode","textarea","scrollPos","caretPos","front","back","cssText","replaceText","replaceTriggerText","newValues","_append","_detach","_this3","unbind","TributeEvents","tribute","boundKeydown","boundKeyup","keyup","boundInput","shouldDeactivate","commandEvent","callbacks","contains","getElementsByClassName","selectItemAtIndex","updateSelection","triggerChar","getKeyCode","triggers","find","eventKeyPressed","info","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","collectionItem","enter","escape","tab","space","up","count","scrollHeight","down","lis","liClientRect","getBoundingClientRect","menuClientRect","bottom","scrollDistance","top","_scrollDistance","includeMargin","height","currentStyle","parseFloat","marginTop","marginBottom","TributeMenuEvents","menuClickEvent","menuContainerScrollEvent","windowResizeEvent","func","wait","immediate","timeout","_arguments","context","callNow","TributeRange","contentWindow","coordinates","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","left","right","scrollIntoView","menuDimensions","width","offsetWidth","offsetHeight","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","menuIsOffScreenVertically","innerHeight","targetElement","path","offset","childNodes","nextSibling","previousSibling","getWindowSelection","setStart","setEnd","replaceEvent","pasteHtml","myField","textSuffix","startPos","endPos","anchorNode","node","lastNode","frag","firstChild","cloneRange","setStartAfter","ctx","ce","getNodePositionInParent","startOffset","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","wordsArray","trim","menuAlreadyActive","isAutocomplete","selectionInfo","getContentEditableSelectedPath","effectiveRange","getTextPrecedingCurrentSelection","lastWordOfEffectiveRange","getLastWordInText","mentionSelectedElement","mostRecentTriggerCharPos","idx","lastIndexWithLeadingSpace","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","_char","reversedStr","cidx","len","firstChar","windowWidth","windowHeight","doc","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","menuTop","menuRight","menuBottom","menuLeft","dimensions","flipped","isFirefox","mozInnerScreenX","div","computed","whiteSpace","wordWrap","visibility","prop","overflowY","overflow","span","rect","menuContainerIsBody","borderTopWidth","fontSize","offsetLeft","borderLeftWidth","getMenuDimensions","parentHeight","scrollStillAvailable","selectedNodePosition","markerEl","markerId","Date","getTime","random","prevRange","clientRect","elemTop","elemBottom","maxY","targetY","TributeSearch","pattern","array","opts","compareString","caseSensitive","rendered","score","patternCache","traverse","render","stringIndex","patternIndex","calculateScore","best","temp","indices","reduce","sort","compare","predicate","thisArg","M","weekdays","months","ordinal","z","utcOffset","abs","date","year","month","clone","D","ms","Q","_","locale","$L","utc","$u","$x","$offset","$d","NaN","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","valueOf","toDate","$locale","weekStart","daysInMonth","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","globalThis","Function","self","global","runtime","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","generator","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","PromiseImpl","reject","record","unwrapped","previousPromise","delegateResult","locs","entry","iterable","iteratorMethod","genFun","ctor","iter","skipTempReset","rootRecord","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","regeneratorRuntime","accidentalStrictMode","selectedText","isReadOnly","setSelectionRange","svg4everybody","embed","svg","viewBox","cloneNode","loadreadystatechange","cachedDocument","_cachedDocument","implementation","createHTMLDocument","_cachedTarget","_embeds","rawopts","oninterval","uses","use","getSVGAncestor","attributeName","polyfill","validate","srcSplit","requests","numberOfSvgUseElementsToBypass","requestAnimationFrame","newerIEUA","webkitUA","olderEdgeUA","edgeUA","inIframe","defaultTheme","default","_cloneDeep","_configfull","_interop_require_default","cloneDeep","theme","child","fromEntries","entries","presets","darkMode","accentColor","_objectSpread","auto","animation","none","spin","ping","pulse","bounce","aria","busy","expanded","pressed","readonly","required","aspectRatio","square","video","backdropBlur","backdropBrightness","backdropContrast","backdropGrayscale","backdropHueRotate","backdropInvert","_ref7","backdropOpacity","_ref8","backdropSaturate","_ref9","backdropSepia","_ref10","backgroundColor","_ref11","backgroundImage","backgroundOpacity","_ref12","backgroundPosition","center","backgroundSize","cover","contain","sm","DEFAULT","md","lg","xl","borderColor","_ref13","borderOpacity","_ref14","borderRadius","full","borderSpacing","_ref15","borderWidth","boxShadow","inner","boxShadowColor","_ref16","brightness","caretColor","_ref17","colors","_ref18","inherit","transparent","black","white","slate","gray","zinc","neutral","stone","red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","columns","xs","container","contrast","pointer","move","help","cell","crosshair","alias","copy","grab","grabbing","divideColor","_ref19","divideOpacity","_ref20","divideWidth","_ref21","dropShadow","fill","_ref22","flex","initial","flexBasis","_ref23","flexGrow","flexShrink","fontFamily","sans","serif","mono","lineHeight","base","fontWeight","thin","extralight","light","normal","medium","semibold","bold","extrabold","gap","_ref24","gradientColorStops","_ref25","gradientColorStopPositions","grayscale","gridAutoColumns","fr","gridAutoRows","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","gridTemplateColumns","subgrid","gridTemplateRows","_ref26","screen","svh","lvh","dvh","fit","hueRotate","inset","_ref27","invert","keyframes","transform","opacity","animationTimingFunction","letterSpacing","tighter","tight","wide","wider","widest","snug","relaxed","loose","listStyleType","disc","decimal","listStyleImage","margin","_ref28","lineClamp","maxHeight","_ref29","maxWidth","_ref30","breakpoints","prose","minHeight","_ref31","minWidth","_ref32","objectPosition","order","last","outlineColor","_ref33","outlineOffset","outlineWidth","padding","_ref34","placeholderColor","_ref35","placeholderOpacity","_ref36","ringColor","_ref37","ringOffsetColor","_ref38","ringOffsetWidth","ringOpacity","_ref39","ringWidth","rotate","saturate","scale","screens","scrollMargin","_ref40","scrollPadding","_ref41","sepia","skew","_ref42","spacing","px","stroke","_ref43","strokeWidth","supports","textColor","_ref44","textDecorationColor","_ref45","textDecorationThickness","textIndent","_ref46","textOpacity","_ref47","textUnderlineOffset","transformOrigin","transitionDelay","transitionDuration","transitionProperty","all","shadow","transitionTimingFunction","linear","in","out","translate","_ref48","_ref49","_ref50","svw","lvw","dvw","willChange","scroll","zIndex","plugins","_defineProperty","_toPropertyKey","_createForOfIteratorHelper","F","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_inherits","_setPrototypeOf","_createClass","toPrimitive","_toPrimitive","forEvents","MicroEvent","_events","fct","event_array","unicode_map","multi_char_reg","arrayToPattern","chars","maxValueLength","sequencePattern","hasDuplicates","prev_char_count","prev_pattern","char","setToPattern","Set","escape_regex","longest","unicodeLength","allSubstrings","subresult","unshift","code_points","max_char_length","latin_convert","latin_condensed","latin","unicode","convert_pat","asciifold","_asciifold","_iterator","_step","_step$value","code_point_min","code_point_max","composed","folded","code_point","t0","_marked","generateMap","unicode_sets","_step2","addMatching","to_add","folded_set","patt","_iterator2","generateSets","multi_char","multi_char_patt","substringsToPattern","min_replacement","sub_pat","strings","chars_replaced","mapSequence","sequencesToPattern","sequences","sequence","seq","substrs","inSequences","needle_seq","_step3","_iterator3","_ret","_loop","needle_parts","part","_step4","_iterator4","needle_part","Sequence","last_piece","_step5","last_part","_iterator5","last_substr","clone_last_len","getPattern","_code_points","_step6","match_str","overlapping","added_types","_iterator6","_step7","_iterator7","has","new_seq","old_seq","getAttr","getAttrNesting","names","scoreValue","weight","pos","propToArray","iterate$1","cmp","Sifter","settings","respect_word_boundaries","weights","_this4","field_regex","tokens","words","word","field_match","field","prepareSearch","_getScoreFunction","token_count","fields","field_count","getAttrFn","scoreObject","sum","conjunction","_step8","_iterator8","_getSortFunction","implicit_score","sort_flds","sort_empty","get_field","_step9","_iterator9","_step10","_iterator10","direction","fld","_step11","_iterator11","sort_fld","optsUser","assign","tokenize","nesting","fn_score","fn_sort","limit","iterate","getDom","jquery","HTMLElement","isHtmlString","tpl","triggerEvent","dom_el","event_name","applyCSS","addClasses","elmts","_len4","classes","_key3","norm_classes","classesArray","castAsArray","cls","removeClasses","_len5","_key4","_classes","parentMatch","getTail","nodeIndex","amongst","previousElementSibling","setAttr","attrs","replaceNode","existing","replaceChild","highlightChildren","nodeType","highlightRecursive","spannode","middlebit","splitText","middleclone","highlightText","KEY_SHORTCUT","defaults","optgroups","delimiter","splitOn","persist","createOnBlur","createFilter","openOnFocus","shouldOpen","maxOptions","maxItems","hideSelected","duplicates","addPrecedence","selectOnTab","preload","allowEmptyOption","loadThrottle","loadingClass","dataAttr","optgroupField","valueField","labelField","disabledField","optgroupLabelField","optgroupValueField","lockOptgroupOrder","sortField","searchField","searchConjunction","wrapperClass","controlClass","dropdownClass","dropdownContentClass","itemClass","optionClass","dropdownParent","controlInput","copyClassesToDropdown","hidePlaceholder","shouldLoad","hash_key","get_hash","escape_html","debounce_events","types","event_args","_step12","_iterator12","addEvent","isKeyDown","key_name","altKey","shiftKey","getId","existing_id","addSlashes","getSettings","settings_user","attr_data","field_label","field_value","field_disabled","field_optgroup","field_optgroup_label","field_optgroup_value","tag_name","optionsMap","group_count","readData","addOption","settings_element","group","option_data","$option","children","optgroup","optgroup_data","data_raw","opt","init_textbox","Interface","instance_i","TomSelect","_MicroPlugin","input_arg","user_settings","_this5","dir","control_input","dropdown","control","dropdown_content","focus_node","tabIndex","is_select_tag","rtl","inputId","_destroy","sifter","isDisabled","isRequired","isInvalid","isLocked","isFocused","isInputHidden","isSetup","ignoreFocus","ignoreHover","hasOptions","currentResults","lastValue","loading","loadedSearches","activeOption","activeItems","userOptions","tomselect","getPropertyValue","initializePlugins","setupCallbacks","setupTemplates","_render","inputMode","setup","passive_event","passive","listboxId","delay","control_id","escapeQuery","label","label_click","for","label_id","classes_plugins","multiple","load","target_match","onOptionHover","capture","onOptionSelect","onItemSelect","onClick","onKeyDown","onKeyPress","onInput","onBlur","onFocus","onPaste","doc_mousedown","composedPath","inputState","win_scroll","positionDropdown","revertSettings","sync","refreshState","updateOriginalInput","refreshItems","onChange","_this6","addOptions","registerOptionGroup","templates","setupOptions","setValue","lastQuery","clearActiveItems","_this7","pastedText","inputValue","splitInput","piece","addItem","createItem","character","which","selectAll","getAdjacent","setActiveOption","canSelect","advanceSelection","deleteSelection","refreshOptions","wasFocused","showInput","hasFocus","deactivate","setActiveItem","setCaret","closeAfterSelect","canLoad","loadCallback","clearActiveOption","silent","_this8","clear","addItems","eventName","swap","getLastActive","setActiveItemClass","removeActiveItem","hideInput","last_active","scrollToOption","behavior","height_menu","height_item","scrollBehavior","controlChildren","setTextboxValue","getScoreFunction","getSearchOptions","hashed","has_create_option","active_group","triggerDropdown","groups","groups_order","same_query","active_option","show_dropdown","opt_value","opt_hash","option_el","getOption","group_fragment","$id","grp_a","grp_b","$order","group_heading","group_options","header","group_html","tok","add_template","template","canCreate","active_index","selectable","user_created","_this9","dat","hashed_id","clearCache","item_new","index_item","value_old","value_new","data_old","uncacheValue","option_new","boundFilter","clearFilter","$div","last_item","isPending","_this10","wasFull","isFull","removeOption","output","caret","lock","created","unlock","refreshValidityState","wrap_classList","validity","valid","empty_option","AddSelected","has_selected","reuse_opt","getValue","scrollY","scrollX","rm_items","rm_item","shouldDelete","onDelete","adjacent","nextElementSibling","moveCaret","new_pos","off","templateName","when","new_fn","orig_method","result_new","_Interface","_class","_len2","_key2","requested","queue","plugin","loadPlugin","hook","orig_onBlur","relatedTarget","preventScroll","orig_deleteSelection","orig_render_item","close_button","webpackContext","req","webpackContextResolve","__webpack_require__","isCallable","tryToString","$TypeError","argument","isObject","$String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","fromIndex","uncurryThis","stringSlice","it","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","source","exceptions","DESCRIPTORS","createPropertyDescriptor","bitmap","makeBuiltIn","getter","setter","defineGlobalProperty","simple","unsafe","nonConfigurable","nonWritable","fails","documentAll","IS_HTMLDDA","EXISTS","Bun","version","classof","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","sham","exec","NATIVE_BIND","FunctionPrototype","aCallable","that","getDescriptor","PROPER","CONFIGURABLE","classofRaw","uncurryThisWithBind","namespace","isNullOrUndefined","V","P","check","toObject","getBuiltIn","$Object","propertyIsEnumerable","functionToString","inspectSource","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","metadata","facade","STATE","enforce","getterFor","TYPE","$documentAll","feature","detection","POLYFILL","NATIVE","isPrototypeOf","USE_SYMBOL_AS_UID","toLength","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","arity","trunc","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","internalObjectKeys","getOwnPropertyNames","$propertyIsEnumerable","NASHORN_BUG","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","hasIndices","ignoreCase","multiline","dotAll","unicodeSets","sticky","ENGINE_IS_BUN","USER_AGENT","arraySlice","validateArgumentsLength","WRAP","scheduler","hasTimeArg","firstParamIndex","boundArgs","uid","SHARED","IS_PURE","copyright","license","V8_VERSION","symbol","$location","defer","channel","port","IS_IOS","IS_NODE","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","ONREADYSTATECHANGE","run","runner","eventListener","globalPostMessageDefer","postMessage","nextTick","now","port2","port1","onmessage","importScripts","toIntegerOrInfinity","integer","IndexedObject","requireObjectCoercible","number","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","postfix","NATIVE_SYMBOL","passed","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","defineBuiltInAccessor","regExpFlags","RegExpPrototype","INDICES_SUPPORT","calls","expected","addGetter","chr","pairs","setTask","schedulersFix","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","definition","nmd","paths","GetYoDigits","RegExpEscape","transitionend","$elem","transitions","transition","triggerHandler","onLoad","didLoad","cb","one","ignoreMousedisappear","_ref$ignoreLeaveWindo","ignoreLeaveWindow","_ref$ignoreReappear","ignoreReappear","eLeave","rest","eReenter","currentTarget","matchMedia","styleMedia","media","matchMedium","styleSheet","MediaQuery","queries","_init","isInitialized","namedQueries","extractedStyles","styleObject","decodeURIComponent","parseStyleToObject","_getCurrentSize","_watcher","_reInit","atLeast","only","upTo","nextSize","is","_parts","bpSize","_parts$","bpModifier","queryIndex","findIndex","q","_getQueryName","nextQuery","matched","newSize","currentSize","Foundation","_plugins","_uuids","_plugin","functionName","attrName","hyphenate","registerPlugin","pluginName","uuid","$element","unregisterPlugin","removeAttr","removeData","reInit","isJQ","fns","plgs","foundation","reflow","addBack","$el","parseValue","er","getFnName","addToJquery","$noJS","removeClass","plugClass","util","throttle","timer","vendors","vp","cancelAnimationFrame","lastTime","nextTime","performance","oThis","aArgs","fToBind","fNOP","fBound","Box","ImNotTouchingYou","lrOnly","tbOnly","ignoreBottom","OverlapArea","GetDimensions","GetExplicitOffsets","anchor","alignment","vOffset","hOffset","isOverflow","topVal","leftVal","$eleDims","$anchorDims","topOver","bottomOver","leftOver","rightOver","eleDims","parDims","windowDims","sqrt","parRect","winRect","winY","winX","parentDims","onImagesLoaded","images","unloaded","singleImageLoaded","naturalWidth","image","Image","me","keyCodes","commands","findFocusable","aTabIndex","bTabIndex","parseKey","Keyboard","kcs","kc","getKeyCodes","handleKey","component","functions","commandList","zfIsKeyHandled","ltr","returnValue","handled","unhandled","componentName","cmds","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","releaseFocus","initClasses","activeClasses","Motion","animateIn","animate","animateOut","Move","duration","anim","prog","ts","isIn","initClass","activeClass","addClass","show","hide","Nest","Feather","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","firstItem","Burn","Timer","nameSpace","remain","isPaused","restart","infinite","pause","startPosX","startTime","elapsedTime","startEvent","Touch","isMoving","didMoved","onTouchEnd","onTouchMove","tapEvent","touches","pageX","dx","moveThreshold","timeThreshold","onTouchStart","SpotSwipe","enabled","special","swipe","tap","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","changedTouches","touchstart","touchmove","touchend","MouseEvent","screenX","screenY","clientX","clientY","initMouseEvent","MutationObserver","prefixes","Triggers","Listeners","Basic","Global","Initializers","debounceGlobalListener","listener","openListener","closeListener","toggleListener","closeableListener","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","not","addClosemeListener","yetiBoxes","plugNames","listeners","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","observe","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","__","IHearYou","Plugin","_setup","getPluginName","Abide","_Plugin","_super","_createSuper","isEnabled","formnovalidate","$submits","$globalErrors","a11yAttributes","addA11yAttributes","addGlobalErrorA11yAttributes","resetForm","validateForm","validateOn","validateInput","liveValidate","validateOnBlur","isGood","failedValidators","$error","siblings","formErrorSelector","$label","$els","labels","findLabel","$formError","findFormError","labelErrorClass","formErrorClass","inputErrorClass","addA11yErrorDescribe","$errors","$labels","elemId","errorId","a11yErrorLevel","groupName","findRadioLabels","$formErrors","findCheckboxLabels","removeRadioErrorClasses","removeCheckboxErrorClasses","clearRequire","requiredCheck","validator","manageErrorClasses","_validationIsDisabled","validateRadio","validateCheckbox","validateText","validators","equalTo","goodToGo","dependentElements","removeErrorClasses","addErrorClasses","checkboxGroupName","acc","initialized","noError","inputText","patterns","$group","minRequired","$form","alpha","alpha_numeric","card","cvv","email","domain","datetime","time","dateISO","month_day_year","day_month_year","color","website","Accordion","_isInitializing","$tabs","$content","linkId","$initActive","_initialAnchor","_openSingleTab","_checkDeepLink","$anchor","$link","hasClass","_closeAllTabs","deepLinkSmudge","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","$tabContent","$a","multiExpand","updateHistory","history","pushState","replaceState","_openTab","$targetItem","$othersItems","allowAllClosed","_closeTab","$activeContents","targetContentId","slideDown","slideSpeed","slideUp","$activeTabs","AccordionMenu","multiOpen","$menuLinks","subId","parentLink","prependTo","submenuToggle","after","submenuToggleText","initPanes","$submenu","$prevElement","$nextElement","$elements","parents","closeAll","hideAll","$targetBranch","parentsUntil","$othersActiveSubmenus","$submenus","$allmenus","detach","Drilldown","autoApplyClass","$submenuAnchors","$menuItems","$currentMenu","_prepareMenu","_registerEvents","_keyboardEvents","$menu","backButtonPosition","backButton","prepend","_back","autoHeight","$wrapper","animateHeight","_getMaxDims","_show","closeOnClick","$body","ev","_hideAll","_bindHandler","_scrollTop","_resize","$scrollTopElement","scrollTopElement","scrollTopOffset","animationDuration","animationEasing","_hide","calcHeight","parentSubMenu","autoFocus","_setHideSubMenuClasses","isLastChild","_setShowSubMenuClasses","unwrap","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","nextItem","currentIdx","Positionable","triedPositions","_getDefaultPosition","_getDefaultAlignment","originalPosition","originalAlignment","_alignmentsExhausted","_realign","_addTriedPosition","isExhausted","allowOverlap","_getVOffset","_getHOffset","minOverlap","minCoordinates","_positionsExhausted","overlap","allowBottomOverlap","_reposition","Dropdown","_Positionable","$anchors","_setCurrentAnchor","parentClass","$currentAnchor","_get","horizontalPosition","hasTouch","ontouchstart","_setPosition","forceFollow","hover","bodyData","whatinput","hoverDelay","hoverPane","_addBodyHandler","DropdownMenu","subs","verticalClass","rightClass","changed","parClass","clickOpen","hasSub","hasClicked","closeOnClickInside","disableHoverOnTouch","disableHover","autoclose","closingTime","isTab","prevSibling","openSub","closeSub","_isVertical","_isRtl","_removeBodyHandler","$sibs","oldClass","$parentLi","$toClose","$activeItem","Equalizer","eqId","$watched","hasNested","isNested","isOn","onResizeMeBound","_onResizeMe","onPostEqualizedBound","_onPostEqualized","tooSmall","imgs","equalizeOn","_checkMQ","_reflow","_pauseEvents","equalizeOnStack","_isStacked","equalizeByRow","getHeightsByRow","applyHeightByRow","getHeights","applyHeight","heights","lastElTopOffset","elOffsetTop","ln","groupsILength","lenJ","Interchange","rules","currentPath","_parseOptions","_addBreakpoints","_generateRules","rule","SPECIAL_QUERIES","rulesList","SmoothScroll","_linkClickListener","_handleLinkClick","arrival","_inTransition","scrollToLoc","$loc","Magellan","calcPoints","$targets","$links","$active","points","winHeight","docHeight","$tar","pt","targetPoint","deepLinking","_updateActive","onLoadListener","_deepLinkScroll","activeIdx","newScrollPos","isScrollingUp","visibleLinks","$oldActive","activeHash","isNewActive","isNewHash","OffCanvas","contentClasses","reveal","$lastTrigger","$triggers","nested","$sticky","isInCanvas","contentId","contentOverlay","overlay","overlayPosition","$overlay","insertAfter","revealOnClass","revealClass","isRevealed","revealOn","_setMQChecker","transitionTime","contentScroll","inCanvasFor","inCanvasOn","_checkInCanvas","_removeContentClasses","_handleKeyboard","hasReveal","absoluteTopVal","stickyData","_addContentClasses","lastY","pageY","delta","_canScroll","allowUp","allowDown","forceTo","_stopScrolling","_recordScrollable","_preventDefaultAtEdges","_scrollboxTouchMoved","canvasFocus","_fixStickyElements","_unfixStickyElements","Orbit","_reset","containerClass","$slides","slideClass","$images","initActive","useMUI","_prepareForOrbit","bullets","_loadBullets","autoPlay","geoSync","accessible","$bullets","boxOfBullets","timerDelay","changeSlide","_setWrapperHeight","pauseOnHover","navButtons","nextClass","prevClass","$slide","_updateBullets","isLTR","chosenSlide","$curSlide","$newSlide","$firstSlide","$lastSlide","dirIn","dirOut","infiniteWrap","$oldBullet","$othersBullets","$newBullet","activeStateDescriptor","spans","spanCountInOthersBullets","every","animInFromRight","animOutToRight","animInFromLeft","animOutToLeft","MenuPlugins","cssClass","drilldown","accordion","ResponsiveMenu","currentMq","currentPlugin","rulesTree","ruleSize","rulePlugin","_checkMediaQueries","matchedMq","ResponsiveToggle","targetID","$targetMenu","$toggler","animationIn","animationOut","_update","_updateMqHandler","toggleMenu","hideFor","Reveal","cached","mq","fullScreen","_makeOverlay","additionalOverlayClasses","outerWidth","outerHeight","_updatePosition","_handleState","$activeAnchor","multipleOpened","_disableScroll","focusableElements","_addGlobalClasses","showDelay","_addGlobalListeners","updateScrollbarClass","closeOnEsc","finishUp","_removeGlobalClasses","_enableScroll","hideDelay","resetOnClose","urlWithoutHash","Slider","handles","$handle","$input","$fill","vertical","disabledClass","binding","_setInitAttr","doubleSided","$handle2","$input2","setHandles","_setHandlePos","pctOfBar","percent","positionValueFunction","_logTransform","_powTransform","toFixed","baseLog","nonLinearBase","pow","$hndl","isDbl","h2Val","step","h1Val","vert","hOrW","lOrT","handleDim","elemDim","_pctOfBar","movement","_setValues","dim","isLeftHndl","handlePct","handlePos","initialStart","moveTime","changedDelay","initVal","initialEnd","_adjustValue","eventOffset","barDim","windowScroll","elemOffset","barXY","eventFromBar","offsetPct","_value","absPosition","previousVal","_eventsForHandle","curHandle","handleChangeEvent","_handleEvent","clickSelect","draggable","newValue","_$handle","oldValue","decrease","increase","decreaseFast","increaseFast","frac","clickPos","invertVertical","Sticky","$container","wasWrapped","stickyClass","scrollCount","checkEvery","isStuck","containerHeight","elemHeight","_parsePoints","_setSizes","_calc","_removeSticky","topPoint","pts","topAnchor","btmAnchor","breaks","place","canStick","_eventsHandler","_pauseListeners","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","stickyOn","newElemWidth","comp","pdngl","pdngr","dynamicHeight","newContainerHeight","_setBreakPoints","mTop","emCalc","mBtm","em","Tabs","$tabTitles","linkClass","linkActiveClass","matchHeight","_setHeight","anchorNoHash","selectTab","_collapse","_addKeyHandler","_addClickHandler","_setHeightMqHandler","_handleTabChange","wrapOnKeys","historyHandled","activeCollapse","$oldTab","$tabLink","$targetContent","_collapseTab","panelActiveClass","$targetAnchor","$activeTab","idStr","hashIdStr","panelClass","panel","Toggler","toggler","$trigger","controls","_updateARIA","Tooltip","isClick","tipText","_buildTemplate","allowHtml","triggerClass","elementClassName","SVGElement","tooltipWidth","tooltipHeight","templateClasses","tooltipClass","showOn","fadeIn","fadeInDuration","fadeOutDuration","isFocus","disableForTouch","touchCloseText","MenuPlugins$1","tabs","ResponsiveAccordionTabs","storezfData","currentRule","_getAllOptions","allOptions","dummyPlugin","tmpPlugin","keyKey","objObj","_changedZfMediaQueryHandler","_handleMarkup","toSet","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","$tabsContent","$placeholder","tempValue","_this$currentRule","_this$currentRule2","_this$currentRule3","NS_XHTML","HAS_TEMPLATE_SUPPORT","HAS_RANGE_SUPPORT","toElement","createFragmentFromTemplate","selectNode","createContextualFragment","createFragmentFromRange","createFragmentFromWrap","compareNodeNames","fromEl","toEl","fromCodeStart","toCodeStart","fromNodeName","toNodeName","syncBooleanAttrProp","specialElHandlers","OPTION","parentName","selectedIndex","INPUT","TEXTAREA","nodeValue","SELECT","curChild","noop","defaultGetNodeKey","morphdom","morphAttrs","fromNode","toNode","toNodeHtml","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","walkDiscardedChildNodes","skipKeyedNodes","removeNode","handleNodeAdded","unmatchedFromEl","morphEl","toElKey","curToNodeKey","curFromNodeKey","fromNextSibling","toNextSibling","matchingFromEl","curToNodeChild","curFromNodeChild","outer","isSameNode","curFromNodeType","isCompatible","onBeforeNodeAddedResult","actualize","ownerDocument","cleanupFromEl","specialElHandler","morphChildren","indexTree","namespaceURI","morphedNode","morphedNodeType","toNodeType","nextChild","moveChildren","createElementNS","elToRemove","morphdomFactory","attrNamespaceURI","attrValue","toNodeAttrs","localName","getAttributeNS","setAttributeNS","fromNodeAttrs","hasAttributeNS","removeAttributeNS","tagContainers","no_results","$hashtagContainer","nodatafound","hashtags","fail","always","remoteSearch","mentionsInitializer","$mentionContainer","users","nickname","__typename","iconsPath","membersCount","avatarUrl","setupEvents","attach","AutoComplete","stickySelectedSpan","clearStickySelectionSpan","stickyHiddenInput","promptDiv","_src","thresholdTemp","searchPrompt","searchPromptText","dataMatchKeys","dataSource","dataFilter","modifyList","modifyResult","autocomplete","AutoCompleteJS","fetchResults","acWrapper","ac","createPromptDiv","createStickySelect","createMultiSelect","setInput","handleStickyEvents","handleMultiEvents","addMultiSelectItem","addStickySelectItem","removeStickySelection","chosen","clearSelection","multiSelectWrapper","inputContainer","createHiddenInput","DEFAULT_ATTRIBUTES","icon","iconKey","iconAttributes","htmlAttributes","newKey","ucw","ariaLabel","updateSubmitButton","$fieldContainer","$selectedItems","$submitButton","mentionsModal","$searchInput","removeLabel","removeRecipient","emptyFocusElement","before","autoComplete","directMessagesEnabled","directMessagesDisabled","focusElement","identifier","registerCallback","callbackId","onpopstate","isTrusted","$temp","copyDone","execCommand","$msg","PasswordToggler","password","texts","showPassword","hidePassword","hiddenPassword","shownPassword","icons","createControls","toggleVisibility","inputGroup","replaceWith","createButton","createStatusText","addInputGroupWrapperAsParent","inputGroupWrapper","formError","isText","$userRegistrationForm","$userGroupFields","userPassword","inputSelector","newsletterSelector","$newsletterModal","setGroupFieldsVisibility","newsletterChecked","currentDialogs","initializeAccountForm","newPasswordPanel","oldPasswordPanel","emailField","originalEmail","emailChanged","newPwVisible","toggleOldPassword","ariaHiddenValue","$deleteAccountForm","$deleteAccountModalForm","oldUserPassword","reasonValue","empty","arrayAll","childMatcher","childFirst","firstElementChild","update","EnterNode","datum","_parent","__data__","bindIndex","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","Map","keyValues","arraylike","ascending","xhtml","xlink","xmlns","namespaces","local","attrRemove","attrRemoveNS","fullname","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","propertyRemove","propertyConstant","propertyFunction","classArray","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","creatorInherit","uri","creatorFixed","constantNull","selection_cloneShallow","selection_cloneDeep","onRemove","typename","__on","onAdd","contextListener","dispatchConstant","dispatchFunction","_groups","Selection","_parents","subgroups","subnode","subgroup","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","constant","enterGroup","updateGroup","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","merge","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","nodes","styleValue","property","classed","creator","insert","deep","typenames","parseTypenames","selection_iterator","valueof","descending","bisector","compare1","compare2","mid","zero","e10","e5","e2","tickSpec","i2","inc","power","log10","factor","tickIncrement","tickStep","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","t1","timeInterval","floori","offseti","interval","d0","d1","setTime","isFinite","millisecond","getUTCSeconds","timeMinute","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","week","day","hour","minute","tickIntervals","tickInterval","_tickIntervals","ticks","_ticker2","_ticker4","timeTicks","timeTickInterval","localDate","H","utcDate","newDate","timeFormat","utcFormat","utcParse","pads","numberRe","percentRe","requoteRe","pad","sign","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newFormat","specifier","newParse","X","formatLocale","ascendingBisect","bisectRight","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","wheat","whitesmoke","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgb_formatHex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","basis","v0","v1","v2","v3","t2","t3","channels","displayable","formatHex8","formatHsl","gamma","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","genericArray","nb","na","reA","reB","am","bm","bs","bi","lastIndex","isView","DataView","isNumberArray","numberArray","unit","identity","bimap","interpolate","r0","r1","polymap","bisect","unknown","transformer","untransform","piecewise","interpolateValue","rescale","clamper","interpolateNumber","rangeRound","interpolateRound","continuous","initRange","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickFormat","nice","x0","x1","timeWeek","timeSecond","prefixExponent","re","formatSpecifier","FormatSpecifier","align","comma","precision","formatDecimalParts","toExponential","coefficient","exponent","toLocaleString","toPrecision","formatRounded","formatPrefix","grouping","thousands","currencyPrefix","currency","currencySuffix","numerals","formatNumerals","minus","nan","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","Infinity","precisionPrefix","precisionRound","precisionFixed","linearish","prestep","maxIter","defaultLocale","epsilon","translateX","translateY","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickSizeInner","tickSizeOuter","tickPadding","devicePixelRatio","range0","range1","tick","tickExit","tickEnter","line","tickSize","isoSpecifier","parseIso","Linear","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","point","lineTo","moveTo","pi","PI","tau","tauEpsilon","Path","digits","_x0","_y0","_x1","_y1","appendRound","_templateObject","_taggedTemplateLiteral","_templateObject2","_templateObject3","y1","_templateObject4","x2","y2","_templateObject5","y0","x21","y21","x01","y01","l01_2","_templateObject6","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","_templateObject8","_templateObject9","_templateObject7","a0","a1","ccw","cos","dy","sin","cw","da","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","withPath","shape","RangeError","defined","curve","curveLinear","defined0","pointX","pointY","areachart","isoParse","parseData","objectName","showAxis","ratio","showTooltip","tip","agg","titlePadding","scaleTime","scaleLinear","_area","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","valueline","extent","circle","tooltip","sourceEvent","ownerSVGElement","createSVGPoint","matrixTransform","getScreenCTM","inverse","coords","tooltipContent","xAxis","yAxis","axisLeft","_g","titleLines","fulltext","wrapwidth","lineNumber","_y","tspan","getComputedTextLength","metricsQuery","metrics","metricsData","metricsContainer","metricsParams","downloadMetricData","metricName","csvContent","metricData","encodeURI","_index","onclick","isEmptyObject","spaceType","spaceId","errors","sessionTimeOutEnabled","$timeoutModal","timeoutInSeconds","secondsUntilTimeoutPath","heartbeatPath","preventTimeOutSeconds","endsAt","dayjs","lastAction","$continueSessionButton","lastActivityCheck","preventTimeOutUntil","timeoutModal","setTimer","secondsUntilExpiration","heartbeat","contentType","exitInterval","setInterval","timeSinceLastActivityCheckInSeconds","seconds","userBeenActiveSince","secondsUntilSessionExpires","seconds_remaining","mousemove","keypress","ajaxComplete","_event","clearInterval","enableSessionTimeout","disableSessionTimeout","ConfirmDialog","sourceElement","$modal","$source","$buttonConfirm","$buttonCancel","completed","origEv","newEv","getMatchingEventTarget","handleDocumentEvent","matchSelectors","some","currentSelector","initializeListingOptionsMenu","containerSelector","callbackName","dataAttribute","linkText","urlParameter","$impersonationWarning","diffInMinutes","reload","Uploader","modal","validationSent","maxFileSize","locales","file_size_too_large","blobId","addAttribute","titled","uploadValidationsUrl","URLSearchParams","resourceClass","formClass","formObjectClass","_Object$entries","request","setProgressBar","attachmentName","truncateFilename","charactersFromBegin","charactersFromEnd","escapeHtml","escapeQuotes","STATUS","UploadModal","providedOptions","dialogOpen","saveButton","cancelButton","modalTitle","dropZone","emptyItems","uploadItems","attachmentCounter","updateDropZone","uploadFile","uploader","directUploadUrl","createUploadItem","hiddenField","autoloadImage","reader","readAsDataURL","onload","res","arrayBuffer","attachmentId","_preloadFiles","nextOrdinalNumber","inputHasFiles","continueUpload","okTemplate","errorTemplate","validation_error","titleTemplate","fullTemplate","handleButtonClick","ix","removable","addlabel","editlabel","requiredCheckbox","resetDropzone","attachmentButton","preloadFiles","uploadFiles","updateModalTitle","highlightDropzone","dataTransfer","defaultFile","previousId","isMultiple","isTitled","removeFiles","fileField","resourceName","_fileField","titleValue","titleField","attachmentIdOrHiddenField","updateAddAttachmentsButton","updateActiveUploads","cleanAllFiles","defaultConverter","read","write","api","converter","defaultAttributes","expires","stringifiedAttributes","cookie","cookies","jar","withAttributes","withConverter","freeze","ConsentManager","categories","cookieName","Cookies","warningElement","updateState","newState","sameSite","secure","updateModalSelections","triggerState","consent","activeScript","allAccepted","childNode","Node","COMMENT_NODE","newElement","createComment","cloned","triggerJavaScripts","triggerIframes","triggerWarnings","category","categoryEl","categoryInput","essential","manager","disabledIframes","initDisabledIframes","acceptAllButton","rejectAllButton","saveSettingsButton","acceptAll","rejectAll","saveSettings","initModal","dialogWrapper","settingsButton","initDialog","Configuration","DEFAULT_MESSAGES","externalLink","opensInNewTab","MESSAGES","ExternalLink","setupTextOnly","generateIcon","generateScreenReaderLabel","dummy","_isExternalLink","externalMatches","regexp","COUNT_KEY","charactersAtLeast","other","charactersLeft","InputCharacterCounter","minCharacters","maxCharacters","describeByCounter","announceThreshold","announceEveryThreshold","targetId","wrapAll","screenReaderId","$srTarget","$userInput","editor","view","dom","updateInputLength","previousInputLength","inputLength","bindEvents","setDescribedBy","active","handleInput","updateStatus","updateScreenReaderStatus","storage","characterCount","characters","checkScreenReaderUpdate","currentLength","getInputLength","srLength","getInputDirection","announcedAt","showMessages","remaining","_message","getMessages","getScreenReaderLength","correctErrors","FormValidator","handleError","announceFormError","$announce","_ev","CheckBoxesTree","checkboxesTree","checkboxesLeaf","checkTheCheckBoxes","checkTheCheckParent","checkboxes","_idx","checkbox","theForm","targetChecks","checkStatus","indeterminate","childrenCheckbox","parentCheck","totalCheckSiblings","checkedSiblings","indeterminateSiblings","sibling","FormFilterComponent","_getUID","mounted","changeEvents","theCheckBoxesTree","_updateInitialState","_onFormChange","_onPopState","PopStateHandler","popStateSubmiter","contentContainer","currentFormRequest","abort","setContainerForm","currentState","_this$_currentStateAn2","_currentStateAndPath","initialPath","initialState","_path","withHost","origin","regexpResult","_getLocation","filterParams","_result$match2","_clearForm","_parseLocationFilterValues","currentOrder","_parseLocationOrderValue","fieldName","updateChecked","_this$_currentStateAn4","newPath","_saveFilters","formAction","serialize","pathWithQueryStrings","pathName","De","ae","_ae","_callee35","_e$local","_e$version","_args35","_context35","cdnUrl","_objectWithoutProperties","_excluded2","credentials","redirect","ok","_unused6","Be","discord","slack","_me","_callee36","_context36","shortcodes","hexcode","skins","Ne","_excluded","tags","Oe","Ce","_Ce","_callee37","_e$compact","_e$flat","_e$shortcodes","_args37","_context37","compact","flat","_excluded3","_l$split2","je","_x6","_x7","_je","_callee38","_context38","emoji","ue","I","finished","Ue","_x8","_Ue","_callee39","_context39","TextEncoder","encode","crypto","subtle","digest","padStart","ne","_V","_len3","ke","_unused","xe","custom","B","Ee","We","N","Ge","Se","Je","deleteDatabase","_Ee","emojis","foo","showRecents","pe","_x9","_pe","_callee40","_context40","Ye","_Ze","emojisUrl","messagesUrl","Ze","_unused2","Qe","_x10","_x11","_x12","_Qe","_callee41","_o","_yield$Promise$all3","_yield$Promise$all4","_context41","getEtags","storedEmojisEtag","storedMessagesEtag","populate","emojisEtag","messagesEtag","Xe","_x13","_x14","_Xe","_callee42","_context42","getHash","Fe","_x15","_x16","_x17","_Fe","_callee43","_context43","et","_x18","_x19","_x20","_et","_callee44","_yield$Ye","_yield$Ye2","_yield$Promise$all5","_yield$Promise$all6","_context44","isPopulated","tt","_x21","_x22","_x23","_x24","_x25","_tt","_callee45","_context45","_x26","_x27","_x28","_x29","_x30","_ce","_callee46","_context46","st","handleKeyDown","rootElement","checkFocus","firstFocusableElement","lastFocusableElement","_p","ot","dark","isDestroyed","appEvents","uiEvents","uiElements","ui","keyBindingHandler","bindAppEvents","customEmojis","pickerId","_this$events","emit","i18n","renderer","emojiDataPromise","emojiData","renderSync","postRender","_args","renderAsync","bindUIElements","bindKeyBindings","bindUIEvents","scheduleShowAnimation","updateEmojiData","keyBindings","unbindAppEvents","unbindUIEvents","unbindKeyBindings","addedNodes","animateShow","disconnect","ge","clock","flag","frown","gamepad","lightbulb","mug","plane","robot","sad","smiley","symbols","tree","warning","xmark","recents","activities","objects","flags","Pe","bt","ee","te","Ct","_renderAsync","_args2","WeakSet","_x31","_x32","_o$dataset","jt","_t","imagePlaceholder","kt","_c","classNames","once","xt","Et","resolver","renderCustom","_this$render","emitCustom","customEmoji","_this$renderImage","renderImage","St","Ft","_Et","renderElement","ze","retry","se","Le","Pt","indexedDB","_Ee2","_open","_callee6","_this11","_context6","db","createObjectStore","keyPath","createIndex","_x33","_delete2","_callee7","_context7","waitForRequest","_getEmojiCount","_callee8","_context8","transaction","objectStore","_getEtags","_callee9","_yield$Promise$all","_yield$Promise$all2","_context9","_setMeta","_callee10","_context10","oncomplete","put","_x34","_getHash","_callee11","_context11","_isPopulated","_callee12","_context12","_populate","_callee13","_context13","removeAllObjects","addObjects","setMeta","_x35","_getCategories","_callee14","_context14","getAll","_x36","_getEmojis","_callee15","_context15","_x37","_x38","_searchEmojis","_callee16","_this12","_context16","openCursor","de","Me","K","_x39","_x40","_x41","_x42","_waitForRequest","_callee17","_context17","onsuccess","onerror","_x43","_this13","_removeAllObjects","_callee18","_key5","_this14","_args18","_context18","_addObjects","_callee19","_context19","withTransaction","_x44","_x45","$e","C","oe","Ae","G","Ie","_Ae","_this15","_unused3","getRecents","_unused4","zt","_Ie","Lt","dataStore","showCategoryTabs","showPreview","showSearch","showVariants","emojisPerRow","visibleRows","emojiVersion","maxRecents","$t","recentsProvider","le","_this16","_len6","_key6","At","It","_le","Tt","_le2","ie","he","_c2","_this17","lazyLoader","baseUIElements","categoryName","byClass","emojiContainer","setActive","Rt","emojiButton","Mt","Te","_c3","_this18","uiEvent","handleFocus","emojiContent","doRender","Vt","keyHandlers","ArrowLeft","focusPrevious","ArrowRight","focusNext","ArrowUp","focusUp","ArrowDown","focusDown","rowCount","columnCount","focusedRow","focusedColumn","emojiCount","removeAll","getIndex","performFocus","setCell","row","column","Dt","Bt","_c4","_this19","_ref16$preview","preview","_ref16$fullHeight","fullHeight","setFocus","triggerNextCategory","triggerPreviousCategory","grid","selectEmoji","hidePreview","_this20","setFocusedIndex","emojiViews","getRowCount","setFocusedView","deactivateFocus","_this21","viewFactory","emojiElements","activateFocus","Nt","emojiCategory","Ot","_he","_this22","_render2","_callee20","_context20","getEmojis","Ht","_$","_ref20$preview","_addOrUpdate","_callee21","_context21","childElementCount","lastElementChild","_x46","Kt","recentEmojis","noRecents","Ut","_he2","_this23","provider","addRecent","_addRecent","_callee22","_context22","addOrUpdate","_x47","_render3","_callee23","_context23","qt","Wt","_he3","_render4","_callee24","_context24","Re","_this24","IntersectionObserver","intersectionRatio","unobserve","ye","Gt","emojiArea","Jt","Qt","_c5","_this25","categoryTabs","selectedCategory","scrollListenerState","handleScroll","He","handleCategorySelect","focusPreviousCategory","focusNextCategory","updateFocusedCategory","_render5","_callee25","_this26","_context25","emojiCategories","createCategory","_this27","observer","selectCategory","_this28","initialCategory","initialEmoji","determineInitialCategory","determineFocusTarget","getCategoryIndex","focusCategory","_selectCategory","_callee26","_performFocus$t","_args26","_context26","setActiveTab","_x48","changeFocusable","_this29","Xt","iconContainer","fe","_c6","_this30","_ref28$icon","_ref28$template","es","ss","_re","dataError","retryButton","childEvent","onRetry","_onRetry","_callee27","_context27","setEmojiData","os","previewEmoji","previewName","tagList","rs","_c7","as","clearSearchButton","ns","searchContainer","searchAccessory","cs","_c8","_this31","Ke","onSearchInput","_render6","_callee28","_this32","_context28","searchIcon","notFoundMessage","notFound","errorMessage","onClearSearch","showSearchIcon","showSearchAccessory","resultsContainer","showClearSearchButton","_search","_callee29","_this33","_context29","searchEmojis","handleResultsKeydown","ls","variantOverlay","variantPopup","ve","J","easing","we","be","hs","_c9","_this34","focusedEmojiIndex","focusTrap","popup","handleClick","handleKeydown","_callee30","_context30","animateHide","renderedEmojis","getEmoji","_this35","activate","ds","categoryTab","categoryButton","_c10","_this36","ariaSelected","_changeFocusable$perf","categoryTabActive","us","categoryButtonsContainer","categoryButtons","ps","gs","_c11","_this37","activeCategoryIndex","stepSelectedTab","checkOverflow","scrollWidth","_this38","tabViews","currentTabView","_this39","getTargetCategory","ys","fromCodePoint","fs","getContext","textBaseline","font","fillText","getImageData","vs","Y","Cs","categoryCount","skeleton","picker","showHeader","headerSkeleton","searchSkeleton","searchInput","categoryTabsSkeleton","contentSkeleton","emojiGrid","previewSkeleton","js","isLoaded","_s$className","ws","R","emojiSize","_c12","_this40","pickerReady","externalEvents","updaters","styleProperty","updateStyleProperty","pickerContent","onError","reinitialize","onDataReady","showContent","hideVariantPopup","currentView","_this41","createWithOptions","_onDataReady","_callee31","_this$buildChildViews","_this$buildChildViews2","_context31","getCategories","buildChildViews","setStyleProperties","initializePickerView","setInitialFocus","_x49","focusableEmoji","autoFocusSearch","getInitialFocusTarget","_selectEmoji","_callee32","_context32","isVariantPopupOpen","showVariantPopup","emitEmoji","_x50","_showVariantPopup","_callee33","_context33","_x51","_emitEmoji","_callee34","_context34","doEmit","addOrUpdateRecent","_x52","_this42","ks","_ref48$customEmojis","_len7","_key7","_construct","setPickerId","setEvents","setI18n","setRenderer","setOptions","setCustomEmojis","_len8","_key8","Ss","insertAt","Es","zs","Hs","Ps","at","reference","floating","_n$placement","_n$strategy","_n$middleware","_c$m","_yield$w","_tt2","placement","strategy","middleware","platform","isRTL","getElementRects","initialPlacement","middlewareData","rects","_Q","_e$boundary","_e$rootBoundary","_e$elementContext","_e$altBoundary","_e$padding","boundary","rootBoundary","elementContext","altBoundary","isElement","t4","t5","contextElement","getDocumentElement","t6","t7","t8","t9","t10","getClippingRect","t11","t12","convertOffsetParentRelativeRectToViewportRelativeRect","t14","t15","getOffsetParent","t16","t17","t18","t13","t19","ft","main","cross","_t2","_t2$alignment","_t2$allowedPlacements","_t2$autoAlignment","_ft","allowedPlacements","autoAlignment","autoPlacement","overflows","yt","_t3","_t3$mainAxis","_t3$crossAxis","_t3$fallbackStrategy","_t3$flipAlignment","_ft2","_E","_B","mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment","flip","_$t","alignmentAxis","nt","_t4","_t4$mainAxis","_t4$crossAxis","_t4$limiter","_v","limiter","ut","dt","userAgentData","brands","brand","ShadowRoot","_C","overflowX","perspective","ht","visualViewport","mt","gt","assignedSlot","rt","wt","ct","clientWidth","getRootNode","Zt","getDimensions","getClientRects","_i$ancestorScroll","ancestorScroll","_i$ancestorResize","ancestorResize","_i$elementResize","elementResize","_i$animationFrame","animationFrame","ResizeObserver","_ne","_oe","_yield$ee","isConnected","onPositionLost","hideOnClickOutside","hideOnEmojiSelect","hideOnEscape","showCloseButton","lt","vt","popupEl","popupContainer","closeButton","triggerElement","onDocumentClick","referenceElement","_args7","initiateOpenStateChange","setPosition","animatePopup","animateCloseButton","_close","positionCleanup","getAnimations","playState","getRunningAnimations","isPickerClick","_initiateOpenStateChange","awaitPendingAnimations","SUPPORTED_LOCALES","SEQUENCE_REMOVAL_PATTERN","_createDictionary","_final","I18N_CONFIG","EmojiButton","i18nConfig","i18nDictionary","dictionary","buttonText","btnContainer","btn","createPopup","handlerPicker","chain","insertContent","dict","_i18n","deleteProperty","emojiLocale","_emojiLocale","secondaryLocale","addInputEmoji","containers","focusGuardClass","focusableNodes","focusableDisableableNodes","FocusGuard","guardedElement","guards","guard","startGuard","createFocusGuard","endGuard","handleContainerFocus","visibleNodes","isVisible","ind","isFocusGuard","isFocusable","_ind","tabindex","noNotificationsText","handleRemove","handleFadeOut","emptyNotifications","unreadConversations","notifications","notification","RemoteModal","_element$dataset","dialogRemoteUrl","modalTarget","handleSuccess","_getAbsolutePosition2","relativeParent","_node$getBoundingClie","_getAbsolutePosition$","topLeft","topCenter","topRight","middleLeft","middleCenter","middleRight","bottomLeft","bottomCenter","bottomRight","tooltipHtml","useMobile","removeTooltip","OutsideClick","toggleTooltip","startsWith","_getAbsolutePosition3","positionX","positionY","_bottomCenter","_middleLeft","_middleRight","_topCenter","tooltipUrl","createTooltip","Accordions","_this$triggers","queryFilter","firstTrigger","lastTrigger","currentFocusedIndex","isMultiSelectable","isCollapsible","onKeydown","isExpanded","updateAttributes","prevTrigger","nextTrigger","removeEventListeners","removeAttributes","addEventListeners","addAttributes","_ref$isMultiSelectabl","_ref$isCollapsible","multiselectable","collapsible","Dropdowns","_this$links","links","firstLink","lastLink","autoClose","prevLink","nextLink","_ref$isOpen","_ref$hover","_ref$autoClose","documentSelector","documentDisabledClass","openingTriggerActiveClass","currentElement","addEventDelegation","setAttributes","setFocusableElements","restoreFocus","switchFocus","maintainFocus","addObserver","removeObserver","customConfig","Dialog","dialogSelector","_ref2$onOpen","onOpen","_ref2$onClose","onClose","openingSelector","closingSelector","backdropSelector","helperSelector","labelledby","describedby","_ref2$isModal","isModal","_ref2$isTooltip","isTooltip","_ref2$isOpen","_ref2$isCreated","isCreated","_ref2$disableScroll","disableScroll","_ref2$enableAutoFocus","enableAutoFocus","_ref2$openingTriggerA","_ref2$delay","dialog","dialogArea","openingTriggers","backdropTrigger","helpers","documentIsAlreadyDisabled","openingTrigger","closingTrigger","mutations","helper","visibleElements","visibleFocusableElements","bounding","filteredFocusableElements","nestedComponents","noNestedElements","nestedComponent","getNoNestedElements","_this$focusableElemen","isScreenSize","createDialog","_component$dataset","setFocusOnTitle","heading","Dialogs","focusGuard","trap","changeLabel","labelAction","labelReport","initFoundation","_ev$currentTarget","restArgs","initializer","createEditor","createCharacterCounter","mountComponent","externalDomainLink","externalHref","remote","updateExternalDomainLinks","filteredParams","backToListLink","markAsReadNotifications","lastChild","scrollToLastChild","accordionOptions","createAccordion","dropdownOptions","autofocus","scrollToMenu","heightToScroll","createDropdown","selectActiveIdentity","fetchRemoteTooltip","commentsIds","commentId","commentsContainer"],"sourceRoot":""}