{"version":3,"sources":["serviceWorkerRegistration.ts","reportWebVitals.ts","components/Loading.tsx","components/Header.tsx","components/WorkoutListItem.tsx","components/Filter.tsx","components/Overlay.tsx","components/Close.tsx","components/Button.tsx","components/WorkoutList.tsx","components/Player.tsx","components/WorkoutItem.tsx","services/cross.ts","App.tsx","index.tsx"],"names":["isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","then","registration","update","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","onUpdate","onSuccess","catch","error","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","motionBox","initial","height","exit","opacity","transition","duration","ease","outer","keyframes","body","armLeg","armBefore","GlobalStyle","createGlobalStyle","bodyPart","css","Container","styled","motion","div","Outer","Body","Arm","Leg","ArmFront","ArmBehind","LegFront","LegBehind","Loading","Fragment","variants","motionTitle","x","animate","delay","Head","header","Title","h1","Teaser","h2","Header","title","teaser","spin","li","Section","section","LinkItem","Link","Headline","ExerciseList","ol","ExerciseListItem","Go","Plus","animation","Random","props","isRandomizing","WorkoutListItem","history","useHistory","useState","randomizing","setRandomizing","programme","programmes","to","onClick","e","preventDefault","setTimeout","Math","floor","random","length","push","id","findRandom","name","sets","map","set","Icon","svg","Filter","version","xmlns","xmlnsXlink","viewBox","xmlSpace","d","fill","width","y","OverlayContainer","visible","OverlayContent","Overlay","children","Close","Button","button","text","motionList","List","ul","ProgrammesFilterButtonContainer","ProgrammesFilterButton","a","ProgrammesFilterContainer","PlayerClose","ProgrammesFilterWrapper","ProgrammesFilterScrollable","ProgrammesFilterButtons","FilterList","FilterListItem","FilterLabel","label","CheckBox","input","attrs","type","WorkoutList","React","showFilter","setShowFilter","showFilterOverlay","setShowFilterOverlay","showFilterContainer","setShowFilterContainer","showFilterClose","setShowFilterClose","filterTemp","setFilterTemp","filter","setFilter","useEffect","handleFilterCheck","updatedList","target","checked","value","splice","indexOf","every","f","flatMap","repetitions","repetition","exercises","exercise","includes","href","Array","from","Set","sort","exerciseName","onChange","Player","motionIn","motionOut","motionBack","motionProgram","motionListBlock","delayChildren","staggerChildren","countdownGoingIn","countdownGoingOut","pulse","LinkBackContainer","span","LinkBack","LinkBackIcon","Program","ListCointainer","ListItem","ListItemBold","PlayerLink","PlayerContainer","PlayerWrapper","StopwatchContainer","StopwatchText","StopwatchTextStart","StopwatchTextCountdown","StopwatchCountdownTime","withRouter","videoUrl","setVideoUrl","showVideoOverlay","setShowVideoOverlay","showVideoContainer","setShowVideoContainer","showVideoClose","setShowVideoClose","undefined","initialStopwatchDuration","setInitialStopwatchDuration","showStopwatchOverlay","setShowStopwatchOverlay","showStopwatchContainer","setShowStopwatchContainer","showStopwatchClose","setShowStopwatchClose","current","previous","stopwatchCountdown","setStopwatchCountdown","stopwatchDuration","setStopwatchDuration","find","p","toString","params","Audio","play","work","setName","comment","timerSets","timerWork","repetitionIndex","exerciseIndex","url","rounds","setNote","src","frameBorder","allow","allowFullScreen","monitorHeight","monitorWidth","noPlaceholder","size","circleSize","min","isPlaying","colors","trailColor","strokeWidth","remainingTime","textAnchor","roundsCompleted","minutes","seconds","padStart","client","sanityClient","projectId","dataset","apiVersion","useCdn","GetProgrammes","fetch","response","Error","App","workouts","setWorkouts","hasWorkouts","crossService","fetchData","render","AnimatePresence","exitBeforeEnter","exact","path","pathname","ReactDOM","StrictMode","document","getElementById","URL","process","origin","addEventListener","headers","contentType","get","status","ready","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"qLAYMA,EAAcC,QACW,cAA7BC,OAAOC,SAASC,UAEe,UAA7BF,OAAOC,SAASC,UAEhBF,OAAOC,SAASC,SAASC,MAAM,2DA0CnC,SAASC,EAAgBC,EAAeC,GACtCC,UAAUC,cACPC,SAASJ,GACTK,MAAK,SAACC,GAELA,EAAaC,SAQbD,EAAaE,cAAgB,WAC3B,IAAMC,EAAmBH,EAAaI,WACd,MAApBD,IAGJA,EAAiBE,cAAgB,WACA,cAA3BF,EAAiBG,QACfV,UAAUC,cAAcU,YAI1BC,QAAQC,IACN,+GAKEd,GAAUA,EAAOe,UACnBf,EAAOe,SAASV,KAMlBQ,QAAQC,IAAI,sCAGRd,GAAUA,EAAOgB,WACnBhB,EAAOgB,UAAUX,WAO5BY,OAAM,SAACC,GACNL,QAAQK,MAAM,4CAA6CA,MC1GjE,I,8BAYeC,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBjB,MAAK,YAAkD,IAA/CkB,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,O,+ECLRO,EAAY,CAChBC,QAAS,CACPC,OAAQ,SAEVC,KAAM,CACJD,OAAQ,EACRE,QAAS,EACTC,WAAY,CACVC,SAAU,GACVC,KAAM,CAAC,IAAM,EAAG,IAAM,MAItBC,EAAQC,YAAH,gIASLC,EAAOD,YAAH,8HASJE,EAASF,YAAH,+EAKNG,EAAYH,YAAH,yFAMTI,EAAcC,YAAH,2EAKXC,EAAWC,YAAH,2VAWaL,GAErBM,EAAYC,YAAOC,IAAOC,IAAdF,CAAH,kPAcTG,EAAQH,IAAOE,IAAV,8EACIZ,GAETc,EAAOJ,IAAOE,IAAV,ibAQKV,GAaTa,EAAML,IAAOE,IAAV,iGACLL,EAIUH,EACRG,GAGAS,EAAMN,IAAOE,IAAV,wHAGLL,EAKEA,GAGAU,EAAWP,YAAOK,EAAPL,CAAH,0HASRQ,EAAYR,YAAOK,EAAPL,CAAH,0HASTS,EAAWT,YAAOM,EAAPN,CAAH,wHASRU,EAAYV,YAAOM,EAAPN,CAAH,mZA0CAW,I,OAAAA,GAlBf,WACE,OACE,eAAC,IAAMC,SAAP,WACE,cAACb,EAAD,CAAWhB,QAAQ,UAAUE,KAAK,OAAO4B,SAAU/B,EAAnD,SACE,cAACqB,EAAD,UACE,eAACC,EAAD,WACE,cAACG,EAAD,IACA,cAACC,EAAD,IACA,cAACC,EAAD,IACA,cAACC,EAAD,WAIN,cAACf,EAAD,Q,kBChLAmB,GAAc,CAClB/B,QAAS,CACPgC,GAAI,GACJ7B,QAAS,GAEX8B,QAAS,CACPD,EAAG,EACH7B,QAAS,EACTC,WAAW,cACT8B,MAAO,IAhBI,CACf7B,SAAU,EACVC,KAAM,CAAC,IAAM,IAAM,IAAM,QAkBzBJ,KAAM,CACJ8B,GAAI,GACJ7B,QAAS,EACTC,WAAW,gBAnBG,CAChBC,SAAU,OAuBN8B,GAAOlB,YAAOC,IAAOkB,OAAdnB,CAAH,oDAGJoB,GAAQpB,IAAOqB,GAAV,4GAMLC,GAAStB,IAAOuB,GAAV,sHAqBGC,I,iCAAAA,GATf,YAAiD,IAA/BC,EAA8B,EAA9BA,MAAOC,EAAuB,EAAvBA,OACvB,OACE,eAACR,GAAD,CAAMnC,QAAQ,UAAUiC,QAAQ,UAAU/B,KAAK,OAAO4B,SAAUC,GAAhE,UACE,cAACM,GAAD,UAAQK,IACPC,GAAU,cAACJ,GAAD,UAASI,QC9CpBC,GAAOpC,YAAH,sHAQJQ,GAAYC,IAAO4B,GAAV,gnBA+BTC,GAAU7B,IAAO8B,QAAV,+CAGPC,GAAW/B,YAAOgC,IAAPhC,CAAH,8IAORiC,GAAWjC,IAAOqB,GAAV,8FAKRa,GAAelC,IAAOmC,GAAV,uFAKZC,GAAmBpC,IAAO4B,GAAV,oDAGhBS,GAAKrC,IAAOE,IAAV,2KASFoC,GAAOtC,IAAOE,IAAV,uGAMJqC,GAAYzC,YAAH,sEACA6B,IAETa,GAASxC,IAAOE,IAAV,sGAIR,SAAAuC,GAAK,OAAIA,EAAMC,cAAgBH,GAAY,MA0DhCI,I,GAAAA,GAhDf,SAAyBF,GACvB,IAAMG,EAAUC,cADqB,EAECC,oBAAS,GAFV,mBAE9BC,EAF8B,KAEjBC,EAFiB,KAgBrC,OAAKP,EAAMQ,WAAaR,EAAMS,aAAiBT,EAAMQ,YAAcR,EAAMS,WAAoB,KAG3F,cAAC,GAAD,UACE,eAACrB,GAAD,YACIY,EAAMQ,WACN,eAAClB,GAAD,CAAUoB,GAAG,IAAIC,QAAS,SAACC,GAAD,OAlBf,SAACA,GAClBA,EAAEC,iBAEFN,GAAe,GAEfO,YAAW,WACT,IAAMN,EAAYR,EAAMS,WAAYM,KAAKC,MAAMD,KAAKE,SAASjB,EAAMS,WAAYS,SAE/Ef,EAAQgB,KAAR,WAAiBX,EAAUY,OAC1B,KASoCC,CAAWT,IAA5C,UACE,cAACpB,GAAD,qBACA,cAACO,GAAD,CAAQE,cAAeK,EAAvB,eACA,cAACV,GAAD,UACE,cAACC,GAAD,qBAILG,EAAMQ,WACL,eAAClB,GAAD,CAAUoB,GAAE,WAAMV,EAAMQ,UAAUY,IAAlC,UACE,cAAC5B,GAAD,UAAWQ,EAAMQ,UAAUc,OAC3B,cAAC7B,GAAD,UACGO,EAAMQ,UAAUe,MAAQvB,EAAMQ,UAAUe,KAAKC,KAAI,SAACC,GACjD,OAAO,cAAC9B,GAAD,UAAgC8B,EAAIH,MAAbG,EAAIL,SAGtC,cAACxB,GAAD,UACE,cAACC,GAAD,2BC7IR6B,GAAOnE,IAAOoE,IAAV,0FAmBKC,I,SAAAA,GAbf,WACE,OACE,cAACF,GAAD,CAAMG,QAAQ,MAAMC,MAAM,6BAA6BC,WAAW,+BAA+BC,QAAQ,YAAYC,SAAS,WAA9H,SACE,8BACE,sBAAMC,EAAE,8JAA8JC,KAAK,iBAC3K,sBAAM5F,OAAO,IAAI6F,MAAM,KAAK9D,EAAE,KAAK+D,EAAE,KAAKF,KAAK,iBAC/C,sBAAM5F,OAAO,IAAI6F,MAAM,KAAK9D,EAAE,KAAK+D,EAAE,KAAKF,KAAK,iBAC/C,sBAAM5F,OAAO,IAAI6F,MAAM,KAAK9D,EAAE,KAAK+D,EAAE,KAAKF,KAAK,uBCRjDjF,GAAcC,YAAH,oEAKXmF,GAAmB/E,IAAOE,IAAV,qTACT,SAAAuC,GAAK,OAAIA,EAAMuC,QAAU,QAAS,UAWzCC,GAAiBjF,IAAOE,IAAV,6GA2BLgF,I,GAAAA,GAbf,SAAiBzC,GACf,OACE,eAAC,IAAM7B,SAAP,WACG6B,EAAMuC,SAAW,cAAC,GAAD,IAClB,cAACD,GAAD,CAAkBC,QAASvC,EAAMuC,QAAjC,SACE,cAACC,GAAD,UACGxC,EAAM0C,iBCtCXhB,GAAOnE,IAAOoE,IAAV,0EAGC,SAAA3B,GAAK,OAAIA,EAAMuC,QAAU,QAAS,UAiB9BI,I,GAAAA,GARf,SAAe3C,GACb,OACE,cAAC,GAAD,CAAM6B,QAAQ,MAAMC,MAAM,6BAA6BC,WAAW,+BAA+BC,QAAQ,cAAcC,SAAS,WAAWM,QAASvC,EAAMuC,QAA1J,SACE,sBAAML,EAAE,wsBAAwsBC,KAAK,oBCnBrtBS,GAASrF,IAAOsF,OAAV,qZA6BGJ,I,oCAAAA,GANf,SAAiBzC,GACf,OACI,cAAC4C,GAAD,CAAQjC,QAASX,EAAMW,QAAvB,SAAiCX,EAAM8C,QCHvCC,GAAa,CACjBzG,QAAS,CACP+F,GAAI,GACJ5F,QAAS,GAEX8B,QAAS,CACP8D,EAAG,EACH5F,QAAS,EACT+B,MAAO,GACP9B,WAAW,gBAhBE,CACfC,SAAU,GACVC,KAAM,CAAC,IAAM,IAAM,IAAM,QAkBzBJ,KAAM,CACJ6F,GAAI,GACJ5F,QAAS,EACTC,WAAW,cACT8B,MAAO,IApBK,CAChB7B,SAAU,OAwBNqG,GAAOzF,YAAOC,IAAOyF,GAAd1F,CAAH,mUAgBJ2F,GAAkC3F,IAAOE,IAAV,4EAI/B0F,GAAyB5F,IAAO6F,EAAV,mHAMtBC,GAA4B9F,IAAOE,IAAV,0WAEtB,SAAAuC,GAAK,OAAIA,EAAMuC,QAAU,QAAS,WAUhC,SAAAvC,GAAK,OAAIA,EAAMuC,QAAU,QAAS,WAIvCe,GAAc/F,IAAO6F,EAAV,sHAMXG,GAA0BhG,IAAOE,IAAV,oKAMvB+F,GAA6BjG,IAAOE,IAAV,0cAuB1BgG,GAA0BlG,IAAOE,IAAV,wOAOvBiG,GAAanG,YAAOC,IAAOyF,GAAd1F,CAAH,+FAKVoG,GAAiBpG,IAAO4B,GAAV,qEAKdyE,GAAcrG,IAAOsG,MAAV,sEAIXC,GAAWvG,IAAOwG,MAAMC,MAAM,CAAEC,KAAM,YAA3B1G,CAAH,6tBAkJC2G,I,GAAAA,GA7Gf,SAAqBlE,GAAe,IAAD,EACGmE,IAAM9D,UAAkB,GAD3B,mBAC1B+D,EAD0B,KACdC,EADc,OAEiBF,IAAM9D,UAAkB,GAFzC,mBAE1BiE,EAF0B,KAEPC,EAFO,OAGqBJ,IAAM9D,UAAkB,GAH7C,mBAG1BmE,EAH0B,KAGLC,EAHK,OAIaN,IAAM9D,UAAkB,GAJrC,mBAI1BqE,EAJ0B,KAITC,EAJS,OAKGR,IAAM9D,SAAmB,IAL5B,mBAK1BuE,EAL0B,KAKdC,EALc,OAMLV,IAAM9D,SAAmB,IANpB,mBAM1ByE,EAN0B,KAMlBC,EANkB,KAQjCZ,IAAMa,WAAU,WACTZ,GAQHG,GAAqB,GACrBM,EAAcC,GAEdhE,YAAW,WACT2D,GAAuB,KACtB,IAEH3D,YAAW,WACT6D,GAAmB,KAClB,OAhBHA,GAAmB,GACnBF,GAAuB,GAEvB3D,YAAW,WACTyD,GAAqB,KACpB,QAaJ,CAACH,IAEJ,IAAMa,EAAoB,SAACrE,GACzB,IAAIsE,EAAW,aAAON,GAElBhE,EAAEuE,OAAOC,QACXF,EAAW,uBAAON,GAAP,CAAmBhE,EAAEuE,OAAOE,QAEvCH,EAAYI,OAAOV,EAAWW,QAAQ3E,EAAEuE,OAAOE,OAAQ,GAGzDR,EAAcK,IAgBVzE,EAAaqE,EAAO5D,OAAS,EAAIlB,EAAMS,WAAWqE,QAAO,SAACtE,GAAD,OAAesE,EAAOU,OAAM,SAACC,GAAD,OAAOjF,EAAUe,KAAKmE,SAAQ,SAACjE,GAAD,OAASA,EAAIkE,YAAYD,SAAQ,SAACE,GAAD,OAAgBA,EAAWC,UAAUH,SAAQ,SAACI,GAAD,OAAcA,EAASxE,cAAQyE,SAASN,SAAOzF,EAAMS,WAE5P,OACE,eAAC,IAAMtC,SAAP,WACE,eAACX,EAAA,EAAOC,IAAR,CAAYnB,QAAQ,UAAUiC,QAAQ,UAAU/B,KAAK,OAArD,UACE,cAAC,GAAD,CAAQwC,MAAM,gBAAgBC,OAAO,qCACrC,cAACiE,GAAD,UACE,cAACC,GAAD,CAAwB6C,KAAK,IAAIrF,QAAS,SAACC,GAAQA,EAAEC,iBAAkBwD,GAAc,IAArF,SACE,cAAC,GAAD,QAGmB,IAAtB5D,EAAWS,QACV,cAAC,IAAM/C,SAAP,+BAEDsC,EAAWS,OAAS,GACnB,eAAC8B,GAAD,CAAM5E,SAAU2E,GAAhB,UACE,cAAC,GAAD,CAA8BtC,WAAYA,GAArB,UACpBA,EAAWe,KAAI,SAAChB,GACf,OAAO,cAAC,GAAD,CAAoCA,UAAWA,GAAzBA,EAAUY,aAM/C,cAAC,GAAD,CAASmB,QAAS+B,EAAlB,SACE,eAACjB,GAAD,CAA2Bd,QAASiC,EAApC,UACE,cAAClB,GAAD,CAAa0C,KAAK,IAAIrF,QAAS,SAACC,GAA0BA,EAAEC,iBAAkBwD,GAAc,IAA5F,SACE,cAAC,GAAD,CAAO9B,QAASmC,MAElB,eAACnB,GAAD,WACE,cAACC,GAAD,UACE,cAACE,GAAD,UACG,aAAIuC,MAAMC,KAAK,IAAIC,IAAInG,EAAMS,WAAWiF,SAAQ,SAAClF,GAAD,OAAeA,EAAUe,KAAKmE,SAAQ,SAACjE,GAAD,OAASA,EAAIkE,YAAYD,SAAQ,SAACE,GAAD,OAAgBA,EAAWC,UAAUH,SAAQ,SAACI,GAAD,OAAcA,EAASxE,oBAAY8E,OAAO5E,KAAI,SAAC6E,GAClN,OAAQ,cAAC1C,GAAD,UACJ,eAACC,GAAD,WACE,cAACE,GAAD,CAAUuB,MAAOgB,EAAcjB,QAASR,EAAWmB,SAASM,GAAeC,SAAUrB,IACpFoB,MAHsBA,UASnC,eAAC5C,GAAD,WACE,cAAC,GAAD,CAAQX,KAAK,UAAUnC,QAAS,WA9C1CoE,EAAU,IA8CuDV,GAAc,MACrE,cAAC,GAAD,CAAQvB,KAAK,WAAWnC,QAAS,WAnD3CkE,EAAc,IAmDsDR,GAAc,MACxE,cAAC,GAAD,CAAQvB,KAAK,MAAMnC,QAAS,WAzDtCoE,EAAUH,GACVC,EAAc,IAwD8CR,GAAc,qB,kBCvRxE3C,GAAOnE,IAAOoE,IAAV,0EAiBK4E,I,4DAAAA,GAZf,WACE,OACE,cAAC,GAAD,CAAM1E,QAAQ,MAAMC,MAAM,6BAA6BC,WAAW,+BAA+BC,QAAQ,oBAAoBC,SAAS,WAAtI,SACE,4BACC,4BACC,sBAAMC,EAAE,4uBAA4uBC,KAAK,wBCY3vBqE,GAAW,CACf7J,SAAU,GACVC,KAAM,CAAC,IAAM,IAAM,IAAM,MAErB6J,GAAY,CAChB9J,SAAU,IAEN+J,GAAa,CACjBpK,QAAS,CACPgC,EAAG,GACH7B,QAAS,GAEX8B,QAAS,CACPD,EAAG,EACH7B,QAAS,EACTC,WAAW,cACT8B,MAAO,IACJgI,KAGPhK,KAAM,CACJ8B,EAAG,GACH7B,QAAS,EACTC,WAAW,gBACN+J,MAIHE,GAAgB,CACpBrK,QAAS,CACP+F,GAAI,GACJ5F,QAAS,GAEX8B,QAAS,CACP8D,EAAG,EACH5F,QAAS,EACT+B,MAAO,GACP9B,WAAW,gBACN8J,KAGPhK,KAAM,CACJ6F,GAAI,GACJ5F,QAAS,EACTC,WAAW,cACT8B,MAAO,IACJiI,MAIHG,GAAkB,CACtBrI,QAAS,CACP7B,WAAY,CACVmK,cAAe,GACfC,gBAAiB,MAGrBtK,KAAM,CACJE,WAAY,CACVoK,gBAAiB,OAIjB/D,GAAa,CACjBzG,QAAS,CACPgC,EAAG,GACH7B,QAAS,GAEX8B,QAAS,CACPD,EAAG,EACH7B,QAAS,EACTC,WAAW,gBACN8J,KAGPhK,KAAM,CACJ8B,EAAG,GACH7B,QAAS,EACTC,WAAW,gBACN+J,MAIHM,GAAmB,CACvBzK,QAAS,CACP+F,EAAG,QACH5F,QAAS,GAEX8B,QAAS,CACP8D,EAAG,EACH5F,QAAS,IAGPuK,GAAoB,CACxB1K,QAAS,CACP+F,EAAG,IACH5F,QAAS,GAEX8B,QAAS,CACP8D,EAAG,MACH5F,QAAS,IAGPwK,GAAQnK,YAAH,4GAQLoK,GAAoB3J,YAAOC,IAAO2J,KAAd5J,CAAH,wDAGjB6J,GAAW7J,YAAOgC,IAAPhC,CAAH,8HAMR8J,GAAe9J,IAAOoE,IAAV,+DAIZ2F,GAAU/J,YAAOC,IAAOC,IAAdF,CAAH,qKAMPoB,GAAQpB,IAAOuB,GAAV,6GAMLyI,GAAiBhK,YAAOC,IAAOC,IAAdF,CAAH,sFACIoB,IAIlBqE,GAAOzF,IAAOmC,GAAV,uFAKJ8H,GAAWjK,IAAO4B,GAAV,0EAIRsI,GAAelK,YAAOiK,GAAPjK,CAAH,mDAGZmK,GAAanK,IAAO6F,EAAV,iDAGVuE,GAAkBpK,IAAOE,IAAV,uTAK+C,SAAAuC,GAAK,OAAIA,EAAMuC,QAAU,EAAG,KAO1Fe,GAAc/F,IAAO6F,EAAV,sHAMXwE,GAAgBrK,YAAOC,IAAOC,IAAdF,CAAH,0OAiBbsK,IAHgBtK,IAAO6F,EAAV,iDAGQ7F,IAAOE,IAAV,6NAIqC,SAAAuC,GAAK,OAAIA,EAAMuC,QAAU,EAAG,MAKnFuF,GAAgBvK,IAAOoE,IAAV,4FAKboG,GAAqBxK,YAAOuK,GAAPvK,CAAH,yFACT0J,IAGTe,GAAyBzK,IAAOoE,IAAV,kHAMtBsG,GAAyB1K,YAAOC,IAAOsF,KAAdvF,CAAH,uDA4Rb2K,I,GAAAA,gBAzQf,SAAqBlI,GACnB,IADiC,EAEDmE,IAAM9D,SAAiB,IAFtB,mBAE1B8H,EAF0B,KAEhBC,EAFgB,OAGejE,IAAM9D,UAAkB,GAHvC,mBAG1BgI,EAH0B,KAGRC,EAHQ,OAImBnE,IAAM9D,UAAkB,GAJ3C,mBAI1BkI,EAJ0B,KAINC,EAJM,OAKWrE,IAAM9D,UAAkB,GALnC,mBAK1BoI,EAL0B,KAKVC,EALU,OAM+BvE,IAAM9D,cAAwCsI,GAN7E,mBAM1BC,EAN0B,KAMAC,EANA,OAOuB1E,IAAM9D,UAAkB,GAP/C,mBAO1ByI,EAP0B,KAOJC,EAPI,OAQ2B5E,IAAM9D,UAAkB,GARnD,mBAQ1B2I,EAR0B,KAQFC,EARE,OASmB9E,IAAM9D,UAAkB,GAT3C,mBAS1B6I,EAT0B,KASNC,EATM,OAUmBhF,IAAM9D,SAAoB,CAAC+I,SAAU,EAAGC,SATtE,IADW,mBAU1BC,EAV0B,KAUNC,EAVM,OAWiBpF,IAAM9D,cAAwCsI,GAX/D,mBAW1Ba,EAX0B,KAWPC,EAXO,KAY3BjJ,EAAYR,EAAMS,WAAWiJ,MAAK,SAAAC,GAAC,OAAIA,EAAEvI,GAAGwI,aAAe5J,EAAMzF,MAAMsP,OAAOzI,MAmFpF,OAlEA+C,IAAMa,WAAU,WACG,KAAbmD,GACFO,GAAkB,GAClBF,GAAsB,GAEtB1H,YAAW,WACTwH,GAAoB,KACnB,OAEHA,GAAoB,GAEpBxH,YAAW,WACT0H,GAAsB,KACrB,IAEH1H,YAAW,WACT4H,GAAkB,KACjB,QAEJ,CAACP,IAEJhE,IAAMa,WAAU,WAGT4D,GAUHG,GAAwB,GAExBjI,YAAW,WACTmI,GAA0B,KACzB,IAEHnI,YAAW,WACTqI,GAAsB,KACrB,OAhBHA,GAAsB,GACtBF,GAA0B,GAE1BnI,YAAW,WACTiI,GAAwB,KACvB,QAaJ,CAACH,IAEJzE,IAAMa,WAAU,WAEVsE,EAAmBF,QAAU,IAC/B,IAAIU,MAAJ,iBAAoBR,EAAmBF,QAAvC,SAAsDW,OAEtDjJ,YAAW,WACTyI,EAAsB,CAACH,QAASE,EAAmBF,QAAU,EAAGC,SAAUC,EAAmBF,YAE5F,MAG8B,IAA/BE,EAAmBF,UACrB,IAAIU,MAAJ,qBAA+BC,OAE/BR,EAAsB,CAACH,SAAU,EAAGC,SAxFlB,IA0FlBI,EAAqB,CAAElI,KAAM,EAAGyI,KAAM,QAEvC,CAACV,IAGF,eAAC9L,EAAA,EAAOC,IAAR,CAAYnB,QAAQ,UAAUiC,QAAQ,UAAU/B,KAAK,OAArD,UACE,cAAC0K,GAAD,CAAmB9I,SAAUsI,GAA7B,SACE,cAACU,GAAD,CAAU1G,GAAE,IAAZ,SACE,cAAC2G,GAAD,CAAcxF,QAAQ,MAAMC,MAAM,6BAA6BC,WAAW,+BAA+BC,QAAQ,cAAcC,SAAS,WAAxI,SACE,sBAAMC,EAAE,uhBAAuhBC,KAAK,uBAI1iB,cAAC,GAAD,CAAQnD,MAAOwB,EAAUc,OACzB,cAACgG,GAAD,CAASlJ,SAAUuI,GAAnB,SACE,cAACnJ,EAAA,EAAOC,IAAR,CAAYW,SAAUwI,GAAtB,SACGpG,EAAUe,KAAKC,KAAI,SAACC,GACnB,OAAO,eAAC8F,GAAD,CAAsCnJ,SAAU2E,GAAhD,WACa,KAAhBtB,EAAIwI,SAAkC,KAAhBxI,EAAIyI,SAAmBzI,EAAI0I,WAAa1I,EAAI2I,YAClE,eAAC,GAAD,WACG3I,EAAIwI,QACJxI,EAAIyI,SAAW,eAAC,IAAM/L,SAAP,gBAAmBsD,EAAIyI,QAAvB,UAQpB,eAAC,GAAD,WACCzI,EAAIkE,YAAYnE,KAAI,SAACoE,EAAYyE,GAChC,OAAO,eAAC7C,GAAD,WACL,eAAC,IAAMrJ,SAAP,WAAiByH,EAAWD,YAA5B,OACCC,EAAWC,UAAUrE,KAAI,SAACsE,EAAUwE,GACnC,OAAO,eAAC,IAAMnM,SAAP,WACJmM,EAAgB,GAAK,cAAC,IAAMnM,SAAP,gBACrB2H,EAASxE,KACTsE,EAAWsE,SAAW,eAAC,IAAM/L,SAAP,gBAAmByH,EAAWsE,QAA9B,OACtBpE,EAASyE,KAAO,eAAC,IAAMpM,SAAP,iBAAmB,cAACuJ,GAAD,CAAY1B,KAAK,IAAIrF,QAAS,SAACC,GAA0BA,EAAEC,iBAAkBuH,EAAYtC,EAASyE,MAAlG,SAA4G,cAAC,GAAD,oBAAuB9I,EAAIL,GAA3B,YAAiCwE,EAAWxE,OAA3K,UAJZ,mBAAiC0E,EAAS1E,UAH9C,qBAA6BiJ,OAYrC5I,EAAI+I,QACH,eAAC/C,GAAD,WACGhG,EAAI+I,OADP,YAAkB,UAInB/I,EAAIgJ,SACH,cAAChD,GAAD,UACGhG,EAAIgJ,SADW,aApBpB,kBAAsBhJ,EAAIL,OAZrB,cAA4BK,EAAIL,YA0C7C,cAAC,GAAD,CAASmB,QAAS8F,EAAlB,SACE,eAACV,GAAD,CAAiBpF,QAASgG,EAA1B,UACE,cAAC,GAAD,CAAavC,KAAK,IAAIrF,QAAS,SAACC,GAA0BA,EAAEC,iBAAkBuH,EAAY,KAA1F,SACE,cAAC,GAAD,CAAO7F,QAASkG,MAElB,cAACb,GAAD,UACE,wBAAQ8C,IAAKvC,EAAUwC,YAAY,IAAI3L,MAAM,QAAQ4L,MAAM,2FAA2FC,iBAAe,WAK3K,cAAC,GAAD,CAAStI,QAASuG,EAAlB,SACE,cAAC,UAAD,CAAQgC,eAAe,EAAMC,cAAc,EAAMC,eAAe,EAAhE,SACG,YAAe,IAAZC,EAAW,EAAXA,KACIC,EAAanK,KAAKoK,IAAKF,EAAK1O,OAAU,GAAK0O,EAAK7I,MAAS,IAE/D,OACE,eAACyF,GAAD,CAAoBtF,QAASyG,EAA7B,UACE,cAAC,GAAD,CAAahD,KAAK,IAAIrF,QAAS,SAACC,GAA0BA,EAAEC,iBAAkBgI,OAA4BF,GAAYY,EAAsB,CAACH,SAAU,EAAGC,SAvKlJ,KAuKR,SACE,cAAC,GAAD,CAAO9G,QAAS2G,MAGlB,cAAC,wBAAD,CAGEkC,eAAiCzC,IAAtBa,EACX7M,UAAkC,OAAxBiM,QAAwB,IAAxBA,OAAA,EAAAA,EAA0BrH,OAA1B,OAAkCqH,QAAlC,IAAkCA,OAAlC,EAAkCA,EAA0BoB,OAAS,EAC/EqB,OAAQ,CACN,CAAC,UAAW,GACZ,CAAC,UAAW,KACZ,CAAC,UAAW,KACZ,CAAC,UAAW,KACZ,CAAC,UAAW,MAEdJ,KAAMC,EACNI,WAAW,UACXC,YAAa,GAdf,SAgBG,YAAwB,IAArBC,EAAoB,EAApBA,cACF,IAAKhC,IAAqD,IAAhCF,EAAmBF,QAC3C,OACE,cAACrB,GAAD,CAAoB/F,QAAQ,YAAYrB,QAAS,SAACC,GAA0BA,EAAEC,iBAAkB0I,EAAsB,CAACH,QA9LvH,EA8L+IC,SA9L/I,KA8LA,SACE,sBAAM/K,EAAE,MAAM+D,EAAE,KAAKF,KAAK,eAAesJ,WAAW,SAApD,qBAON,GAAInC,EAAmBF,SAAW,EAIhC,OA1ME,IA0MEE,EAAmBF,QAEnB,cAACpB,GAAD,CAAwBhG,QAAQ,YAAhC,SACE,cAACiG,GAAD,CAAwB3J,EAAE,MAAM+D,EAAE,KAAKF,KAAK,eAAesJ,WAAW,SAAtE,SACGnC,EAAmBF,YAMtB,eAAC,IAAMjL,SAAP,WACE,cAAC6J,GAAD,CAAwBhG,QAAQ,YAAhC,SACE,cAACiG,GAAD,CAAwB3J,EAAE,MAAM+D,EAAE,KAAKF,KAAK,eAAesJ,WAAW,SAASrN,SAAU4I,GAAzF,SACGsC,EAAmBD,aAGxB,cAACrB,GAAD,CAAwBhG,QAAQ,YAAhC,SACE,cAACiG,GAAD,CAAwB3J,EAAE,MAAM+D,EAAE,KAAKF,KAAK,eAAesJ,WAAW,SAASrN,SAAU2I,GAAzF,SACGuC,EAAmBF,eAQlC,GAAIoC,GAAiB5C,EAA0B,CAC7C,IAAM8C,EAAkB3K,KAAKC,OAAQ4H,EAAyBrH,KAAOqH,EAAyBoB,KAAQwB,GAAiB5C,EAAyBoB,MAC1IQ,EAAS5B,EAAyBrH,KAAOmK,EACzC1B,EAAOwB,GAAkBhB,EAAS,GAAK5B,EAAyBoB,KAChE2B,EAAU5K,KAAKC,MAAOgJ,EAAO,KAAQ,IACrC4B,EAAU5B,EAAO,GAEvB,OACE,gCACGV,EAAmBF,QACpB,8BAAMoB,IACN,wCAASmB,EAAQ/B,WAAWiC,SAAS,EAAG,KAAxC,YAAgDD,EAAQhC,WAAWiC,SAAS,EAAG,WAKrF,OACE,cAAC/D,GAAD,CAAe9F,QAAQ,YAAvB,SACE,sBAAM1D,EAAE,IAAI+D,EAAE,KAAKF,KAAK,eAAxB,0BA1EDpB,KAAKE,SAAS2I,0B,SC3Y/BkC,G,OAASC,GAAa,CAC1BC,UAAW,WACXC,QAAS,aACTC,WAAY,KACZC,QAAQ,IAID,SAAeC,KAAtB,gC,8CAAO,sBAAAhJ,EAAA,uhBA4BM0I,GAAOO,MA5Bb,mdA6BNvR,MAAK,SAACwR,GACL,OAAOA,KAER3Q,OAAM,SAACC,GACN,MAAM,IAAI2Q,MAAJ,yBAA4B3Q,OAjC7B,oF,sBCjCT,IAAM0B,GAAYC,IAAOE,IAAV,6GA+CA+O,I,GAAAA,GAxCf,WAAgB,IAAD,EACmBnM,mBAAmC,IADtD,mBACNoM,EADM,KACIC,EADJ,KAEPC,EAAcF,EAASvL,OAAS,EAYtC,OAVAiD,IAAMa,WAAU,YACC,uCAAG,4BAAA5B,EAAA,sEACSwJ,KADT,OACVnM,EADU,OAGhBiM,EAAYjM,GAHI,2CAAH,qDAMfoM,KACC,CAACH,IAGF,cAAC,GAAD,UACE,cAAC,IAAD,UACE,cAAC,IAAD,CAAOI,OAAQ,gBAAGzS,EAAH,EAAGA,SAAH,OACb,eAAC0S,EAAA,EAAD,CAAiBC,iBAAiB,EAAlC,WACIL,GACA,cAAC,GAAD,IAEDA,GACC,eAAC,IAAD,CAAQtS,SAAUA,EAAlB,UACE,cAAC,IAAD,CAAO4S,OAAK,EAACC,KAAK,OAAlB,SACE,cAAC,GAAD,CAAazM,WAAYgM,KADE,eAG7B,cAAC,IAAD,CAAOQ,OAAK,EAACC,KAAK,IAAlB,SACE,cAAC,GAAD,CAAazM,WAAYgM,KADD,eAG1B,cAAC,IAAD,CAAOS,KAAK,IAAZ,8BAP+B7S,EAAS8S,qBCjClDjQ,GAAcC,YAAH,k3BAyCjBiQ,IAASN,OACP,eAAC,IAAMO,WAAP,WACE,cAAC,GAAD,IACA,cAAC,GAAD,OAEFC,SAASC,eAAe,Sd7BnB,SAAkB7S,GACvB,GAA6C,kBAAmBC,UAAW,CAGzE,GADkB,IAAI6S,IAAIC,GAAwBrT,OAAOC,SAAS2L,MACpD0H,SAAWtT,OAAOC,SAASqT,OAIvC,OAGFtT,OAAOuT,iBAAiB,QAAQ,WAC9B,IAAMlT,EAAK,UAAMgT,GAAN,sBAEPvT,IAyEV,SAAiCO,EAAeC,GAE9C2R,MAAM5R,EAAO,CACXmT,QAAS,CAAE,iBAAkB,YAE5B9S,MAAK,SAACwR,GAEL,IAAMuB,EAAcvB,EAASsB,QAAQE,IAAI,gBAEnB,MAApBxB,EAASyB,QACO,MAAfF,IAA8D,IAAvCA,EAAYtI,QAAQ,cAG5C5K,UAAUC,cAAcoT,MAAMlT,MAAK,SAACC,GAClCA,EAAakT,aAAanT,MAAK,WAC7BV,OAAOC,SAAS6T,eAKpB1T,EAAgBC,EAAOC,MAG1BiB,OAAM,WACLJ,QAAQC,IAAI,oEA/FV2S,CAAwB1T,EAAOC,GAI/BC,UAAUC,cAAcoT,MAAMlT,MAAK,WACjCS,QAAQC,IACN,+GAMJhB,EAAgBC,EAAOC,OcSS0T,GAKxCvS,M","file":"static/js/main.7d11fc4d.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n // CROSS to update application on startup load\n registration.update();\n\n // CROSS create interval to update every 5 minutes\n // setInterval(() => {\n // registration.update();\n // console.debug('Checked for update...');\n // }, 1000 * 60 * 5); // <--- this will update your application after 5 minutes.\n\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import styled, { keyframes, css, createGlobalStyle } from 'styled-components';\nimport { motion } from 'framer-motion';\nimport React from 'react';\n\nconst motionBox = {\n initial: {\n height: '100vh'\n },\n exit: {\n height: 0,\n opacity: 0,\n transition: {\n duration: 0.8,\n ease: [0.87, 0, 0.13, 1]\n }\n }\n};\nconst outer = keyframes`\n 50% {\n transform: translateY(0);\n }\n 25%,\n 75% {\n transform: translateY(4px);\n }\n`;\nconst body = keyframes`\n 50% {\n transform: rotate(16deg);\n }\n 25%,\n 75% {\n transform: rotate(24deg);\n }\n`;\nconst armLeg = keyframes`\n 50% {\n transform: rotate(var(--r-to));\n }\n`;\nconst armBefore = keyframes`\n 30%,\n 70% {\n transform: rotate(var(--r-to));\n }\n`;\nconst GlobalStyle = createGlobalStyle`\n body {\n height: calc(100% - 40px);\n }\n`;\nconst bodyPart = css`\n content: '';\n width: var(--w, 11px);\n height: 4px;\n top: var(--t, 0);\n left: var(--l, 2px);\n border-radius: 2px;\n transform-origin: 2px 2px;\n position: absolute;\n background: var(--c, var(--color));\n transform: rotate(var(--r, 0deg));\n animation: var(--name, ${armLeg}) var(--duration) linear infinite;\n`;\nconst Container = styled(motion.div)`\n --color: rgba(255, 255, 255, .3);\n --duration: .6s;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n`;\nconst Outer = styled.div`\n animation: ${outer} var(--duration) linear infinite;\n`;\nconst Body = styled.div`\n background: var(--color);\n height: 15px;\n width: 8px;\n border-radius: 4px;\n transform-origin: 4px 11px;\n position: relative;\n transform: rotate(32deg);\n animation: ${body} var(--duration) linear infinite;\n\n &:before {\n content: '';\n width: 8px;\n height: 8px;\n border-radius: 4px;\n bottom: 16px;\n left: 0;\n position: absolute;\n background: var(--color);\n }\n`;\nconst Arm = styled.div`\n ${bodyPart}\n\n &:before {\n --l: 7px;\n --name: ${armBefore};\n ${bodyPart}\n }\n`;\nconst Leg = styled.div`\n --w: 12px;\n --t: 11px;\n ${bodyPart}\n\n &:before {\n --t: 0;\n --l: 8px;\n ${bodyPart}\n }\n`;\nconst ArmFront = styled(Arm)`\n --r: 24deg;\n --r-to: 164deg;\n\n &:before {\n --r: -48deg;\n --r-to: -36deg;\n }\n`;\nconst ArmBehind = styled(Arm)`\n --r: 164deg;\n --r-to: 24deg;\n\n &:before {\n --r: -36deg;\n --r-to: -48deg;\n }\n`;\nconst LegFront = styled(Leg)`\n --r: 10deg;\n --r-to: 108deg;\n\n &:before {\n --r: 18deg;\n --r-to: 76deg;\n }\n`;\nconst LegBehind = styled(Leg)`\n --r: 108deg;\n --r-to: 10deg;\n --c: none;\n\n &:before {\n --c: var(--color);\n --r: 76deg;\n --r-to: 18deg;\n }\n\n &:after {\n content: '';\n top: 0;\n right: 0;\n height: 4px;\n width: 6px;\n clip-path: polygon(2px 0, 6px 0, 6px 4px, 0 4px);\n border-radius: 0 2px 2px 0;\n position: absolute;\n background: var(--color);\n }\n`;\n\nfunction Loading() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Loading;","import styled from 'styled-components';\nimport { motion } from 'framer-motion';\n\nconst motionIn = {\n duration: 1,\n ease: [0.6, -0.05, 0.01, 0.99]\n};\nconst motionOut = {\n duration: 0.2\n};\nconst motionTitle = {\n initial: {\n x: -40,\n opacity: 0 \n },\n animate: {\n x: 0,\n opacity: 1,\n transition: {\n delay: 0.1,\n ...motionIn\n }\n },\n exit: {\n x: -20,\n opacity: 0,\n transition: {\n ...motionOut\n }\n }\n};\nconst Head = styled(motion.header)`\n padding: 0 0 20px 0;\n`;\nconst Title = styled.h1`\n font-weight: normal;\n font-size: 40px;\n line-height: 40px;\n margin: 0;\n`;\nconst Teaser = styled.h2`\n font-weight: normal;\n font-size: 16px;\n line-height: 16px;\n margin: 5px 0 0 0;\n`;\n\ntype HeaderProps = {\n title: string,\n teaser?: string\n}\n\nfunction Header({ title, teaser }: HeaderProps) {\n return (\n \n {title}\n {teaser && {teaser}}\n \n );\n}\n\nexport default Header;","import React, { useState } from 'react';\nimport styled, { css, keyframes } from 'styled-components';\nimport { Link, useHistory } from 'react-router-dom';\n\nimport * as crossService from '../services/cross';\n\ntype RandomizeType = {\n isRandomizing: boolean;\n};\n\nconst spin = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(1080deg);\n }\n`;\nconst Container = styled.li`\n background-color: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n overflow: hidden;\n position: relative;\n z-index: 0;\n height: 100%\n padding: 20px;\n\n &:before {\n content: '';\n transition: transform .60s ease-out;\n position: absolute;\n top: -35px;\n right: -35px;\n background-color: #57687F;\n border-radius: 40%;\n transform: scale(1);\n transform-origin: 50% 50%;\n width: 50px;\n height: 50px;\n z-index: -1;\n }\n\n &:hover {\n &:before {\n transform: scale(35);\n }\n }\n`;\nconst Section = styled.section`\n height: 100%;\n`;\nconst LinkItem = styled(Link)`\n color: #FFFFFF;\n text-decoration: none;\n display: block;\n padding: 20px;\n height: calc(100% - 40px);\n`;\nconst Headline = styled.h1`\n font-weight: 700;\n font-size: 22px;\n margin: 0 0 10px 0;\n`;\nconst ExerciseList = styled.ol`\n list-style-type: circle;\n padding: 0;\n margin: 0;\n`;\nconst ExerciseListItem = styled.li`\n margin-left: 1rem;\n`;\nconst Go = styled.div`\n background-color: #57687F;\n border-radius: 40%;\n position: absolute;\n width: 50px;\n height: 50px;\n top: -25px;\n right: -25px;\n`;\nconst Plus = styled.div`\n position: absolute;\n bottom: 2px;\n left: 8px;\n font-size: 21px;\n`;\nconst animation = css`\n animation: ${spin} 0.9s ease-in-out both;\n`\nconst Random = styled.div`\n font-size: 75px;\n font-weight: 700;\n text-align: center;\n ${props => props.isRandomizing ? animation : ''};\n`;\n\ninterface IOwnProps {\n programme?: crossService.Programme;\n programmes?: crossService.Programme[];\n}\n\ntype Props = IOwnProps;\n\nfunction WorkoutListItem(props: Props) {\n const history = useHistory();\n const [randomizing, setRandomizing] = useState(false);\n\n const findRandom = (e: React.MouseEvent) => {\n e.preventDefault();\n\n setRandomizing(true);\n\n setTimeout(() => {\n const programme = props.programmes![Math.floor(Math.random()*props.programmes!.length)];\n\n history.push(`/${programme.id}`);\n }, 1000);\n };\n\n if ((props.programme && props.programmes) || (!props.programme && !props.programmes)) return null;\n\n return (\n \n
\n {!props.programme &&\n findRandom(e)}>\n Random\n ?\n \n +\n \n \n }\n {props.programme &&\n \n {props.programme.name}\n \n {props.programme.sets && props.programme.sets.map((set) => {\n return {set.name}\n })}\n \n \n +\n \n \n }\n
\n
\n );\n}\n\nexport default WorkoutListItem;","import styled from 'styled-components';\r\n\r\nconst Icon = styled.svg`\r\n width: 30px;\r\n height: 30px;\r\n vertical-align: bottom;\r\n`;\r\n\r\nfunction Filter() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Filter;","import React from 'react';\r\nimport styled, { createGlobalStyle } from 'styled-components';\r\n\r\ntype VisibleType = {\r\n visible: boolean;\r\n};\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n body {\r\n overflow: hidden;\r\n }\r\n`;\r\nconst OverlayContainer = styled.div`\r\n display: ${props => props.visible ? 'block': 'none'};\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n background: rgb(28,60,92);\r\n background: linear-gradient(180deg, rgba(28,60,92,0.9) 0%, rgba(22,26,37,0.9) 100%);\r\n background-repeat: no-repeat;\r\n background-attachment: fixed;\r\n height: 100vh;\r\n width: 100vw;\r\n`;\r\nconst OverlayContent = styled.div`\r\n margin: auto;\r\n max-width: 1240px;\r\n position: relative;\r\n height: 100%;\r\n`;\r\n\r\ninterface IOwnProps {\r\n visible: boolean;\r\n children: React.ReactNode;\r\n};\r\n\r\ntype Props = IOwnProps;\r\n\r\nfunction Overlay(props: Props) {\r\n return (\r\n \r\n {props.visible && }\r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Overlay;","import styled from 'styled-components';\n\ntype VisibleType = {\n visible: boolean;\n};\n\nconst Icon = styled.svg`\nwidth: 30px;\nheight: 30px;\ndisplay: ${props => props.visible ? 'block': 'none'};\n`;\n\ninterface IOwnProps {\n visible: boolean;\n};\n\ntype Props = IOwnProps;\n\nfunction Close(props: Props) {\n return (\n \n \n \n );\n}\n\nexport default Close;","import styled from 'styled-components';\r\n\r\nconst Button = styled.button`\r\n display: block;\r\n background: rgb(28,60,92);\r\n background: linear-gradient(180deg, rgba(28,60,92,1) 0%, rgba(22,26,37,1) 100%);\r\n background-repeat: no-repeat;\r\n font-family: 'Montserrat', sans-serif;\r\n font-size: 14px;\r\n line-height: 14px;\r\n color: #FFFFFF;\r\n border: 1px solid #FFFFFF;\r\n border-radius: 3px;\r\n height: 40px;\r\n width: 100%;\r\n cursor: pointer;\r\n`;\r\n\r\ninterface IOwnProps {\r\n text: string;\r\n onClick: (event: React.MouseEvent) => void;\r\n};\r\n\r\ntype Props = IOwnProps;\r\n\r\nfunction Overlay(props: Props) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default Overlay;","import React from 'react';\nimport styled from 'styled-components';\nimport { motion } from 'framer-motion';\n\nimport Header from './Header';\nimport WorkoutListItem from './WorkoutListItem';\nimport Filter from './Filter';\nimport Overlay from './Overlay';\nimport Close from './Close';\nimport Button from './Button';\n\nimport * as crossService from '../services/cross';\n\ntype VisibleType = {\n visible: boolean;\n};\n\nconst motionIn = {\n duration: 0.7,\n ease: [0.6, -0.05, 0.01, 0.99]\n};\nconst motionOut = {\n duration: 0.2\n};\nconst motionList = {\n initial: {\n y: -20,\n opacity: 0\n },\n animate: {\n y: 0,\n opacity: 1,\n delay: 0.5,\n transition: {\n ...motionIn\n }\n },\n exit: {\n y: -20,\n opacity: 0,\n transition: {\n delay: 0.1,\n ...motionOut\n }\n }\n};\nconst List = styled(motion.ul)`\n display: grid;\n grid-template-columns: repeat(1, 1fr);\n grid-gap: 20px;\n list-style: none;\n padding: 0;\n margin: 0;\n\n @media (min-width: 768px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (min-width: 992px) {\n grid-template-columns: repeat(3, 1fr);\n }\n`;\nconst ProgrammesFilterButtonContainer = styled.div`\n margin-bottom: 20px;\n text-align: right;\n`;\nconst ProgrammesFilterButton = styled.a`\n display: inline-block;\n color: #FFFFFF;\n margin: 0 0 0 auto;\n height: 30px;\n`;\nconst ProgrammesFilterContainer = styled.div`\n position: absolute;\n top: ${props => props.visible ? '100px': '-100%'};\n left: 50%;\n width: calc(100% - 40px);\n height calc(100vh - 170px);\n transform: translateX(-50%);\n transition: all 0.3s ease;\n display: flex;\n flex-direction: column;\n\n @media (orientation: landscape) and (max-width: 992px) {\n top: ${props => props.visible ? '101px': '-100%'};\n height calc(100vh - 161px);\n }\n`;\nconst PlayerClose = styled.a`\n display: inline-block;\n color: #FFFFFF;\n margin: 0 0 20px auto;\n height: 30px;\n`;\nconst ProgrammesFilterWrapper = styled.div`\n background-color: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n height: 100%;\n`;\nconst ProgrammesFilterScrollable = styled.div`\n overflow-y: auto;\n height: calc(100% - 81px);\n\n &::-webkit-scrollbar {\n width: 20px;\n }\n \n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n \n &::-webkit-scrollbar-thumb {\n background-color: #8E9EAE;\n border-radius: 20px;\n border: 6px solid transparent;\n background-clip: content-box;\n }\n \n &::-webkit-scrollbar-thumb:hover {\n background-color: #FFFFFF;\n }\n`;\nconst ProgrammesFilterButtons = styled.div`\n padding: 20px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n display: grid;\n grid-template-columns: calc(33.33% - 13.33px) calc(33.33% - 13.33px) calc(33.33% - 13.33px);\n grid-gap: 20px;\n`;\nconst FilterList = styled(motion.ul)`\n list-style: none;\n padding: 20px 0 20px 20px;\n margin: 0;\n`;\nconst FilterListItem = styled.li`\n & + & {\n margin-top: 15px;\n }\n`;\nconst FilterLabel = styled.label`\n display: flex;\n line-height: 25px;\n`;\nconst CheckBox = styled.input.attrs({ type: 'checkbox' })`\n -webkit-appearance: none;\n appearance: none;\n background-color: transparent;\n margin: 0 10px 0 0;\n color: currentColor;\n width: 25px;\n height: 25px;\n border: 2px solid currentColor;\n border-radius: 3px;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n\n &::before {\n content: '';\n width: 12px;\n height: 12px;\n clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);\n transform: scale(0);\n transform-origin: bottom left;\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em currentColor;\n background-color: currentColor;\n }\n\n &:checked::before {\n transform: scale(1);\n }\n`;\n\ninterface IOwnProps {\n programmes: crossService.Programme[];\n}\n\ntype Props = IOwnProps;\n\nfunction WorkoutList(props: Props) {\n const [showFilter, setShowFilter] = React.useState(false);\n const [showFilterOverlay, setShowFilterOverlay] = React.useState(false);\n const [showFilterContainer, setShowFilterContainer] = React.useState(false);\n const [showFilterClose, setShowFilterClose] = React.useState(false);\n const [filterTemp, setFilterTemp] = React.useState([]);\n const [filter, setFilter] = React.useState([]);\n\n React.useEffect(() => {\n if (!showFilter) {\n setShowFilterClose(false);\n setShowFilterContainer(false);\n\n setTimeout(() => {\n setShowFilterOverlay(false);\n }, 300);\n } else {\n setShowFilterOverlay(true);\n setFilterTemp(filter);\n\n setTimeout(() => {\n setShowFilterContainer(true);\n }, 10);\n\n setTimeout(() => {\n setShowFilterClose(true);\n }, 310);\n }\n }, [showFilter]);\n\n const handleFilterCheck = (e: React.ChangeEvent) => {\n var updatedList = [...filterTemp];\n\n if (e.target.checked) {\n updatedList = [...filterTemp, e.target.value];\n } else {\n updatedList.splice(filterTemp.indexOf(e.target.value), 1);\n }\n\n setFilterTemp(updatedList);\n };\n\n const saveFilter = () => {\n setFilter(filterTemp);\n setFilterTemp([]);\n };\n\n const restoreFilter = () => {\n setFilterTemp([]);\n };\n\n const resetFilter = () => {\n setFilter([]);\n };\n \n const programmes = filter.length > 0 ? props.programmes.filter((programme) => filter.every((f) => programme.sets.flatMap((set) => set.repetitions.flatMap((repetition) => repetition.exercises.flatMap((exercise) => exercise.name))).includes(f))) : props.programmes;\n\n return (\n \n \n
\n \n { e.preventDefault(); setShowFilter(true); }}>\n \n \n \n {programmes.length === 0 &&\n Ingen programmer\n }\n {programmes.length > 0 &&\n \n \n {programmes.map((programme) => {\n return \n })}\n \n }\n \n\n \n \n { e.preventDefault(); setShowFilter(false); } }>\n \n \n \n \n \n {[...Array.from(new Set(props.programmes.flatMap((programme) => programme.sets.flatMap((set) => set.repetitions.flatMap((repetition) => repetition.exercises.flatMap((exercise) => exercise.name))))))].sort().map((exerciseName) => {\n return (\n \n \n {exerciseName}\n \n );\n })}\n \n \n \n