{"version":3,"file":"static/chunks/5193-a5ada50d0a7b6d5c.js","mappings":"8GAEA,MAA2B,0BAAa,GAAG,oCCG3C,MAAwB,0BAAa,8C4DLrC,E2F4BA,atJvBA,MAA4B,mBAAa,EACzC,wBACA,YACA,qBACA,CAAC,ECPD,EAAsB,mBAAa,GAAG,4BCAtC,MAAoB,mBAAa,EAAG,UAAe,EEFnD,cACA,0BACA,iDACA,CEAA,cACA,0CACA,CCLA,cACA,qDCEA,OACA,UACA,UACA,OACA,aACA,YACA,WACA,aACA,cACA,CACA,cACA,OAAY,EAAmB,YAC/B,KAD+B,CAC/B,IAAoC,EAAc,MAClD,CACA,KAFkD,IAElD,KACA,0BACA,CEXA,cACA,qCACA,CCVA,WACA,+BACA,CAAC,CACD,GACA,8CACA,aACA,UACA,OACA,WACA,aACA,WACA,aACA,YACA,cACA,EACA,iBACA,gCACA,wBACA,oDACA,uDACA,OACA,QACA,aACA,oBACA,WACA,EACA,UACA,cACA,kBACA,kBACA,CACA,4BE1BA,OAKA,0BAKA,iBACA,ECbA,kBCDA,iBAAmC,WAAwB,CAI3D,0BACA,kBAAgB,WAAuB,WAGvC,OAFA,GACA,cACA,IACA,CACA,sBACA,SACA,2BAEA,CCXA,MAAiC,mBAAa,GAAG,ECLjD,sCGIA,GACA,UACA,SACA,OACA,OACA,UACA,IACA,QACA,OACA,SACA,SACA,OACA,WACA,OACA,UACA,UACA,WACA,OACA,OACA,MACA,SACA,SACA,OACA,QACA,MACA,OACA,CC5BA,cACA,GAKA,oBAIA,sBAGA,GAII,EAAoB,eAIxB,GAJwB,KAIxB,QACA,SAEA,QACA,CC3BA,SCGA,GACA,uBACA,IACA,IACA,IACA,aACA,aACA,aACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,OACA,QACA,QACA,CAIA,aCtBA,qBAAoC,aAAkB,EACtD,OAAY,EAAc,QAC1B,IAD0B,QAC1B,YACA,iBACA,GAAe,CAAe,mBAC9B,CCRA,0CCEA,GACA,eACA,eACA,eACA,kCACA,EAIA,SAAqC,EAAkB,WAAc,EAAkB,GAAhC,IAAgC,ICRvF,KDQuF,ICRvF,KACA,yBACA,CCFA,aACA,sBACA,eAC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,qBAKA,QACA,WACA,EACA,OAEA,UACA,QAEA,CACA,eACA,SACA,CAAS,EAET,CACA,EAnEA,SACA,eACA,EAIA,OAHA,GACA,sBAEA,EACA,EAIA,SACA,aAA+B,OAAW,GAC1C,EClBA,IACA,eAAoB,GAAkB,CACtC,cADsC,cACD,GACrC,kBAA2B,GAC3B,iBAD+C,OADiB,EAE3B,iBAA2B,IAChE,IACA,aACA,6BAEA,YACA,yBACA,CACA,SAEA,cACA,IACA,IACA,QACA,QACA,CACA,CACY,GAAa,KAA8B,KAA9B,sBAA8B,GAAmC,sBAC9E,GAAS,IACrB,CAAS,CADY,CAGrB,EC3BA,IACA,eAAoB,GAAkB,CACtC,cADsC,aACH,IACnC,kBAA2B,EAC3B,CAAK,CACL,EGPA,eHKgD,CGLhD,KAA6D,WAAe,EAE5E,OADA,0BACA,8BACA,CAsBA,qBACI,eAAS,MACb,gBACA,QACA,kBAEA,CAAK,WACL,CElCA,qBAEA,4DACA,2BAEA,uBACA,EHLA,YACA,oBACA,qBACA,iBACA,mBACA,qBACA,uBACA,aACA,CAAC,UAAsC,EIOvC,QAA2B,iBAe3B,wBACA,OACA,MAAe,EDzBf,QC0BA,EAD2B,OAhB3B,YAEA,MADA,mCACA,GACA,OACA,WACA,WAEA,EAUA,KACA,SAVA,YACA,OACA,WACA,WAEA,EAKA,IACA,CACA,CACA,kBACA,oBACA,SAjCA,IACA,8BACA,KACA,kBAEA,IAEA,EA4BA,CACA,ECxCA,OAAoC,GAAS,8BAC7C,OAAkC,GAAS,6BAC3C,OAAkC,GAAS,4BCD3C,IACA,wBACA,wBACA,oBACA,4BACA,wBACA,sBACA,0BACA,yBACA,EACA,IACA,yBACA,wBACA,qBACA,2BACA,EACA,eACA,GAAQ,WAGR,GAAa,KACb,EAJ6B,KAI7B,OADgC,IAGhC,GAAa,KACb,aAEA,CAHgC,MAGhC,CACA,CACA,qBACA,OAAW,GAAW,QAAyC,GAAW,uBAC1E,CACA,qBACA,OAAW,GAAW,WAAiD,GAAW,uBAClF,CCrCA,eACA,WACA,UAIA,WACA,IAJA,KACA,MACA,EAOA,CACA,4BACA,s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,YAAoB,EAHpB,GAGwC,IACxC,aAEA,QACA,EAzBA,IADA,KAGA,GADA,OACA,SACA,OACA,cACA,WACA,UACA,CAEA,EACA,sBACA,OACA,YACA,2BACA,UACA,CACA,CACA,ECrDkC,EAElC,CADA,+CAAoE,QAA8B,mBAA0B,EAC5H,yBACA,CACA,QACA,EAIkF,GAClF,KACA,KACA,aACA,mBACA,MACA,uBACA,qBAIA,GAHA,YACA,mCAEA,KACA,MAAgC,GAAe,KAC/C,KAEA,EAH+C,KAE/C,YAGA,IACA,OACA,EACA,cACA,iBAEA,MACA,uBACA,SACA,EACA,EACA,eACA,GACA,EACA,EACA,GACA,EACA,iBACA,EACA,eACA,GACA,EACA,EACA,GACA,EACA,EACA,cACA,CACA,MACA,SACA,OACA,eACA,GACA,QACA,OAEA,CACA,yBACA,MACA,uBACA,oBACA,SACA,EACA,IACA,OACA,aACA,EACA,EACA,cACA,CACA,CACA,CACA,CAEA,OADA,IACA,CACA,SACA,WACA,KAQA,gBARA,CAEA,eADA,WACA,EACA,kBACA,QACA,IACA,CAKA,OADA,mBACA,CACA,CAAS,CACT,gBACA,KACA,YACA,GACA,CAAS,CAET,CACA,oEACA,YCpHA,aACA,UACA,sBACA,ECHA,uBCEA,aACA,KAA4B,IAAO,EAAP,IAAuB,sBACnD,8CAEA,gBACA,IAAS,EAAQ,GACjB,GADiB,IACjB,EACA,qBAAqC,GACrC,OACA,kBACA,kBACA,kBACA,gCACA,CACA,ECZA,GAAqB,EAAK,OAC1B,iCAA8C,CAAE,GAAM,CAAK,EAAL,QAAK,qBAA+C,EAC1G,IACA,KAAU,GAAa,aACvB,MAAW,GAAU,sBACrB,gBAAkB,2BAAsC,WACxD,gBACA,KACA,gBACA,KACA,gBACA,KACQ,EAAS,EAAK,IAAN,KAAM,KACtB,GACA,ECaA,IACA,KAAU,GAAa,KACvB,KADuB,CA7BvB,YACA,SACA,KACA,KACA,KAiBA,OAhBA,YACA,gBACA,gBACA,gBACA,kBAGA,gBACA,gBACA,gBACA,gBACA,KACA,KACA,KACA,MAEA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,MACA,wCCvBA,UAEA,iBAKA,sCAEA,oBACQ,GAAO,SACf,uBCpBA,SACA,cACA,cACA,WACA,aACA,CAAC,CACD,QACA,cACA,cACA,kCACA,aACA,CAAC,CACD,SACA,iBACA,cACA,YACA,CAAC,CACK,GAAS,KACf,iBACA,IAFe,KAEf,GACA,SACA,CAAC,CACD,IACA,KACA,KACA,KACA,UACA,WACA,WACA,WACA,UACA,UACA,SACA,WACA,mBACA,SACA,UACA,EACA,WACA,MAQA,OANA,EADQ,GAAiB,GACG,GAI5B,QALyB,EAKzB,QAEA,IAAa,IANwB,CAMxB,KACb,EC/CA,2DACA,eACA,kCACA,qBACA,SACA,eAAiC,IAAU,GAC3C,GAD2C,CAC3C,EACA,SACA,sBACA,gBAGA,OAFA,OACA,SACA,aACA,CACA,2BACA,iCAA6C,CAAE,IAAO,CAAK,EAAL,gBAAK,IAC3D,kBACA,8BACA,EAAO,ECfP,IACA,GAAO,EAAgB,CAEvB,KAAS,IACT,gBAAqB,GACrB,EAD0B,WACR,GAClB,EADuB,GACb,GACV,EADe,KACH,GAEZ,EAFiB,UAEA,GACjB,EADsB,aACF,GACpB,EADyB,eACH,GACtB,EAD2B,gBACJ,GACvB,EAD4B,cACP,GACrB,EAD0B,IAChB,IACV,aAAkB,EAClB,EAIA,EALwB,CAKxB,SCvBA,SAAS,GAAiB,KAC1B,MACA,MAA2B,GAAmB,GAI9C,OAN0B,IAGG,EADiB,EAE9C,EADmC,CACR,GAAO,CAElC,6DACA,CCVA,QACA,UACA,ECgBA,MAqJA,eACA,cACA,oBACA,mBACA,mBACA,CACA,eACA,yBACA,EACU,GAAiB,KAC3B,CACA,iBACA,OAH2B,CAG3B,iBACA,CAKA,sBAA2D,EAI3D,OAHQ,GAAqB,SAC7B,IAAuB,KADM,CACN,IAEvB,gBAlHA,EACA,QAkHA,EACA,EACA,eAnFA,WACA,kBACA,iCACA,EAA+B,GAAY,IAC3C,KAD2C,KAC3C,yBAKA,EAAiB,GAAiB,KAElC,yBAFkC,CAGlC,QAEA,mBACA,OACA,oBACA,UAEA,MAA+B,GAAY,YACvC,GAAO,mCA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CA,wBACA,qBAA+B,GAAK,CAAD,EAAgB,6CAAiD,GAAe,yCAA6C,GAAe,6CAC/K,CACA,kBACA,eACA,CACA,MACA,6CACQ,KAAU,yBAClB,CACA,CACA,iBACA,UAAkC,kBAAwC,CAC1E,CACA,iBACA,OAAa,oBACb,CACA,mBAAsB,EAAO,IAC7B,OACA,QACA,kBACA,aAKA,KAJA,SAAkB,SASE,KACpB,QAV6B,GAU7B,GACA,GAFoB,GAEpB,CAAiB,SAEjB,iBACA,OACA,QACA,YACA,QACA,yBACY,GAnBiB,GAmBI,IAGjC,IAEA,MACA,CANiC,KAMjC,CAAiB,SAEjB,oCACA,SACA,OAAiB,SAEjB,OACA,cACA,aACA,EAOA,OANA,WACA,QAEA,WACA,QAEA,CACA,EA1C6B,IAC7B,CACA,CAIA,eACA,qBC5GA,eACA,mBAEA,yBACA,OAAW,GAAQ,MACnB,CACA,wBACA,WACA,cAAwB,GAAG,sBAC3B,oBACA,sCACA,YACA,YACQ,GAAG,oCACX,uCACA,eACA,CACA,qBACA,yCACA,wCACA,CACA,mBACA,kBACA,iBACA,CAKA,mBACA,kBACA,iBACA,CACA,mBACA,gBACA,eACA,CCdA,mBACA,OACA,8BACA,eACA,sBACA,MACA,CACA,CAcA,iBACA,kBACA,cAOA,OAJA,YACA,aACA,cAEA,KAAa,QACb,CAuDA,mBACA,OACA,YACA,WACA,CACA,CACA,iBACA,MACA,yBACA,EACA,+BACA,CCzHA,aACA,YACA,QACA,SACA,aACA,CAAC,EACD,SACA,OACA,MACA,CAAC,EACD,SAA4B,aAAgB,CAC5C,SACA,OACA,OACA,CAAC,CCdD,eACA,sBCIA,aAAmC,8BAA2B,EAC9D,OACA,GAAa,YAAuB,CACpC,GAAa,YAAuB,CAEpC,CCVA,eACA,wBACA,CACA,mBAAoB,oBAAuB,EAC3C,cACA,QACA,MACA,CACA,mBASA,IARA,cASA,CADA,EAPA,MAQA,WADA,EANA,MAOA,UANA,KACA,UACA,WACA,UCDA,uBAIA,OAHA,aACA,MATA,CASA,GATA,GAWA,IAXA,GAWA,CAXA,EAWA,CACA,CAI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AkB,EAAE,IAAI,EAAE,GACrB,ECjCL,WACA,IACA,sBAAwB,oBAA4B,IACpD,QAIA,qBACA,KACA,GACA,aAAoC,GAAgB,IACpD,SADoD,CAEpD,IACa,EAEb,MAAuB,GAAO,SAE9B,cACA,SACA,MAAyB,GAAO,qBAChC,4BAEA,gBACA,gBACA,UACA,UAOA,MAA6B,GAAG,OAEhC,0BACA,YAEA,yBACA,YACA,WACA,MACA,QACA,oBACA,WAEA,OADA,IACA,CACA,CAAa,CACb,CACA,QACA,CAAK,CC3CL,kBAAuC,WAAwB,CAM/D,oBACA,kBAAgB,gDAA0D,WAC1E,YAAgB,GAAa,EvIhB7B,gBuIiByB,IACzB,IACA,SACA,eACA,kBACA,cAEA,mBACA,4CACA,mBACA,CAAa,EACb,cACA,aACA,sCACA,CAAa,GAEL,EAAqB,iBAC7B,CACA,CAF6B,uBAE7B,GACA,qBAAgB,sCAAmD,WACnE,sBACA,IASA,cACA,GACA,wBACA,WACA,eAGA,oBAEA,kBACA,EACA,YAEA,cAMgB,KAAI,iBACpB,MACA,+DACA,mBAEA,CAAiB,IAhCjB,IAoCA,CACA,qBACA,eAAgB,GAAa,yBAC7B,IACA,mBACA,iCACA,oBAGA,CACA,uBACA,kBAAgB,qCAAiE,WACjF,YAAgB,GAAa,EAC7B,IACA,8BACA,0BACA,kBACA,+BACA,gBAEA,CACA,eACA,iBAAgB,GAAe,iBAC/B,MACA,CACA,SACA,WACA,CACA,CAMA,QACA,cACA,GAAW,EAAmB,CAC9B,SACA,sBACA,uBACA,yBACA,0BACA,CACK,CACL,oBAAyB,GACzB,gBAD4C,KAClB,GAC1B,gBAD6C,OACjB,GAC5B,gBAD+C,QAClB,GAC7B,UAAe,EACf,EG3HA,EHyHgD,CGzHhD,SH0H+B,EG1H/B,uCACA,aACA,yCACA,0BAAqD,EAAE,QA4CvD,iBACA,MACA,oDAyBA,eAAyC,IACzC,GADgD,GAChD,OAA6C,IAC7C,EADmD,OACnD,UACA,UAEA,IACA,EACA,IACA,EACA,EAAsB,GAAQ,OAE9B,CCnFA,iBACA,YACA,YAOA,iBACA,YACA,WACA,CCVA,uBAMA,OALA,KACA,EAAsB,MAAV,CAAU,GxBFtB,EwBGA,IADsB,CACtB,QACA,EAA0B,MxBJ1B,GwBI0B,CxBJ1B,GwBMA,CACA,CAsBA,CAzB0B,QAyB1B,qBACA,SAnBA,0BAMA,GALQ,EAAO,UACf,gBAEA,KADoC,mBACpC,OAEA,mBACA,OACA,MAAsB,GAAG,eACzB,OACA,OACA,wBACA,uBACA,EAMA,6BACA,CAIA,IAAM,GAAK,yBACL,GAAK,yBAKX,qBACA,SAA4C,GAAK,uCACjD,SAA4C,GAAK,sCACjD,CChDA,eACA,oCAEA,eACA,uBACA,CACA,iBACA,0BACA,mBACA,mBACA,kBAEA,eACA,OAAW,GAAU,KAAU,EAAV,CAAoB,IACzC,CCfA,EDcyC,ICdzC,GACA,cACA,gBAEA,OACQ,GAAa,gBACrB,kBACA,CACA,UAKA,GAJQ,GAAU,gBAClB,mBACA,uBAEA,eACA,0CACA,GACA,eAEA,CACA,CACA,gBAOA,EANA,uCACA,SACA,SAKA,YAAkC,KAAQ,KAC1C,sBACA,qBACA,IACA,KACA,CACA,OACA,MACA,gBACA,GAKA,CACA,aACA,MACA,gBACA,WAEA,gBACA,YACA,SACA,IACA,+BACA,mBACA,eACA,GACA,kCAEA,aACA,sBACA,wBACA,kCACA,wBAEA,qDACA,qBAEA,IAAoB,aAAY,WAChC,OACA,QAcA,CACA,CACA,wBACA,yBACA,aACA,gEACA,2GACA,CAAS,CACT,CACA,iBACA,yBACA,gCACA,CAAS,CACT,CAKA,qBACA,+BACA,2BAEA,CACA,CC3GA,mBAOA,wBACA,oBACA,iBAAmC,EAAW,MAAM,EAAW,SAM/D,GADA,YAA0B,MAAgB,IAAI,MAAgB,IAC9D,GACA,WAAgB,uBAA2B,EAC3C,GACA,cAAmC,EAAO,QAC1C,GACA,eAAoC,EAAQ,QAC5C,GACA,eAAoC,EAAQ,OAC5C,CAKA,oBACA,gBAEA,0DADA,aAA0B,EAAc,IAAI,EAAc,IAC1D,QACA,CCjCA,6BCGA,UACA,cACA,iBACA,eACA,CACA,OACQ,GAAa,iBACrB,eACA,CACA,UACQ,GAAU,iBAClB,eACA,CACA,WACA,iCAA2C,IAC3C,UADyD,EACzD,IACA,wBACA,CACA,CCAA,wBAMA,kCAAgC,uEAAwF,EACxH,aACA,kBAAyC,uBAOzC,sBAKA,gBAMA,wBACA,2BAOA,sBAIA,8BACA,8BAKA,mBAIA,cAKA,mBAIA,6BASA,gBAA+B,SAI/B,2BAEA,4BACA,4BACA,kBACA,mBACA,yBAEA,EACA,2BACA,uBACA,sBACA,EACA,qBACA,kBACA,yBAKA,yBACA,UACA,oBACA,2BACA,6BACA,cACA,yBACA,2CACA,YAA4B,mBAAsB,IAClD,oCAEA,mBACA,gBAAiC,EAAQ,CACzC,CACA,IAFyC,aAEzC,KAIA,OAHA,2BACA,6BAAiD,IAEjD,eAFoE,GAEpE,cACA,CACA,wBACA,+BACA,wBACA,CACA,gBACA,gCACA,CACA,2BACA,4BACA,CAIA,cACA,MACA,iBACA,MACA,YACA,2CACA,gBACA,aAAoB,4BAAkC,aAUtD,GATA,qBACA,WAEA,0BACA,yDACA,kDACA,WACA,wBAEA,OACA,EACA,6CACA,SACA,mCACA,gBACA,2BACwB,EAAqB,yBACrB,EAAqB,0BAC7C,uBAEA,CAAiB,CACjB,CACA,GACA,qCAGA,2BACA,GACA,QACA,0CAAsD,yDAAuE,IAC7H,cACA,kCACA,mBACA,2BACA,MACA,CAEA,4GACA,wBAA4B,+BAAqD,aAKjF,sBACA,CAAyB,GAAS,sBAClC,EAMA,QACA,+DACA,GACA,GACA,6BACA,kBACA,kCACA,uCAEA,6BACA,OACA,GAA+B,GAAkB,YACjD,GADiD,IACjD,EACA,YACA,CACA,wBACA,UACA,WAEA,sBACA,MAOA,GACA,4BACA,uBAEA,kFAEA,oBACA,CAAiB,CAEjB,CACA,UACA,OACA,0CACA,6BACA,uDACA,4DACA,qBACY,KAAU,iCACtB,CAEA,cACA,6BACA,CACA,gBACA,6BACA,CACA,kBACA,8DAEA,yBACA,MACA,gCACA,wEACA,EACA,CAEA,cACA,MACA,yBAEA,mBACA,iDACA,CACA,iBACA,UACA,gCACA,kEACA,MACA,CAEA,GADA,8CACA,mBACA,MACA,uBACA,YAA4B,mBAAsB,KAClD,mBACA,0BAKA,gBACA,CACA,aAAoB,YAAmB,aACvC,kBACA,OACA,8FACA,uEACA,sBACA,qCACA,CAEA,YAKA,GAJA,uBAIA,CACA,qBACA,yBACA,uBACA,MACA,CACA,kBAEA,mBAOA,2BACA,gCACA,6BAKA,uBAKA,uBAKA,uBACA,yBAEY,KAAS,UACT,KAAS,aACT,KAAS,UACrB,CACA,oBACA,uBACA,4BACA,CACA,2BACY,KAAI,uCAChB,CACA,4BAMY,KAAI,iBAChB,mBACA,sBAGA,6BAEA,CAAa,CACb,CAIA,iBACA,iCACA,OACA,qBACA,oDACA,MACA,eACA,WACA,SACA,eAAgC,CAEhC,CACA,eACA,MACA,oBAGA,oBACA,oDACA,qBAJA,OAcA,8CACA,YAAgC,mBAAsB,IACtD,aACA,eAGA,qBACA,MACA,kBACA,aACA,WACA,kCACA,EACA,qBAAmC,KACnC,IAD4C,CAC5C,iBACA,4BACA,mDACA,oHACA,CACA,eACA,2CACA,mCACA,6BAEA,CACA,iBACA,MACA,MACA,OACA,oDACA,yBAA2D,GAAW,sBACtE,0FACA,yCACA,sCACA,GACA,IACoB,GAAY,oBAChC,KACA,mBACA,6BACA,sBAEA,CACA,UACA,kBAAoB,GAAgB,aACpC,MACA,OAAuB,KACvB,IADgC,EAChC,uBAEA,CAAoB,UAAS,UAK7B,OAJA,IACgB,GAAa,SACb,CADa,EACA,WAG7B,CACA,uBACA,MAAqC,KACzB,GAAW,CADuB,CACvB,GAKvB,GALuB,CAKvB,QAA4B,mBAAsB,KAClD,mBACA,QAAwB,4BAAgC,EACxD,qCAKA,MACwB,GAAW,KACnC,GADmC,CACH,UAAqB,UAKrD,IAC4B,GAAa,aACA,WAGrB,GAAa,SACb,CADa,EACA,QACjC,CACA,CAFiC,OAGjC,CACA,CACA,uBACA,MAAmC,KACvB,GAAW,CADqB,CACrB,GACvB,GADuB,CACvB,QAA4B,mBAAsB,KAClD,oBACA,GACA,wBACA,UACA,YACoB,GAAY,GAChC,MADgC,KAChC,GACA,cACqB,EAEA,GAAY,iBAEjB,GAAY,iBAC5B,CAIA,OAHgB,GAAY,oBACZ,GAAY,qBAE5B,CACA,CACA,mBACA,MACA,MAAwC,KAC5B,GAAW,CAD0B,CAC1B,GACvB,GADuB,CACvB,QAA4B,mBAAsB,KAClD,mBACA,gBAEA,CAAqB,GAAY,gBADjC,QAGgB,IAAQ,oCACxB,MAAkC,KAElB,GAAW,CAFgB,CAC3C,MAC2B,GAD3B,IAEgB,GAAmB,qEACnC,CAIA,OAHgB,GAAY,oBACZ,GAAmB,qBAEnC,CACA,CAIA,kBACA,mBACA,oCACA,CACA,cACA,cACA,gBACA,KACA,2CACA,CACA,CACA,oBACA,mBACA,mBACA,qBACA,uCACA,wBACA,mBACA,qBACA,CAIA,yBACA,EpCphBA,MoCqhBA,WAAoB,cAAmB,aAIvC,sBAQA,0CAEA,sDACA,kDACA,oBAA0C,KAC1C,IADmD,CACnD,qBAAgD,KAC5B,GAAoB,CADiB,GACjB,4EACpB,GAAW,iDAO/B,2CAKA,cACA,YAA8B,KAC9B,IADuC,CACvC,qBAA4C,MAK5C,GALqD,CAKrD,iBACA,2BACA,+DpC7jBA,EoC8jB+B,YpC9jB/B,EoC8jB+B,oBpC9jB/B,EoC8jB+B,2BpC7jB/B,gBACA,iBoCikBA,kBACA,kBAEA,oDAGoB,GAAW,gCAEf,GAAa,+BAMb,GAAW,gCAK3B,sCACA,uCACA,sDACA,qBACA,oCACA,qBACA,2CACA,6BACA,oBAA0C,KAC1C,IADmD,CACnD,qBAAgD,KAC5B,GAAoB,CADiB,GACjB,8DACpB,GAAW,kDAG/B,CACA,6BACA,mBAAgC,GAAY,iCAE5C,uDACA,mBACA,YAGA,wCAEA,CACA,iBACA,MACA,WAAoB,cAAmB,aAWvC,GANA,uFACA,uBACA,uBACA,sBACA,8CAEA,sBACA,OACA,qBAKY,GAAW,yC9BvnBvB,yBACA,QAMA,EACA,EANA,eACA,MAGA,UAGA,YAAoB,IAAgB,IAEpC,EADA,SACA,gBACA,0GAEA,GACA,wBACA,UACA,YACA,MAAgC,4BAAsC,EAEtE,IAEA,eACA,eAEA,SAEA,GAAkC,GAAY,iBAC9C,sBAGA,E8B6lB2B,6EAC3B,WAAoB,GAAS,EAC7B,MACA,MACA,wBACA,qBAAuC,KACvC,MADkD,2BAClD,CAAoD,MAEpD,KAF+D,CAE/D,iBACA,mBACA,2BAUY,GAAY,+DACxB,yBAAuC,GAAwB,qCAC/D,+BACA,sBACA,wBACA,qBACA,sBACA,2CAEA,CACA,OACA,iBAEA,CACA,OACA,iBAEA,CACA,qBACA,SACA,mEACA,gEACA,gDACA,0BAEA,CACA,2BACA,MACA,oBACA,sCACA,GAAkC,sBAClC,EAAgC,IAChC,OAD2C,aAC3C,kCACA,uCACA,MAAmC,KACnC,IAD4C,IAC5C,oBACA,2EACA,QACA,IACA,6BACA,oBACA,0BACA,4BACA,EA2bA,IA1bA,YACA,cACA,cACA,uBACA,qBACA,2BACA,aACA,+DACoB,GAAoB,wDAkbxC,EAjbA,oBAibA,EAjbA,0BAkbA,WAlbA,EAkbA,EAlbA,GAmbA,WAnbA,EAmbA,EAnbA,IAEA,IACA,uBRzuBA,SQ0uB6B,CR1uB7B,YACA,YACA,GACA,UAAyB,GAAG,EAG5B,4CACA,cAA6B,GAAG,+CAEhC,GACA,WAAyB,GAAG,8EAK5B,YAAoB,KAAgB,KACpC,eAAqC,MAAW,QAChD,UACA,UACA,2BAEA,SACA,SACA,OACA,OACA,eAEA,cAA2C,GAAG,mBAC9B,EAAO,SAAqB,EAAO,UACnD,aAIA,OAEA,CAIA,sBACA,UAAwB,GAAG,2BAE3B,EQgsB6B,8BAE7B,qCACA,sBACA,wBACA,EACA,sBACA,CACA,kBACA,QACA,uCACA,uDACA,mBACA,sEAEA,wBACgB,KAAU,+BAC1B,8BAOA,sBAAoC,KAAI,aACxB,EAAqB,0BACrC,sBAAwC,ST5uB/B,CAAO,KS4uB+B,CT5uB/B,CAA0B,EAC1C,KADgB,CACE,ES2uB6B,KT3uBA,GS2uBA,GTzuB/C,KAF0D,EACtD,GAAc,KSPlB,ITOkB,GAClB,CACA,kBACA,+BACA,CACA,ESquB+C,EAjvB/C,EAivB+C,CAC/C,KACA,aACA,MACA,uBACA,8CACA,CAAqB,CACrB,gBACA,KACA,gDACA,wBACA,CAAqB,CACJ,EACjB,mBACA,2DAEA,4BACA,CAAa,CACb,CACA,oBACA,KACA,qBACA,0CACA,0CAEA,kEACA,kBACA,sBACA,qBACA,OACA,yCACA,CACA,kBACA,KACA,yBACA,wDApxBA,KAqxBA,8BAEA,wBACA,CACA,0BACA,qBACA,sBAAkB,oCAAqD,EACvE,YAOA,aACA,aACA,GACA,4DACA,eAAwC,KACxC,IADiD,EACjB,GAAU,qBAC1C,wBACA,kBACA,MAAgC,GAAU,qBAC1C,wBACA,iBACA,CACY,GAAW,KAMX,GANW,EAMC,GAOZ,GAAY,CAPA,GAOA,wDACxB,CACA,wBACA,UACA,yBACA,2BAAmD,IAEnD,KAF4D,WAE5D,QACA,OACA,WACA,uFACA,4JACA,CAAa,CACb,CACA,SACA,sBACA,wBAEA,UACA,MACA,aAAoB,GAAW,aAC/B,sEACA,CACA,cACA,MACA,aAAoB,GAAW,aAC/B,wEACA,CACA,WACA,aAAoB,GAAW,aAC/B,KACA,mCACA,CACA,oBAAkB,wCAAiD,EAAI,EACvE,sBACA,GACA,kBACA,IACA,4BACA,oBAEA,GACA,4BAAkC,EAAY,CAC9C,CACA,WACA,4BACA,KACA,gBAKA,CACA,gBACA,kBAAoB,GAAgB,aACpC,MACA,OAEA,SAEA,KAEA,YAA4B,YAA0B,KAEtD,eADA,MAIA,sBAGA,KAEA,yBACA,sBACA,CAEA,MAMA,aAFA,wBAEA,EACA,yBAIA,mBACA,CACA,wBAA0C,EAC1C,UAEA,SACA,8BACA,SACA,mBACA,OAAyB,oBAGzB,iBAEA,8FACA,mBAQA,OAPA,mBACA,aACA,gBACoB,GAAkB,qBACtC,cACA,wBACA,OACA,EAEA,qBACA,mDACA,SAeA,OAdA,wBACA,UACA,mCACA,0BACA,EACA,gBACwB,GAAkB,sBAE1C,oBAA0C,GAAY,qBACtD,cACA,IAA8C,KAC9C,OACA,sBAEA,CACA,CACA,wCACA,+BACA,YAA+B,GAAwB,oDACvD,GACA,+BAEA,IAAoB,SAAO,qBA+B3B,aA9BA,qBAAwC,aAAe,IAAI,aAAe,KAC1E,kBAKA,UACA,SACA,wFACA,qBACA,0BACA,cAOA,UACA,SACA,mBACA,UACA,GACA,uBACA,cACA,EAK8B,EAAe,CAC7C,YAD6C,CAC7C,IACA,SACA,IAAwB,qBAAmB,CAAiB,IAC5D,YACA,MACA,eACA,YAAoC,IAAS,IAC7C,SAEA,MAEA,MAEA,CAYA,OANA,uBACA,iBACA,SAC0B,GAAkB,qBAC5C,QAEA,CACA,CACA,gBACA,oCACA,CAEA,YACA,4BAAgD,MAAQ,iEAAqF,EAC7I,4BACA,6BACA,CACA,CACA,CACA,eACA,gBACA,CACA,eACA,UACA,0EACA,eACA,UACA,GACA,6BACA,IAAgB,qBAA2C,SAC3D,eAAgB,GAAgB,UAGhC,WACY,GAAQ,IACpB,CADoB,GACpB,aACA,cACA,YACA,EAA+B,GAAU,EACzC,KADyC,CACzC,UACA,aACA,CAAa,EAEb,kBACY,GAAQ,IACpB,CADoB,GACpB,aACA,cACA,YACA,EAA+B,GAAU,KACzC,EADyC,CACzC,WACA,CAAa,EAEb,MAA4B,KACpB,GAAY,GADmB,CACnB,UACpB,MAA4B,IAC5B,OADuC,IACvC,CACY,GAAY,qCAGZ,GAAY,cAExB,OAAkC,GAAW,GAC7C,KAD6C,GAE7C,gBACA,gDAKA,iDACA,IAAwB,qBAAiD,iBACzE,SACA,MAA6C,KACzB,GAAoB,CADc,CACd,mBACxC,MAA2C,KACvB,GAAoB,CADY,CACZ,YACf,GADe,EACN,KAClC,KAEA,CACA,CAEA,+BACA,SACA,WACA,QACA,cACA,mBACA,0BACA,CAAS,CACT,MACA,YACA,gEAOA,4BACA,CACA,eACA,iBACA,CACA,eACA,qBACA,CACA,eACA,kBAAY,GAAgB,UAC5B,qDACA,8BAEA,kBACA,CACA,eACA,oBACA,8CACA,CACA,eACA,sBACA,CACA,eACA,kBACA,CACA,eACA,iBACA,CACA,eACA,sBACA,CACA,mBACA,YAAuB,GAAG,iBAC1B,QAAmB,GAAG,aACtB,kBACA,4BAEA,qBACA,MAAiB,GAAG,eACpB,MAAiB,GAAG,cACpB,CAKA,eACA,gEACA,CACA,QACA,aACA,kBAEA,iBAKA,aACA,0BAAuC,KAAQ,IAC/C,u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ACA,EACA,GACA,OACA,SACA,YACA,SACA,aACA,CACA,mBACA,KDnBA,YACA,ICkB+B,EDlB/B,GACA,KACA,IACA,KACA,KACA,cACA,GACA,yBACA,WACA,QAQA,OAPA,GACA,SACA,oBACA,UACA,MACA,cAEA,CACA,CAAS,CACT,WACA,kBACA,SACA,cACA,WACA,CAAS,CACT,YACA,MACA,KACA,MACA,CAKA,GAJA,KACA,YACA,WACA,WAEA,YAAgC,IAAc,KAC9C,WACA,KACA,WACA,cACA,IAEA,CAEA,KACA,IACA,KACA,aAEA,CAAS,EAET,QACA,EClC+B,UAC/B,GACC,EAAI,EACL,mBACA,WAMA,OALA,qBACA,GACA,IACA,mBAEA,CACA,CAAC,GAAI,EACL,mBACA,iBACA,GACC,EAAI,EACL,mBACA,sBAAwC,GACxC,GACC,EAF4C,EAG7C,kBAAsD,GACtD,KAD2D,CAE3D,KACI,EAAK,QACC,EACV,aADyB,CACzB,MAAwC,EAAK,UAzC7C,IAyC6C,GACzC,EAAK,YACT,KACA,aACA,KACA,IACA,KACQ,EAAW,GAEnB,EACA,IAHmB,GAInB,KACA,KACA,GACQ,EAAW,EACnB,EACA,KAFmB,CAEQ,EAE3B,EAAe,IAFiB","sources":["webpack://_N_E/./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LazyContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/definitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/load-features.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/utils.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/numbers/units.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/numbers/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/use-render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/types.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/use-dom-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-focus-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/utils/event-type.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/event-info.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/use-pointer-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-hover-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/pipe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/use-viewport.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/gestures.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack://_N_E/./node_modules/hey-listen/dist/hey-listen.es.js","webpack://_N_E/./node_modules/popmotion/dist/es/utils/clamp.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/utils/find-spring.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/generators/spring.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/progress.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/mix.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/color/utils.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/color/rgba.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/color/hex.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/color/hsla.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/hsla-to-rgba.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/mix-color.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/color/index.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/complex/index.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/inc.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/mix-complex.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/interpolate.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/easing/utils.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/easing/index.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/generators/keyframes.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/generators/decay.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/utils/elapsed.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/index.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/velocity-per-second.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/animations/inertia.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/easing/cubic-bezier.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/easing.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","webpack://_N_E/./node_modules/style-value-types/dist/es/complex/filter.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/array.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/setters.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/animation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animations.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/is-point.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/is-point-3d.mjs","webpack://_N_E/./node_modules/popmotion/dist/es/utils/distance.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/PanSession.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/models.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/measure.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/lifecycles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/process.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/warn-once.mjs","webpack://_N_E/./node_modules/framer-motion/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://_N_E/./node_modules/framer-motion/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack://_N_E/./node_modules/framesync/dist/es/on-next-frame.mjs","webpack://_N_E/./node_modules/framesync/dist/es/create-render-step.mjs","webpack://_N_E/./node_modules/framesync/dist/es/index.mjs"],"sourcesContent":["import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext, useContext } from 'react';\n\nconst MotionContext = createContext({});\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n\nexport { MotionContext, useVisualElementContext };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { useContext, useRef, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useVisualElementContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n const parent = useVisualElementContext();\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef(undefined);\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceId: presenceContext ? presenceContext.id : undefined,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useIsomorphicLayoutEffect(() => {\n visualElement && visualElement.syncRender();\n });\n useEffect(() => {\n if (visualElement && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useIsomorphicLayoutEffect(() => () => visualElement && visualElement.notifyUnmount(), []);\n return visualElement;\n}\n\nexport { useVisualElement };\n","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\nexport { isAnimationControls };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\n\nconst variantProps = [\n \"initial\",\n \"animate\",\n \"exit\",\n \"whileHover\",\n \"whileDrag\",\n \"whileTap\",\n \"whileFocus\",\n \"whileInView\",\n];\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","const createDefinition = (propNames) => ({\n isEnabled: (props) => propNames.some((name) => !!props[name]),\n});\nconst featureDefinitions = {\n measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n animation: createDefinition([\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n ]),\n exit: createDefinition([\"exit\"]),\n drag: createDefinition([\"drag\", \"dragControls\"]),\n focus: createDefinition([\"whileFocus\"]),\n hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n pan: createDefinition([\n \"onPan\",\n \"onPanStart\",\n \"onPanSessionStart\",\n \"onPanEnd\",\n ]),\n inView: createDefinition([\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n ]),\n};\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n if (key === \"projectionNodeConstructor\") {\n featureDefinitions.projectionNodeConstructor = features[key];\n }\n else {\n featureDefinitions[key].Component = features[key];\n }\n }\n}\n\nexport { loadFeatures };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { useConstant } from '../../utils/use-constant.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nlet id = 1;\nfunction useProjectionId() {\n return useConstant(() => {\n if (globalProjectionState.hasEverUpdated) {\n return id++;\n }\n });\n}\n\nexport { useProjectionId };\n","import React__default from 'react';\n\nclass VisualElementHandler extends React__default.Component {\n /**\n * Update visual element props as soon as we know this update is going to be commited.\n */\n getSnapshotBeforeUpdate() {\n const { visualElement, props } = this.props;\n if (visualElement)\n visualElement.setProps(props);\n return null;\n }\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\n\nexport { VisualElementHandler };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { useProjectionId } from '../projection/node/id.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { VisualElementHandler } from './utils/VisualElementHandler.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, projectionNodeConstructor, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n let features = null;\n const context = useCreateMotionContext(props);\n /**\n * Create a unique projection ID for this component. If a new component is added\n * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing\n * us to measure it as soon as any layout effect flushes pending layout animations.\n *\n * Performance note: It'd be better not to have to search the DOM for these elements.\n * For newly-entering components it could be enough to only correct treeScale, in which\n * case we could mount in a scale-correction mode. This wouldn't be enough for\n * shared element transitions however. Perhaps for those we could revert to a root node\n * that gets forceRendered and layout animations are triggered on its layout effect.\n */\n const projectionId = isStatic ? undefined : useProjectionId();\n /**\n *\n */\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const lazyStrictMode = useContext(LazyContext).strict;\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n if (context.visualElement) {\n features = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, lazyStrictMode, preloadedFeatures, projectionId, projectionNodeConstructor ||\n featureDefinitions.projectionNodeConstructor, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(VisualElementHandler, { visualElement: context.visualElement, props: configAndProps },\n features,\n React.createElement(MotionContext.Provider, { value: context }, useRender(Component, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement))));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig = {}) {\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","const isMotionValue = (value) => !!(value === null || value === void 0 ? void 0 : value.getVelocity);\n\nexport { isMotionValue };\n","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nconst sortTransformProps = (a, b) => transformPropOrder.indexOf(a) - transformPropOrder.indexOf(b);\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform({ transform, transformKeys }, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Loop over each transform and build them into transformString\n for (const key of transformKeys) {\n transformString += `${translateAlias[key] || key}(${transform[key]}) `;\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nexport { isCSSVariable };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);\nconst sanitize = (v) => (v % 1 ? Number(v.toFixed(5)) : v);\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nexport { clamp, colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(' ').length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType('deg');\nconst percent = createUnitType('%');\nconst px = createUnitType('px');\nconst vh = createUnitType('vh');\nconst vw = createUnitType('vw');\nconst progressPercentage = Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { clamp } from '../utils.mjs';\n\nconst number = {\n test: (v) => typeof v === 'number',\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });\nconst scale = Object.assign(Object.assign({}, number), { default: 1 });\n\nexport { alpha, number, scale };\n","import { number } from 'style-value-types';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { px, degrees, scale, alpha, progressPercentage } from 'style-value-types';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariable } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformKeys, transformOrigin } = state;\n transformKeys.length = 0;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariable(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state, options, transformIsNone, transformTemplate);\n }\n else if (!latestValues.transform && style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformKeys: [],\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return props.transformValues ? props.transformValues(style) : style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","const animationProps = [\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n];\nconst tapProps = [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"];\nconst panProps = [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"];\nconst inViewProps = [\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"viewport\",\n];\n/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"initial\",\n \"style\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"layout\",\n \"layoutId\",\n \"layoutDependency\",\n \"onLayoutAnimationStart\",\n \"onLayoutAnimationComplete\",\n \"onLayoutMeasure\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"drag\",\n \"dragControls\",\n \"dragListener\",\n \"dragConstraints\",\n \"dragDirectionLock\",\n \"dragSnapToOrigin\",\n \"_dragX\",\n \"_dragY\",\n \"dragElastic\",\n \"dragMomentum\",\n \"dragPropagation\",\n \"dragTransition\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"layoutScroll\",\n ...inViewProps,\n ...tapProps,\n ...animationProps,\n ...panProps,\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return validMotionProps.has(key);\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] && key.startsWith(\"onDrag\"))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { px } from 'style-value-types';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from 'style-value-types';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\n\nfunction useSVGProps(props, visualState) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, projectionId, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = {\n ...filteredProps,\n ...visualProps,\n ref,\n };\n if (projectionId) {\n elementProps[\"data-projection-id\"] = projectionId;\n }\n return createElement(Component, elementProps);\n };\n return useRender;\n}\n\nexport { createUseRender };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) || isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n const newValues = scrapeMotionValuesFromProps$1(props);\n for (const key in props) {\n if (isMotionValue(props[key])) {\n const targetKey = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","function resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props);\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, props.transformTemplate);\n renderSVG(instance, renderState);\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, { forwardMotionProps = false }, preloadedFeatures, createVisualElement, projectionNodeConstructor) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n projectionNodeConstructor,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","var AnimationType;\n(function (AnimationType) {\n AnimationType[\"Animate\"] = \"animate\";\n AnimationType[\"Hover\"] = \"whileHover\";\n AnimationType[\"Tap\"] = \"whileTap\";\n AnimationType[\"Drag\"] = \"whileDrag\";\n AnimationType[\"Focus\"] = \"whileFocus\";\n AnimationType[\"InView\"] = \"whileInView\";\n AnimationType[\"Exit\"] = \"exit\";\n})(AnimationType || (AnimationType = {}));\n\nexport { AnimationType };\n","import { useEffect } from 'react';\n\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return \n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(() => {\n const element = ref.current;\n if (handler && element) {\n return addDomEvent(element, eventName, handler, options);\n }\n }, [ref, eventName, handler, options]);\n}\n\nexport { addDomEvent, useDomEvent };\n","import { AnimationType } from '../render/utils/types.mjs';\nimport { useDomEvent } from '../events/use-dom-event.mjs';\n\n/**\n *\n * @param props\n * @param ref\n * @internal\n */\nfunction useFocusGesture({ whileFocus, visualElement }) {\n const { animationState } = visualElement;\n const onFocus = () => {\n animationState && animationState.setActive(AnimationType.Focus, true);\n };\n const onBlur = () => {\n animationState && animationState.setActive(AnimationType.Focus, false);\n };\n useDomEvent(visualElement, \"focus\", whileFocus ? onFocus : undefined);\n useDomEvent(visualElement, \"blur\", whileFocus ? onBlur : undefined);\n}\n\nexport { useFocusGesture };\n","function isMouseEvent(event) {\n // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n if (typeof PointerEvent !== \"undefined\" && event instanceof PointerEvent) {\n return !!(event.pointerType === \"mouse\");\n }\n return event instanceof MouseEvent;\n}\nfunction isTouchEvent(event) {\n const hasTouches = !!event.touches;\n return hasTouches;\n}\n\nexport { isMouseEvent, isTouchEvent };\n","import { isTouchEvent } from '../gestures/utils/event-type.mjs';\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n return (event) => {\n const isMouseEvent = event instanceof MouseEvent;\n const isPrimaryPointer = !isMouseEvent ||\n (isMouseEvent && event.button === 0);\n if (isPrimaryPointer) {\n eventHandler(event);\n }\n };\n}\nconst defaultPagePoint = { pageX: 0, pageY: 0 };\nfunction pointFromTouch(e, pointType = \"page\") {\n const primaryTouch = e.touches[0] || e.changedTouches[0];\n const point = primaryTouch || defaultPagePoint;\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction pointFromMouse(point, pointType = \"page\") {\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: isTouchEvent(event)\n ? pointFromTouch(event, pointType)\n : pointFromMouse(event, pointType),\n };\n}\nconst wrapHandler = (handler, shouldFilterPrimaryPointer = false) => {\n const listener = (event) => handler(event, extractEventInfo(event));\n return shouldFilterPrimaryPointer\n ? filterPrimaryPointer(listener)\n : listener;\n};\n\nexport { extractEventInfo, wrapHandler };\n","import { isBrowser } from '../utils/is-browser.mjs';\n\n// We check for event support via functions in case they've been mocked by a testing suite.\nconst supportsPointerEvents = () => isBrowser && window.onpointerdown === null;\nconst supportsTouchEvents = () => isBrowser && window.ontouchstart === null;\nconst supportsMouseEvents = () => isBrowser && window.onmousedown === null;\n\nexport { supportsMouseEvents, supportsPointerEvents, supportsTouchEvents };\n","import { addDomEvent, useDomEvent } from './use-dom-event.mjs';\nimport { wrapHandler } from './event-info.mjs';\nimport { supportsPointerEvents, supportsTouchEvents, supportsMouseEvents } from './utils.mjs';\n\nconst mouseEventNames = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\",\n};\nconst touchEventNames = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\",\n};\nfunction getPointerEventName(name) {\n if (supportsPointerEvents()) {\n return name;\n }\n else if (supportsTouchEvents()) {\n return touchEventNames[name];\n }\n else if (supportsMouseEvents()) {\n return mouseEventNames[name];\n }\n return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\nexport { addPointerEvent, usePointerEvent };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","import { isMouseEvent } from './utils/event-type.mjs';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\n\nfunction createHoverEvent(visualElement, isActive, callback) {\n return (event, info) => {\n if (!isMouseEvent(event) || isDragActive())\n return;\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Hover, isActive);\n }\n callback && callback(event, info);\n };\n}\nfunction useHoverGesture({ onHoverStart, onHoverEnd, whileHover, visualElement, }) {\n usePointerEvent(visualElement, \"pointerenter\", onHoverStart || whileHover\n ? createHoverEvent(visualElement, true, onHoverStart)\n : undefined, { passive: !onHoverStart });\n usePointerEvent(visualElement, \"pointerleave\", onHoverEnd || whileHover\n ? createHoverEvent(visualElement, false, onHoverEnd)\n : undefined, { passive: !onHoverEnd });\n}\n\nexport { useHoverGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","const combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","import { useRef } from 'react';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { usePointerEvent, addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { pipe } from 'popmotion';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\n\n/**\n * @param handlers -\n * @internal\n */\nfunction useTapGesture({ onTap, onTapStart, onTapCancel, whileTap, visualElement, }) {\n const hasPressListeners = onTap || onTapStart || onTapCancel || whileTap;\n const isPressing = useRef(false);\n const cancelPointerEndListeners = useRef(null);\n /**\n * Only set listener to passive if there are no external listeners.\n */\n const eventOptions = {\n passive: !(onTapStart || onTap || onTapCancel || onPointerDown),\n };\n function removePointerEndListener() {\n cancelPointerEndListeners.current && cancelPointerEndListeners.current();\n cancelPointerEndListeners.current = null;\n }\n function checkPointerEnd() {\n removePointerEndListener();\n isPressing.current = false;\n visualElement.animationState &&\n visualElement.animationState.setActive(AnimationType.Tap, false);\n return !isDragActive();\n }\n function onPointerUp(event, info) {\n if (!checkPointerEnd())\n return;\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n !isNodeOrChild(visualElement.getInstance(), event.target)\n ? onTapCancel && onTapCancel(event, info)\n : onTap && onTap(event, info);\n }\n function onPointerCancel(event, info) {\n if (!checkPointerEnd())\n return;\n onTapCancel && onTapCancel(event, info);\n }\n function onPointerDown(event, info) {\n removePointerEndListener();\n if (isPressing.current)\n return;\n isPressing.current = true;\n cancelPointerEndListeners.current = pipe(addPointerEvent(window, \"pointerup\", onPointerUp, eventOptions), addPointerEvent(window, \"pointercancel\", onPointerCancel, eventOptions));\n /**\n * Ensure we trigger animations before firing event callback\n */\n visualElement.animationState &&\n visualElement.animationState.setActive(AnimationType.Tap, true);\n onTapStart && onTapStart(event, info);\n }\n usePointerEvent(visualElement, \"pointerdown\", hasPressListeners ? onPointerDown : undefined, eventOptions);\n useUnmountEffect(removePointerEndListener);\n}\n\nexport { useTapGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { env } from '../../../utils/process.mjs';\nimport { useRef, useEffect } from 'react';\nimport { AnimationType } from '../../../render/utils/types.mjs';\nimport { warnOnce } from '../../../utils/warn-once.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nfunction useViewport({ visualElement, whileInView, onViewportEnter, onViewportLeave, viewport = {}, }) {\n const state = useRef({\n hasEnteredView: false,\n isInView: false,\n });\n let shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave);\n if (viewport.once && state.current.hasEnteredView)\n shouldObserve = false;\n const useObserver = typeof IntersectionObserver === \"undefined\"\n ? useMissingIntersectionObserver\n : useIntersectionObserver;\n useObserver(shouldObserve, state.current, visualElement, viewport);\n}\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nfunction useIntersectionObserver(shouldObserve, state, visualElement, { root, margin: rootMargin, amount = \"some\", once }) {\n useEffect(() => {\n if (!shouldObserve)\n return;\n const options = {\n root: root === null || root === void 0 ? void 0 : root.current,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const intersectionCallback = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (state.isInView === isIntersecting)\n return;\n state.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && state.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n state.hasEnteredView = true;\n }\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const props = visualElement.getProps();\n const callback = isIntersecting\n ? props.onViewportEnter\n : props.onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(visualElement.getInstance(), options, intersectionCallback);\n }, [shouldObserve, root, rootMargin, amount]);\n}\n/**\n * If IntersectionObserver is missing, we activate inView and fire onViewportEnter\n * on mount. This way, the page will be in the state the author expects users\n * to see it in for everyone.\n */\nfunction useMissingIntersectionObserver(shouldObserve, state, visualElement, { fallback = true }) {\n useEffect(() => {\n if (!shouldObserve || !fallback)\n return;\n if (env !== \"production\") {\n warnOnce(false, \"IntersectionObserver not available on this device. whileInView animations will trigger on mount.\");\n }\n /**\n * Fire this in an rAF because, at this point, the animation state\n * won't have flushed for the first time and there's certain logic in\n * there that behaves differently on the initial animation.\n *\n * This hook should be quite rarely called so setting this in an rAF\n * is preferred to changing the behaviour of the animation state.\n */\n requestAnimationFrame(() => {\n state.hasEnteredView = true;\n const { onViewportEnter } = visualElement.getProps();\n onViewportEnter && onViewportEnter(null);\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, true);\n }\n });\n }, [shouldObserve]);\n}\n\nexport { useViewport };\n","const makeRenderlessComponent = (hook) => (props) => {\n hook(props);\n return null;\n};\n\nexport { makeRenderlessComponent };\n","import { useFocusGesture } from '../../gestures/use-focus-gesture.mjs';\nimport { useHoverGesture } from '../../gestures/use-hover-gesture.mjs';\nimport { useTapGesture } from '../../gestures/use-tap-gesture.mjs';\nimport { useViewport } from './viewport/use-viewport.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst gestureAnimations = {\n inView: makeRenderlessComponent(useViewport),\n tap: makeRenderlessComponent(useTapGesture),\n focus: makeRenderlessComponent(useFocusGesture),\n hover: makeRenderlessComponent(useHoverGesture),\n};\n\nexport { gestureAnimations };\n","import { useContext, useId, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return \n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n // Replace with useId when released in React\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = () => onExitComplete && onExitComplete(id);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return \n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n warning = function (check, message) {\r\n if (!check && typeof console !== 'undefined') {\r\n console.warn(message);\r\n }\r\n };\r\n invariant = function (check, message) {\r\n if (!check) {\r\n throw new Error(message);\r\n }\r\n };\r\n}\n\nexport { invariant, warning };\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","import { warning } from 'hey-listen';\nimport { clamp } from '../../utils/clamp.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= maxDuration * 1000, \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, duration / 1000);\n if (dampingRatio < 1) {\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = duration * 1000;\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { __rest } from 'tslib';\nimport { findSpring, calcAngularFreq } from '../utils/find-spring.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = Object.assign({ velocity: 0.0, stiffness: 100, damping: 10, mass: 1.0, isResolvedFromDuration: false }, options);\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = Object.assign(Object.assign(Object.assign({}, springOptions), derived), { velocity: 0.0, mass: 1.0 });\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring(_a) {\n var { from = 0.0, to = 1.0, restSpeed = 2, restDelta } = _a, options = __rest(_a, [\"from\", \"to\", \"restSpeed\", \"restDelta\"]);\n const state = { done: false, value: from };\n let { stiffness, damping, mass, velocity, duration, isResolvedFromDuration, } = getSpringOptions(options);\n let resolveSpring = zero;\n let resolveVelocity = zero;\n function createSpring() {\n const initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n const initialDelta = to - from;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;\n if (restDelta === undefined) {\n restDelta = Math.min(Math.abs(to - from) / 100, 0.4);\n }\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (to -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n resolveVelocity = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (dampingRatio *\n undampedAngularFreq *\n envelope *\n ((Math.sin(angularFreq * t) *\n (initialVelocity +\n dampingRatio *\n undampedAngularFreq *\n initialDelta)) /\n angularFreq +\n initialDelta * Math.cos(angularFreq * t)) -\n envelope *\n (Math.cos(angularFreq * t) *\n (initialVelocity +\n dampingRatio *\n undampedAngularFreq *\n initialDelta) -\n angularFreq *\n initialDelta *\n Math.sin(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n resolveSpring = (t) => to -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) *\n t);\n }\n else {\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (to -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n }\n createSpring();\n return {\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n const currentVelocity = resolveVelocity(t) * 1000;\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(to - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? to : current;\n return state;\n },\n flipTarget: () => {\n velocity = -velocity;\n [from, to] = [to, from];\n createSpring();\n },\n };\n}\nspring.needsInterpolation = (a, b) => typeof a === \"string\" || typeof b === \"string\";\nconst zero = (_t) => 0;\n\nexport { spring };\n","const progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","const mix = (from, to, progress) => -progress * from + progress * to + from;\n\nexport { mix };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { number, alpha } from '../numbers/index.mjs';\nimport { sanitize, clamp } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = clamp(0, 255);\nconst rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });\nconst rgba = {\n test: isColorString('rgb', 'red'),\n parse: splitColor('red', 'green', 'blue'),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => 'rgba(' +\n rgbUnit.transform(red) +\n ', ' +\n rgbUnit.transform(green) +\n ', ' +\n rgbUnit.transform(blue) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')',\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = '';\n let g = '';\n let b = '';\n let a = '';\n if (v.length > 5) {\n r = v.substr(1, 2);\n g = v.substr(3, 2);\n b = v.substr(5, 2);\n a = v.substr(7, 2);\n }\n else {\n r = v.substr(1, 1);\n g = v.substr(2, 1);\n b = v.substr(3, 1);\n a = v.substr(4, 1);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString('#'),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString('hsl', 'hue'),\n parse: splitColor('hue', 'saturation', 'lightness'),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return ('hsla(' +\n Math.round(hue) +\n ', ' +\n percent.transform(sanitize(saturation)) +\n ', ' +\n percent.transform(sanitize(lightness)) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')');\n },\n};\n\nexport { hsla };\n","function hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","import { mix } from './mix.mjs';\nimport { hsla, rgba, hex } from 'style-value-types';\nimport { invariant } from 'hey-listen';\nimport { hslaToRgba } from './hsla-to-rgba.mjs';\n\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const toExpo = to * to;\n return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nconst notAnimatable = (color) => `'${color}' is not an animatable color. Use the equivalent color code instead.`;\nconst mixColor = (from, to) => {\n let fromColorType = getColorType(from);\n let toColorType = getColorType(to);\n invariant(!!fromColorType, notAnimatable(from));\n invariant(!!toColorType, notAnimatable(to));\n let fromColor = fromColorType.parse(from);\n let toColor = toColorType.parse(to);\n if (fromColorType === hsla) {\n fromColor = hslaToRgba(fromColor);\n fromColorType = rgba;\n }\n if (toColorType === hsla) {\n toColor = hslaToRgba(toColor);\n toColorType = rgba;\n }\n const blended = Object.assign({}, fromColor);\n return (v) => {\n for (const key in blended) {\n if (key !== \"alpha\") {\n blended[key] = mixLinearColor(fromColor[key], toColor[key], v);\n }\n }\n blended.alpha = mix(fromColor.alpha, toColor.alpha, v);\n return fromColorType.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty('red')\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nconst colorToken = '${c}';\nconst numberToken = '${n}';\nfunction test(v) {\n var _a, _b, _c, _d;\n return (isNaN(v) &&\n isString(v) &&\n ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0);\n}\nfunction analyse(v) {\n if (typeof v === 'number')\n v = `${v}`;\n const values = [];\n let numColors = 0;\n const colors = v.match(colorRegex);\n if (colors) {\n numColors = colors.length;\n v = v.replace(colorRegex, colorToken);\n values.push(...colors.map(color.parse));\n }\n const numbers = v.match(floatRegex);\n if (numbers) {\n v = v.replace(floatRegex, numberToken);\n values.push(...numbers.map(number.parse));\n }\n return { values, numColors, tokenised: v };\n}\nfunction parse(v) {\n return analyse(v).values;\n}\nfunction createTransformer(v) {\n const { values, numColors, tokenised } = analyse(v);\n const numValues = values.length;\n return (v) => {\n let output = tokenised;\n for (let i = 0; i < numValues; i++) {\n output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === 'number' ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parse(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = { test, parse, createTransformer, getAnimatableNone };\n\nexport { complex };\n","const zeroPoint = {\n x: 0,\n y: 0,\n z: 0\n};\nconst isNum = (v) => typeof v === 'number';\n\nexport { isNum, zeroPoint };\n","import { complex, color } from 'style-value-types';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { isNum } from './inc.mjs';\nimport { pipe } from './pipe.mjs';\nimport { warning } from 'hey-listen';\n\nfunction getMixer(origin, target) {\n if (isNum(origin)) {\n return (v) => mix(origin, target, v);\n }\n else if (color.test(origin)) {\n return mixColor(origin, target);\n }\n else {\n return mixComplex(origin, target);\n }\n}\nconst mixArray = (from, to) => {\n const output = [...from];\n const numValues = output.length;\n const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n return (v) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nconst mixObject = (origin, target) => {\n const output = Object.assign(Object.assign({}, origin), target);\n const blendValue = {};\n for (const key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nfunction analyse(value) {\n const parsed = complex.parse(value);\n const numValues = parsed.length;\n let numNumbers = 0;\n let numRGB = 0;\n let numHSL = 0;\n for (let i = 0; i < numValues; i++) {\n if (numNumbers || typeof parsed[i] === \"number\") {\n numNumbers++;\n }\n else {\n if (parsed[i].hue !== undefined) {\n numHSL++;\n }\n else {\n numRGB++;\n }\n }\n }\n return { parsed, numNumbers, numRGB, numHSL };\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyse(origin);\n const targetStats = analyse(target);\n const canInterpolate = originStats.numHSL === targetStats.numHSL &&\n originStats.numRGB === targetStats.numRGB &&\n originStats.numNumbers >= targetStats.numNumbers;\n if (canInterpolate) {\n return pipe(mixArray(originStats.parsed, targetStats.parsed), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return (p) => `${p > 0 ? target : origin}`;\n }\n};\n\nexport { mixArray, mixComplex, mixObject };\n","import { progress } from './progress.mjs';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.mjs';\nimport { color } from 'style-value-types';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { invariant } from 'hey-listen';\n\nconst mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n if (typeof v === 'number') {\n return mixNumber;\n }\n else if (typeof v === 'string') {\n if (color.test(v)) {\n return mixColor;\n }\n else {\n return mixComplex;\n }\n }\n else if (Array.isArray(v)) {\n return mixArray;\n }\n else if (typeof v === 'object') {\n return mixObject;\n }\n}\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || detectMixerFactory(output[0]);\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\nfunction fastInterpolate([from, to], [mixer]) {\n return (v) => mixer(progress(from, to, v));\n}\nfunction slowInterpolate(input, mixers) {\n const inputLength = input.length;\n const lastInputIndex = inputLength - 1;\n return (v) => {\n let mixerIndex = 0;\n let foundMixerIndex = false;\n if (v <= input[0]) {\n foundMixerIndex = true;\n }\n else if (v >= input[lastInputIndex]) {\n mixerIndex = lastInputIndex - 1;\n foundMixerIndex = true;\n }\n if (!foundMixerIndex) {\n let i = 1;\n for (; i < inputLength; i++) {\n if (input[i] > v || i === lastInputIndex) {\n break;\n }\n }\n mixerIndex = i - 1;\n }\n const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\n return mixers[mixerIndex](progressInRange);\n };\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, 'Both input and output ranges must be the same length');\n invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, 'Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.');\n if (input[0] > input[inputLength - 1]) {\n input = [].concat(input);\n output = [].concat(output);\n input.reverse();\n output.reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const interpolator = inputLength === 2\n ? fastInterpolate(input, mixers)\n : slowInterpolate(input, mixers);\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","const reverseEasing = easing => p => 1 - easing(1 - p);\nconst mirrorEasing = easing => p => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\nconst createExpoIn = (power) => p => Math.pow(p, power);\nconst createBackIn = (power) => p => p * p * ((power + 1) * p - power);\nconst createAnticipate = (power) => {\n const backEasing = createBackIn(power);\n return p => (p *= 2) < 1\n ? 0.5 * backEasing(p)\n : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n};\n\nexport { createAnticipate, createBackIn, createExpoIn, mirrorEasing, reverseEasing };\n","import { createExpoIn, reverseEasing, mirrorEasing, createBackIn, createAnticipate } from './utils.mjs';\n\nconst DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nconst BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;\nconst BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;\nconst BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;\nconst linear = p => p;\nconst easeIn = createExpoIn(2);\nconst easeOut = reverseEasing(easeIn);\nconst easeInOut = mirrorEasing(easeIn);\nconst circIn = p => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circOut);\nconst backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nconst backOut = reverseEasing(backIn);\nconst backInOut = mirrorEasing(backIn);\nconst anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);\nconst ca = 4356.0 / 361.0;\nconst cb = 35442.0 / 1805.0;\nconst cc = 16061.0 / 1805.0;\nconst bounceOut = (p) => {\n if (p === 1 || p === 0)\n return p;\n const p2 = p * p;\n return p < BOUNCE_FIRST_THRESHOLD\n ? 7.5625 * p2\n : p < BOUNCE_SECOND_THRESHOLD\n ? 9.075 * p2 - 9.9 * p + 3.4\n : p < BOUNCE_THIRD_THRESHOLD\n ? ca * p2 - cb * p + cc\n : 10.8 * p * p - 20.52 * p + 10.72;\n};\nconst bounceIn = reverseEasing(bounceOut);\nconst bounceInOut = (p) => p < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0))\n : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;\n\nexport { anticipate, backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, easeIn, easeInOut, easeOut, linear };\n","import { interpolate } from '../../utils/interpolate.mjs';\nimport { easeInOut } from '../../easing/index.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n const numValues = values.length;\n return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);\n}\nfunction convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\nfunction keyframes({ from = 0, to = 1, ease, offset, duration = 300, }) {\n const state = { done: false, value: from };\n const values = Array.isArray(to) ? to : [from, to];\n const times = convertOffsetToTimes(offset && offset.length === values.length\n ? offset\n : defaultOffset(values), duration);\n function createInterpolator() {\n return interpolate(times, values, {\n ease: Array.isArray(ease) ? ease : defaultEasing(values, ease),\n });\n }\n let interpolator = createInterpolator();\n return {\n next: (t) => {\n state.value = interpolator(t);\n state.done = t >= duration;\n return state;\n },\n flipTarget: () => {\n values.reverse();\n interpolator = createInterpolator();\n },\n };\n}\n\nexport { convertOffsetToTimes, defaultEasing, defaultOffset, keyframes };\n","function decay({ velocity = 0, from = 0, power = 0.8, timeConstant = 350, restDelta = 0.5, modifyTarget, }) {\n const state = { done: false, value: from };\n let amplitude = power * velocity;\n const ideal = from + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n if (target !== ideal)\n amplitude = target - from;\n return {\n next: (t) => {\n const delta = -amplitude * Math.exp(-t / timeConstant);\n state.done = !(delta > restDelta || delta < -restDelta);\n state.value = state.done ? target : target + delta;\n return state;\n },\n flipTarget: () => { },\n };\n}\n\nexport { decay };\n","import { spring } from '../generators/spring.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { decay } from '../generators/decay.mjs';\n\nconst types = { keyframes, spring, decay };\nfunction detectAnimationFromOptions(config) {\n if (Array.isArray(config.to)) {\n return keyframes;\n }\n else if (types[config.type]) {\n return types[config.type];\n }\n const keys = new Set(Object.keys(config));\n if (keys.has(\"ease\") ||\n (keys.has(\"duration\") && !keys.has(\"dampingRatio\"))) {\n return keyframes;\n }\n else if (keys.has(\"dampingRatio\") ||\n keys.has(\"stiffness\") ||\n keys.has(\"mass\") ||\n keys.has(\"damping\") ||\n keys.has(\"restSpeed\") ||\n keys.has(\"restDelta\")) {\n return spring;\n }\n return keyframes;\n}\n\nexport { detectAnimationFromOptions };\n","function loopElapsed(elapsed, duration, delay = 0) {\n return elapsed - duration - delay;\n}\nfunction reverseElapsed(elapsed, duration, delay = 0, isForwardPlayback = true) {\n return isForwardPlayback\n ? loopElapsed(duration + -elapsed, duration, delay)\n : duration - (elapsed - duration) + delay;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {\n return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;\n}\n\nexport { hasRepeatDelayElapsed, loopElapsed, reverseElapsed };\n","import { __rest } from 'tslib';\nimport { detectAnimationFromOptions } from './utils/detect-animation-from-options.mjs';\nimport sync, { cancelSync } from 'framesync';\nimport { interpolate } from '../utils/interpolate.mjs';\nimport { hasRepeatDelayElapsed, reverseElapsed, loopElapsed } from './utils/elapsed.mjs';\n\nconst framesync = (update) => {\n const passTimestamp = ({ delta }) => update(delta);\n return {\n start: () => sync.update(passTimestamp, true),\n stop: () => cancelSync.update(passTimestamp),\n };\n};\nfunction animate(_a) {\n var _b, _c;\n var { from, autoplay = true, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = \"loop\", repeatDelay = 0, onPlay, onStop, onComplete, onRepeat, onUpdate } = _a, options = __rest(_a, [\"from\", \"autoplay\", \"driver\", \"elapsed\", \"repeat\", \"repeatType\", \"repeatDelay\", \"onPlay\", \"onStop\", \"onComplete\", \"onRepeat\", \"onUpdate\"]);\n let { to } = options;\n let driverControls;\n let repeatCount = 0;\n let computedDuration = options.duration;\n let latest;\n let isComplete = false;\n let isForwardPlayback = true;\n let interpolateFromNumber;\n const animator = detectAnimationFromOptions(options);\n if ((_c = (_b = animator).needsInterpolation) === null || _c === void 0 ? void 0 : _c.call(_b, from, to)) {\n interpolateFromNumber = interpolate([0, 100], [from, to], {\n clamp: false,\n });\n from = 0;\n to = 100;\n }\n const animation = animator(Object.assign(Object.assign({}, options), { from, to }));\n function repeat() {\n repeatCount++;\n if (repeatType === \"reverse\") {\n isForwardPlayback = repeatCount % 2 === 0;\n elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n }\n else {\n elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n if (repeatType === \"mirror\")\n animation.flipTarget();\n }\n isComplete = false;\n onRepeat && onRepeat();\n }\n function complete() {\n driverControls.stop();\n onComplete && onComplete();\n }\n function update(delta) {\n if (!isForwardPlayback)\n delta = -delta;\n elapsed += delta;\n if (!isComplete) {\n const state = animation.next(Math.max(0, elapsed));\n latest = state.value;\n if (interpolateFromNumber)\n latest = interpolateFromNumber(latest);\n isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n }\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(latest);\n if (isComplete) {\n if (repeatCount === 0)\n computedDuration !== null && computedDuration !== void 0 ? computedDuration : (computedDuration = elapsed);\n if (repeatCount < repeatMax) {\n hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n }\n else {\n complete();\n }\n }\n }\n function play() {\n onPlay === null || onPlay === void 0 ? void 0 : onPlay();\n driverControls = driver(update);\n driverControls.start();\n }\n autoplay && play();\n return {\n stop: () => {\n onStop === null || onStop === void 0 ? void 0 : onStop();\n driverControls.stop();\n },\n };\n}\n\nexport { animate };\n","function velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { animate } from './index.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { getFrameData } from 'framesync';\n\nfunction inertia({ from = 0, velocity = 0, min, max, power = 0.8, timeConstant = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop, }) {\n let currentAnimation;\n function isOutOfBounds(v) {\n return (min !== undefined && v < min) || (max !== undefined && v > max);\n }\n function boundaryNearest(v) {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n }\n function startAnimation(options) {\n currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n currentAnimation = animate(Object.assign(Object.assign({}, options), { driver, onUpdate: (v) => {\n var _a;\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n }, onComplete,\n onStop }));\n }\n function startSpring(options) {\n startAnimation(Object.assign({ type: \"spring\", stiffness: bounceStiffness, damping: bounceDamping, restDelta }, options));\n }\n if (isOutOfBounds(from)) {\n startSpring({ from, velocity, to: boundaryNearest(from) });\n }\n else {\n let target = power * velocity + from;\n if (typeof modifyTarget !== \"undefined\")\n target = modifyTarget(target);\n const boundary = boundaryNearest(target);\n const heading = boundary === min ? -1 : 1;\n let prev;\n let current;\n const checkBoundary = (v) => {\n prev = current;\n current = v;\n velocity = velocityPerSecond(v - prev, getFrameData().delta);\n if ((heading === 1 && v > boundary) ||\n (heading === -1 && v < boundary)) {\n startSpring({ from: v, to: boundary, velocity });\n }\n };\n startAnimation({\n type: \"decay\",\n from,\n velocity,\n timeConstant,\n power,\n restDelta,\n modifyTarget,\n onUpdate: isOutOfBounds(target) ? checkBoundary : undefined,\n });\n }\n return {\n stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop(),\n };\n}\n\nexport { inertia };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n\nexport { secondsToMilliseconds };\n","import { linear } from './index.mjs';\n\nconst a = (a1, a2) => 1.0 - 3.0 * a2 + 3.0 * a1;\nconst b = (a1, a2) => 3.0 * a2 - 6.0 * a1;\nconst c = (a1) => 3.0 * a1;\nconst calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\nconst getSlope = (t, a1, a2) => 3.0 * a(a1, a2) * t * t + 2.0 * b(a1, a2) * t + c(a1);\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 10;\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n }\n else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nconst newtonIterations = 8;\nconst newtonMinSlope = 0.001;\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (let i = 0; i < newtonIterations; ++i) {\n const currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n if (mX1 === mY1 && mX2 === mY2)\n return linear;\n const sampleValues = new Float32Array(kSplineTableSize);\n for (let i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n function getTForX(aX) {\n let intervalStart = 0.0;\n let currentSample = 1;\n const lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n const dist = (aX - sampleValues[currentSample]) /\n (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n const guessForT = intervalStart + dist * kSampleStepSize;\n const initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= newtonMinSlope) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n else if (initialSlope === 0.0) {\n return guessForT;\n }\n else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { invariant } from 'hey-listen';\nimport { cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut } from 'popmotion';\n\nconst easingLookup = {\n linear,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n bounceIn,\n bounceInOut,\n bounceOut,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\nconst isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { easingDefinitionToFunction, isEasingArray };\n","import { complex } from 'style-value-types';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (key, value) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n complex.test(value) && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { isKeyframesTarget } from './is-keyframes-target.mjs';\n\nconst underDampedSpring = () => ({\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n});\nconst criticallyDampedSpring = (to) => ({\n type: \"spring\",\n stiffness: 550,\n damping: to === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst linearTween = () => ({\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3,\n});\nconst keyframes = (values) => ({\n type: \"keyframes\",\n duration: 0.8,\n values,\n});\nconst defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: criticallyDampedSpring,\n scaleY: criticallyDampedSpring,\n scale: criticallyDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: criticallyDampedSpring,\n};\nconst getDefaultTransition = (valueKey, to) => {\n let transitionFactory;\n if (isKeyframesTarget(to)) {\n transitionFactory = keyframes;\n }\n else {\n transitionFactory =\n defaultTransitions[valueKey] || defaultTransitions.default;\n }\n return { to, ...transitionFactory(to) };\n};\n\nexport { criticallyDampedSpring, getDefaultTransition, linearTween, underDampedSpring };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\nconst maxDefaults = new Set(['brightness', 'contrast', 'saturate', 'opacity']);\nfunction applyDefaultFilter(v) {\n let [name, value] = v.slice(0, -1).split('(');\n if (name === 'drop-shadow')\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, '');\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + '(' + defaultValue + unit + ')';\n}\nconst functionRegex = /([a-z-]*)\\(.*?\\)/g;\nconst filter = Object.assign(Object.assign({}, complex), { getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(' ') : v;\n } });\n\nexport { filter };\n","import { color, filter } from 'style-value-types';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { filter, complex } from 'style-value-types';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n var _a;\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\n}\n\nexport { getAnimatableNone };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","import { inertia, animate } from 'popmotion';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { isEasingArray, easingDefinitionToFunction } from './easing.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { getDefaultTransition } from './default-transitions.mjs';\nimport { warning } from 'hey-listen';\nimport { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\n\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, ...transition }) {\n return !!Object.keys(transition).length;\n}\nlet legacyRepeatWarning = false;\n/**\n * Convert Framer Motion's Transition type into Popmotion-compatible options.\n */\nfunction convertTransitionToAnimationOptions({ ease, times, yoyo, flip, loop, ...transition }) {\n const options = { ...transition };\n if (times)\n options[\"offset\"] = times;\n /**\n * Convert any existing durations from seconds to milliseconds\n */\n if (transition.duration)\n options[\"duration\"] = secondsToMilliseconds(transition.duration);\n if (transition.repeatDelay)\n options.repeatDelay = secondsToMilliseconds(transition.repeatDelay);\n /**\n * Map easing names to Popmotion's easing functions\n */\n if (ease) {\n options[\"ease\"] = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n }\n /**\n * Support legacy transition API\n */\n if (transition.type === \"tween\")\n options.type = \"keyframes\";\n /**\n * TODO: These options are officially removed from the API.\n */\n if (yoyo || loop || flip) {\n warning(!legacyRepeatWarning, \"yoyo, loop and flip have been removed from the API. Replace with repeat and repeatType options.\");\n legacyRepeatWarning = true;\n if (yoyo) {\n options.repeatType = \"reverse\";\n }\n else if (loop) {\n options.repeatType = \"loop\";\n }\n else if (flip) {\n options.repeatType = \"mirror\";\n }\n options.repeat = loop || yoyo || flip || transition.repeat;\n }\n /**\n * TODO: Popmotion 9 has the ability to automatically detect whether to use\n * a keyframes or spring animation, but does so by detecting velocity and other spring options.\n * It'd be good to introduce a similar thing here.\n */\n if (transition.type !== \"spring\")\n options.type = \"keyframes\";\n return options;\n}\n/**\n * Get the delay for a value by checking Transition with decreasing specificity.\n */\nfunction getDelayFromTransition(transition, key) {\n var _a, _b;\n const valueTransition = getValueTransition(transition, key) || {};\n return (_b = (_a = valueTransition.delay) !== null && _a !== void 0 ? _a : transition.delay) !== null && _b !== void 0 ? _b : 0;\n}\nfunction hydrateKeyframes(options) {\n if (Array.isArray(options.to) && options.to[0] === null) {\n options.to = [...options.to];\n options.to[0] = options.from;\n }\n return options;\n}\nfunction getPopmotionAnimationOptions(transition, options, key) {\n if (Array.isArray(options.to) && transition.duration === undefined) {\n transition.duration = 0.8;\n }\n hydrateKeyframes(options);\n /**\n * Get a default transition if none is determined to be defined.\n */\n if (!isTransitionDefined(transition)) {\n transition = {\n ...transition,\n ...getDefaultTransition(key, options.to),\n };\n }\n return {\n ...options,\n ...convertTransitionToAnimationOptions(transition),\n };\n}\n/**\n *\n */\nfunction getAnimation(key, value, target, transition, onComplete) {\n const valueTransition = getValueTransition(transition, key) || {};\n let origin = valueTransition.from !== undefined ? valueTransition.from : value.get();\n const isTargetAnimatable = isAnimatable(key, target);\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n origin = getAnimatableNone(key, target);\n }\n else if (isZero(origin) && typeof target === \"string\") {\n origin = getZeroUnit(target);\n }\n else if (!Array.isArray(target) &&\n isZero(target) &&\n typeof origin === \"string\") {\n target = getZeroUnit(origin);\n }\n const isOriginAnimatable = isAnimatable(key, origin);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${key} from \"${origin}\" to \"${target}\". ${origin} is not an animatable value - to enable this animation set ${origin} to a value animatable to ${target} via the \\`style\\` property.`);\n function start() {\n const options = {\n from: origin,\n to: target,\n velocity: value.getVelocity(),\n onComplete,\n onUpdate: (v) => value.set(v),\n };\n return valueTransition.type === \"inertia\" ||\n valueTransition.type === \"decay\"\n ? inertia({ ...options, ...valueTransition })\n : animate({\n ...getPopmotionAnimationOptions(valueTransition, options, key),\n onUpdate: (v) => {\n options.onUpdate(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n options.onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n });\n }\n function set() {\n const finalTarget = resolveFinalValueInKeyframes(target);\n value.set(finalTarget);\n onComplete();\n valueTransition.onUpdate && valueTransition.onUpdate(finalTarget);\n valueTransition.onComplete && valueTransition.onComplete();\n return { stop: () => { } };\n }\n return !isOriginAnimatable ||\n !isTargetAnimatable ||\n valueTransition.type === false\n ? set\n : start;\n}\nfunction isZero(value) {\n return (value === 0 ||\n (typeof value === \"string\" &&\n parseFloat(value) === 0 &&\n value.indexOf(\" \") === -1));\n}\nfunction getZeroUnit(potentialUnitType) {\n return typeof potentialUnitType === \"number\"\n ? 0\n : getAnimatableNone(\"\", potentialUnitType);\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n/**\n * Start animation on a MotionValue. This function is an interface between\n * Framer Motion and Popmotion\n */\nfunction startAnimation(key, value, target, transition = {}) {\n if (instantAnimationState.current) {\n transition = { type: false };\n }\n return value.start((onComplete) => {\n let delayTimer;\n let controls;\n const animation = getAnimation(key, value, target, transition, onComplete);\n const delay = getDelayFromTransition(transition, key);\n const start = () => (controls = animation());\n if (delay) {\n delayTimer = window.setTimeout(start, secondsToMilliseconds(delay));\n }\n else {\n start();\n }\n return () => {\n clearTimeout(delayTimer);\n controls && controls.stop();\n };\n });\n}\n\nexport { convertTransitionToAnimationOptions, getDelayFromTransition, getPopmotionAnimationOptions, getValueTransition, getZeroUnit, hydrateKeyframes, isTransitionDefined, isZero, startAnimation };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^\\-?\\d*\\.?\\d+$/.test(v);\n\nexport { isNumericalString };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\nexport { isZeroValueString };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","import sync, { getFrameData } from 'framesync';\nimport { velocityPerSecond } from 'popmotion';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\n\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"7.3.6\";\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Functions to notify when the `MotionValue` updates.\n *\n * @internal\n */\n this.updateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the velocity updates.\n *\n * @internal\n */\n this.velocityUpdateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the `MotionValue` updates and `render` is set to `true`.\n *\n * @internal\n */\n this.renderSubscribers = new SubscriptionManager();\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n this.updateAndNotify = (v, render = true) => {\n this.prev = this.current;\n this.current = v;\n // Update timestamp\n const { delta, timestamp } = getFrameData();\n if (this.lastUpdated !== timestamp) {\n this.timeDelta = delta;\n this.lastUpdated = timestamp;\n sync.postRender(this.scheduleVelocityCheck);\n }\n // Update update subscribers\n if (this.prev !== this.current) {\n this.updateSubscribers.notify(this.current);\n }\n // Update velocity subscribers\n if (this.velocityUpdateSubscribers.getSize()) {\n this.velocityUpdateSubscribers.notify(this.getVelocity());\n }\n // Update render subscribers\n if (render) {\n this.renderSubscribers.notify(this.current);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = () => sync.postRender(this.velocityCheck);\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = ({ timestamp }) => {\n if (timestamp !== this.lastUpdated) {\n this.prev = this.current;\n this.velocityUpdateSubscribers.notify(this.getVelocity());\n }\n };\n this.hasAnimated = false;\n this.prev = this.current = init;\n this.canTrackVelocity = isFloat(this.current);\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return