{"version":3,"sources":["util/commonUtil.ts","components/Public/About.tsx","types/types.ts","api/apiSelector.ts","components/Common/ApiStatusWidget.tsx","global/actionTypes.ts","user/userActionCreators.ts","user/userSelector.ts","components/Common/AuthWidget.tsx","components/Public/LoginPage.tsx","components/Navigation/Nav.tsx","components/Navigation/NavItemLink.tsx","components/Navigation/NavTitle.tsx","players/playerActionCreators.ts","players/playerSelector.ts","components/Common/AdminRequired.tsx","components/Common/useJassereiFormStyles.ts","components/Common/JasstafelContainer.tsx","components/Player/ProfileEntry.tsx","components/Player/PlayerProfile.tsx","components/Common/PlayerWidget.tsx","components/Player/PlayerSessions.tsx","components/Player/PlayerDetails.tsx","components/Player/Players.tsx","components/Common/PrivateRoute.tsx","clubdetails/clubdetailsSelector.ts","api/apiActionCreator.ts","api/apiReducer.ts","games/gamesSelector.ts","games/gamesReducer.ts","api/schieberApi.ts","games/gamesActionCreators.ts","games/gamesSagas.ts","players/playerReducer.ts","api/playersApi.ts","players/playerSagas.ts","seasons/seasonReducer.ts","seasons/seasonActionCreators.ts","api/seasonsApi.ts","seasons/seasonSagas.ts","user/userReducer.ts","api/authApi.ts","user/userSaga.ts","api/adminApi.ts","admin/adminActionCreators.ts","admin/adminSaga.ts","admin/adminReducer.ts","clubs/clubsReducer.ts","clubdetails/clubdetailsReducer.ts","clubdetails/clubdetailsActionCreators.ts","api/clubdetailsApi.ts","clubdetails/clubdetailsSaga.ts","api/clubsApi.ts","clubs/clubsActionCreators.ts","clubs/clubsSaga.ts","global/Store.ts","util/apiUtil.ts","components/Common/Image.tsx","components/Public/Welcome.tsx","components/Navigation/NavItems.tsx","components/Public/UserWidget.tsx","components/Spiel/SchiebersTeamCell.tsx","components/Spiel/Schiebers.tsx","components/Spiel/SchieberDraftApproval.tsx","components/Spiel/SchieberDraftRow.tsx","components/Spiel/SchieberDraftsTable.tsx","components/Spiel/Timeline/SchieberTimelineHeader.tsx","components/Assets/Chruetz.tsx","components/Assets/Egge.tsx","components/Assets/Herz.tsx","components/Assets/Schufle.tsx","components/Assets/VarianteIcon.tsx","components/Spiel/Timeline/SchieberTimelineWeis2.tsx","components/Spiel/Timeline/SchieberTimelineHand2.tsx","components/Spiel/Timeline/SchieberTimelineSummary2.tsx","components/Spiel/Timeline/SchieberTimelineTeams2.tsx","components/Spiel/Timeline/SchieberTimeline2.tsx","components/Common/consts.ts","components/Assets/FuenferBuendel.tsx","components/Common/JasstafelNotation.tsx","components/Common/JasstafelZContainer.tsx","components/Spiel/SchieberStrichliJassTafel.tsx","components/Spiel/SchieberLineGraph2.tsx","components/Spiel/SchieberDetails.tsx","admin/adminSelector.ts","components/Admin/ManageUsers.tsx","components/Admin/CreateUser.tsx","seasons/seasonSelector.ts","components/Admin/ManageSeasons.tsx","components/Admin/CreateSeason.tsx","components/Admin/Developer.tsx","components/Admin/ReduxVisualizer.tsx","components/Admin/ReleaseNotes.tsx","components/Admin/Todo.tsx","components/Admin/Infos.tsx","components/Common/Files/resizeImage.tsx","components/Common/UploadImage.tsx","components/Admin/ManageClub.tsx","components/Admin/Admin.tsx","components/Common/Body.tsx","components/Navigation/NavToggler.tsx","components/Common/Prompter.tsx","components/Common/PromptedButton.tsx","components/Spiel/SchiebersLoader.tsx","components/Player/PlayersLoader.tsx","components/User/ChangePassword.tsx","components/User/UserDetails.tsx","components/Common/Footer.tsx","components/Common/Main.tsx","components/Spiel/Erfassen/Navigator/RegisterSchieberNavigatorTile.tsx","components/Spiel/Erfassen/CurrentRegisterWidget.tsx","games/draftSelector.ts","components/Spiel/Drafting/SchieberDraftListDraftRow.tsx","components/Spiel/Drafting/SchieberDraftListRow.tsx","components/Spiel/Drafting/SchieberDraftList.tsx","components/Spiel/Drafting/SchieberDraftsLoader.tsx","components/Spiel/Drafting/SchieberDrafting.tsx","components/Spiel/Erfassen/Navigator/RegisterSchieberPaginator.tsx","components/Spiel/Erfassen/RegisterSchieberStanding.tsx","components/Spiel/Erfassen/RegisterSchieberFooter.tsx","games/registerGameActionCreators.ts","components/Spiel/Erfassen/CancelSchieberRegister.tsx","components/Spiel/Erfassen/FinishSchieberRegister.tsx","components/Spiel/Erfassen/RegisterSchieberSummary.tsx","components/Spiel/Erfassen/RegisterSchieberMatch.tsx","components/Spiel/Erfassen/RegisterSchieberHandAsaegeAmount.tsx","components/Spiel/Erfassen/RegisterSchieberHandAsaegeFarb.tsx","components/Spiel/Erfassen/RegisterSchieberHandSchieber.tsx","components/Spiel/Erfassen/RegisterSchieberHandAsaeger.tsx","components/Spiel/Erfassen/RegisterSchieberHandAsaege.tsx","components/Spiel/Erfassen/RegisterSchieberHandWiisListItem.tsx","components/Spiel/Erfassen/RegisterSchieberHandWiisList.tsx","components/Spiel/Erfassen/RegisterSchieberHandWiise.tsx","components/Common/SelectKachel.tsx","components/Spiel/Erfassen/RegisterSchieberHandWiiser.tsx","components/Spiel/Erfassen/RegisterSchieberHand.tsx","components/Spiel/Timeline/SchieberTimelineWeis.tsx","components/Spiel/Timeline/SchieberTimelineHand.tsx","components/Spiel/Timeline/SchieberTimelineSummary.tsx","components/Spiel/Timeline/SchieberTimelineTeams.tsx","components/Spiel/Timeline/SchieberTimeline.tsx","components/Spiel/Timeline/Matchblatt.tsx","components/Spiel/Erfassen/RegisterSchieber.tsx","components/Admin/ManageUser.tsx","components/Spiel/Erfassen/NewSchieberRegister.tsx","components/Common/AuthRequired.tsx","components/Admin/ManageSeason.tsx","components/Spiel/Erfassen/RegisterSchieberStaticSwiping.tsx","components/Common/Header.tsx","components/Spiel/Erfassen/PlayerSwitch.tsx","components/Spiel/Erfassen/JSelect.tsx","components/Spiel/Erfassen/RegisterSchieberPlayerComposer.tsx","components/Spiel/Erfassen/RegisterSchieberForm.tsx","components/Spiel/Erfassen/RegisterSchieberInit.tsx","components/Spiel/Erfassen/LockSchieberRegister.tsx","components/Spiel/Erfassen/RegisterSchieberSwipingHelper.tsx","components/Admin/InitClub.tsx","components/Admin/Enter.tsx","ClubApp.tsx","components/preview/state.ts","components/preview/PreviewZ.tsx","components/Portal/ClubJoin.tsx","components/Portal/ClubCreate.tsx","components/Portal/ClubAbout.tsx","clubs/clubsSelector.ts","components/Portal/Clubs.tsx","PortalApp.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["currentSubDomain","parts","window","location","host","split","length","undefined","toLowerCase","getSubDomainUrl","sub","protocol","slice","join","getMainUrl","serializeObjectToQuerystring","obj","str","p","hasOwnProperty","push","encodeURIComponent","About","ApiStatus","selectApiStatus","state","apiState","apiStatus","selectLatestResponse","latestResponse","selectBlocked","blocked","Alert","props","elevation","variant","ApiStatusWidget","useSelector","criticalActionPending","useState","open","message","severity","setState","handleClose","e","reason","useEffect","failed","authExpired","Backdrop","style","zIndex","CircularProgress","color","Snackbar","autoHideDuration","onClose","AT","putAuthData","credentials","type","payload","putCurrentUser","user","putAuthExpired","deleteAuthData","deletePersonalData","selectUser","currentUser","AuthWidget","dispatch","useDispatch","expiration","Date","valueOf","now","className","LoginPage","useLocation","from","to","pathname","LoginPageInternal","nickname","password","submitted","handleChange","useCallback","target","name","value","handleSubmit","preventDefault","onSubmit","htmlFor","onChange","Nav","children","NavItemLink","NavTitle","putPlayers","players","putPlayerDetails","player","fetchPlayers","selectPlayers","data","selectPlayer","id","find","userId","selectPlayerTitle","playerTitle","displayName","shortName","selectTeamTitle","team","player1Id","player2Id","AdminRequired","admin","silent","useJassereiFormStyles","makeStyles","theme","root","margin","spacing","card","marginBottom","playerdropdown","width","registerTextfield","minWidth","simpleCreateTextfield","marginRight","overViewTable","marginTop","fullWidth","bold","fontWeight","jasstafel","textAlign","position","JasstafelContainer","ProfileEntry","unit","useMemo","Math","round","label","text","PlayerProfile","sessions","vorhandRatio","schieberStats","gschobe","agseit","favPartnerId","array","modeMap","Object","create","maxEl","maxCount","i","el","mode","map","s","partnerId","avgWiis","wiisTotal","reduce","c","hands","favPartner","filter","won","PlayerWidget","playerName","playerId","PlayerSessions","PlayerSessionsInternal","history","useHistory","gotoDetails","schieber","sessionId","onClick","icon","faCheck","faTimes","started","points","opponentPoints","PlayerDetails","useParams","Number","PlayerDetailsInternal","classes","stateToClipboard","json","JSON","stringify","navigator","clipboard","writeText","Button","startIcon","faArrowLeft","Paper","Players","PlayersInternal","aria-labelledby","firstName","lastName","vorhandPunktetotal","gschobePunktetotal","PrivateRoute","path","selectClubdetails","clubdetails","club","fetchFulfilled","fetchRejected","createResponseMessage","successMsg","failMsg","response","Boolean","initialState","pending","idle","apiReducer","action","loading","url","succeeded","selectCurrentUiIndex","games","currentUiIndex","selectSchiebers","allSchieberSessions","selectEditSchieber","currentSchieberSession","selectInitSchieberValid","pointsGoal","seasonId","team1","team2","selectIsGoalReached","selectTeam1GoalReached","selectTeam2GoalReached","team1totalpoints","team2totalpoints","pendingChanges","selectSchieberHand","hand","no","selectLastHand","isHandValid","team1Result","team2Result","variante","playerDragsiId","selectTeamNo","selectTeam1Title","selectTeam2Title","selectPointsByHandAndUser","currentHand","teamNo","weisReducerFn","accumulator","currentWeis","betrag","team1sumreducerFn","team1Wiis","varianteToFactor","team2sumreducerFn","team2Wiis","team1sumreducerlightFn","team2sumreducerlightFn","currentStandingWidget","initialSchieberCreator","deck","kartendeck","remarks","moment","format","teamId","initialSchieberState","changedFlagReducer","gamesReducer","attachment","multiplikator","ss","personalSchieberDrafts","handNo","playerGschobeId","team1Points","team2Points","index","prevHand","nextPlayerId","loadSchieber","fetchGet","createSchieber","fetchPost","setUiIndex","putSchiebers","schiebers","putSchieberDetails","populateInternalSchieber","putCurrentSchieber","putSchieberFromServer","putSchieberDraftFromServer","putApprovalFromServer","putSchieberDrafts","drafts","fetchSchiebers","fetchSchieberDrafts","fetchSchiebersSaga","watchFetchSchiebersSaga","fetchDraftsSaga","watchFetchDraftsSaga","watchPutAuth","fetchSchieberSaga","fetchSchieberDetailsSaga","watchFetchSchieberSaga","watchFetchSchieberDetailsSaga","saveSchieberSession","watchSaveSchieberSession","deleteSchieberSession","watchDeleteSchieberSession","saveSchieberDraft","watchSaveSchieberDraft","syncSchieberDraft","approveDraft","watchApproveDraft","approveSession","watchApproveSession","announceApproval","watchAnnounceApproval","handleSchieberAnnouncement","watchSchieberUpdateFromServer","rootGamesSaga","delay","ms","Promise","res","setTimeout","watchApiCall","takeLatest","select","session","takeEvery","put","all","playerReducer","loadPlayerDetails","fetchPlayersSaga","watchFetchPlayersSaga","fetchPlayerDetailsSaga","watchFetchPlayerDetailsSaga","rootPlayerSaga","initialSeason","active","seasonReducer","putSeasons","seasons","putSeason","season","announceNewSeason","fetchSeasons","updateSeason","fetchSeasonsSaga","watchFetchSeasonsSaga","fetchCreateSeasonSaga","watchFetchCreateSeasonSaga","fetchUpdateSeasonSaga","watchFetchUpdateSeasonSaga","addedSeason","watchAddedSeason","rootSeasonSaga","seasonName","userReducer","authenticate","changePassword","updateUser","fetchLoginSaga","watchFetchLoginSaga","fetchChangePasswordSaga","watchFetchChangePasswordSaga","fetchUpdateCurrentUserSaga","watchFetchUpdateCurrentUserSaga","rootUserSaga","result","createUser","putUsers","users","putUserDetails","announceNewUser","fetchUsersSaga","watchFetchUsersSaga","fetchUpdateUserSaga","watchFetchUpdateUserSaga","fetchCreateUserSaga","watchFetchCreateUserSaga","addedUser","watchAddedUser","rootAdminSaga","intialAdminState","adminReducer","u","clubsReducer","clubs","initialClubsState","clubdetailsReducer","putClubdetails","announceNewClub","announceClubUpdate","createClub","fetchClubdetailsSaga","watchFetchClubdetailsSaga","fetchUpdateClubdetailsSaga","watchFetchUpdateClubdetailsSaga","setClub","watchNewClub","checkbackClub","watchClubshortnameChange","watchPutClubUpdate","rootClubdetailsSaga","href","document","clubShortName","putClubs","fetchClubs","fetchClubsSaga","watchFetchClubsSaga","fetchCreateClubSaga","watchFetchCreateClubSaga","watchAuth","rootClubsSaga","authData","rootSaga","persistConfig","storage","stateReconciler","autoMergeLevel1","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createBrowserHistory","saga","createSagaMiddleware","middleWares","routerMiddleware","store","createStore","combineReducers","router","connectRouter","persistReducer","key","applyMiddleware","run","persistor","persistStore","createHeaders","userObject","getState","Authorization","token","apiCall","actionCreator","callBack","requestId","getTime","call","console","warn","queryParams","fullUrl","headers","axios","get","timeout","params","then","post","Image","React","memo","guid","baseUrl","size","src","Welcome","longName","mainImage","NavItems","hidden","click","UserWidget","logout","faUserAlt","faSignOutAlt","faSignInAlt","SchiebersTeamCell","player1","player2","Schiebers","SchiebersInternal","SchieberDraftApproval","formattedDate","date","colSpan","SchieberDraftRow","draft","createdOn","faSave","creatorId","playerId1","player1Approval","playerId2","player2Approval","playerId3","player3Approval","playerId4","player4Approval","SchieberDraftsTable","SchieberTimelineHeader","Chruetz","viewBox","height","xmlns","stroke","d","fill","Egge","strokeWidth","Herz","Schufle","mapping","v","faArrowUp","faArrowDown","VarianteIcon","m","SchieberTimelineWeis2","weis","borderLeft","borderRight","SchieberTimelineHand2","borderTop","faArrowCircleRight","textOverflow","overflow","SchieberTimelineSummary2","SchieberTimelineTeams2","paddingRight","whiteSpace","borderBottom","SchieberTimeline2","tableLayout","handwrittenfont","turn","FuenferBuendel","x1","y1","x2","y2","JasstafelNotation","bundles","bundle","Array","floor","count","rest","char","JasstafelZContainer","structureTeamResult","t","wiis","total","x","l","zwanzig","SchieberStrichliJassTafelInternal","t1p1","t1p2","t2p1","t2p2","r","t1","t2","structureResult","top","right","border","paddingLeft","borderRadius","lineHeight","fontSize","fontFamily","left","WebkitTransform","SchieberStrichliJassTafel","SchieberLineGraph2","cummulative","setCummulative","header","role","prev","current","chartType","loader","options","annotations","chartArea","vAxis","minValue","legend","Switch","checked","SchieberDetails","selectSchieber","SchieberDetailsInternal","selectUsers","ManageUsers","ManageUsersInternal","faCrown","CreateUser","setNickname","existingUser","toUpperCase","selectUserByName","validNickname","TextField","disabled","faPlus","selectSeasons","selectActiveSeasons","ManageSeasons","ManageSeasonsInternal","CreateSeason","styles","setSeasonName","existingSeason","selectSeason","validSeasonName","createSeason","Developer","Notification","requestPermission","ReduxVisualizer","ReleaseNotes","Todo","Infos","setValue","TabContext","AppBar","Tabs","event","newValue","indicatorColor","textColor","scrollButtons","aria-label","Tab","TabPanel","imageSizeToPx","UploadImage","errorMsg","setErrorMsg","selectFile","file","files","callback","Resizer","imageFileResizer","resizeImage","uri","formData","FormData","append","additionalParams","forEach","callBackFn","borderColor","padding","component","faImage","accept","mediaGuid","ManageClub","storeClub","saved","setSaved","save","fetchUpdateClubdetails","noValidate","autoComplete","clubName","contactEmail","contactName","contactLastName","contactAdress","thumbnail","Admin","tab","faInfoCircle","Body","NavToggler","data-target","data-toggle","aria-expanded","toggler","Prompter","Dialog","cancelFn","aria-describedby","DialogTitle","promptTitle","DialogContent","DialogContentText","promptText","DialogActions","hideCancel","cancelText","thirdFn","thirdText","okFn","autoFocus","okText","PromptedButton","openPrompt","setOpenPrompt","reset","mapBgColorToClass","needsPrompt","SchiebersLoader","faSync","PlayersLoader","ChangePassword","oldPassword","newPassword","change","Typography","faUserLock","UserDetails","storeUser","UserDetailsInternal","setUser","fetchUpdateUserDetails","setAvatar","avatar","String","Footer","Main","RegisterSchieberNavigatorTile","cancel","empathize","swipethize","perRow","CurrentRegisterWidget","currentStanding","faEdit","faChevronRight","selectDrafts","SchieberDraftListDraftRow","promptOpen","setPromptOpen","parse","stand1","stand2","faLongArrowAltRight","draftId","SchieberDraftListRow","expanded","setexpanded","load","shift","go","faStream","SchieberDraftList","SchieberDraftListInternal","SchieberDraftsLoader","SchieberDrafting","RegisterSchieberPaginator","goalReached","goToHand","goToSummary","faCheckCircle","faListUl","faChartLine","RegisterSchieberStanding","team1points","team2points","team1name","team2name","RegisterSchieberFooter","putRegisterSchieberFormValues","values","CancelSchieberRegister","defaultKartendeck","faTrash","FinishSchieberRegister","team1Won","approveSchieberSessionTeam2","team1GoalReached","team2GoalReached","classNames1","classNames2","display","RegisterSchieberSummary","putAttachment","float","RegisterSchieberMatch","isMatch","onInput","isKonterMatch","faSkull","RegisterSchieberHandAsaegeAmount","inputEl","useRef","focus","onPointsChanged","val","onDone","setFocus","ref","amount","onBlur","max","min","step","RegisterSchieberHandAsaegeFarb","classNames","chooseVariante","RegisterSchieberHandSchieber","schiebe","faRandom","RegisterSchieberHandAsaeger","dra","RegisterSchieberHandAsaege","focusInput","setFocusInput","selectPartner","asaegerPoints","gegnerPoints","schiebeFn","putVariante","farbe","RegisterSchieberHandWiisListItem","removeWiis","deleteAction","faDollarSign","RegisterSchieberHandWiisList","title","list","w","RegisterSchieberHandWiise","removeWiisTeam1","removeWiisTeam2","SelectKachel","submit","initNumVal","RegisterSchieberHandWiiser","player3","player4","setOpen","wiiser","setWiiser","handleWiis","setWiis","handleWiiser","RegisterSchieberHand","addwiis","wiise","SchieberTimelineWeis","SchieberTimelineHand","SchieberTimelineSummary","SchieberTimelineTeams","SchieberTimeline","Matchblatt","setVariante","RegisterSchieber","uiIndex","isLastHandValid","swiper","setSwiper","mobile","matchMedia","slideTo","spaceBetween","slidesPerView","onSwiper","onSlideChange","activeIndex","onSliderMove","threshold","matches","autoHeight","minHeight","ManageUser","ManageUserInternal","handleBoolChange","Checkbox","faList","NewSchieberRegister","hasChanges","AuthRequired","ManageSeason","ManageSeasonInternal","RegisterSchieberStaticSwiping","Header","PlayerSwitch","onPlayerChanged","setPlayer","informative","JSelect","o","goalOptions","RegisterSchieberPlayerComposer","setter","playerSetter","faLongArrowAltLeft","RegisterSchieberForm","placeholder","MenuItem","RegisterSchieberInit","part","putSchieberPlayer","LockSchieberRegister","initSchieberValid","startPlayerName","start","RegisterSchieberSwipingHelper","finito","valid","content","a","b","goToCurrent","faChevronLeft","faHandPointer","InitClub","Enter","search","auth","URLSearchParams","keys","next","ClubApp","subdomain","hiddenMenu","setHiddenMenu","toggle","faHome","alain","clubId","viola","ueli","karin","previewState","PreviewZ","game","setIndex","interval","setInterval","clearInterval","ClubJoin","faPlusCircle","ClubCreate","userName","handleClubNameChange","substring","fetchCreateClub","clubNameValid","longNameValid","sonderzeiche","match","shortNameValid","userNameValid","passwordValid","urlPreview","helperText","error","inputProps","maxLength","minLength","ClubAbout","visible","setVisible","faArrowRight","selectClubs","Clubs","webIcon","PortalApp","App","some","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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A,6EACA,gFACA,gHAIA,6BACE,oDAEF,8CACc,0DADd,4BAEM,yCAFN,eAIA,8DAC8B,kDAE9B,iGACA,uDACuB,uDADvB,gFAIA,iFACkD,IAChD,gEAIJ,oDACA,+BACE,6BACE,iEAEF,+BACE,2CADF,oEAIA,+BACE,2CADF,uCAGA,6BACE,iDAEF,+BACE,4DADF,wBAGA,2DACA,iDACiB,iDADjB,gCAGA,+BACE,8CADF,yCAGA,sHAIA,8EACA,2CACW,kDAIb,oDACA,+BACE,wCACQ,4CADR,0CAGA,yFAC0D,IACxD,0DAFF,YAIA,yDACA,+BACE,6CADF,oCAGA,6CACa,0DAEb,+BACE,0CADF,wCAGA,mEACmC,oDADnC,kCAMF,oDACA,+BACE,+BACE,iDADF,+CAGA,+BACE,oDADF,6CAGA,+BACE,wEADF,uBAGA,2GAGA,+BACE,oDADF,iCAGA,+BACE,oDADF,+DAIA,wHAIA,+BACE,2DADF,+IAKA,6CACa,+CADb,wCAKF,oDACA,+BACE,iEACkC,IAChC,qEAFF,YAE4D,IAC1D,oDAEF,6EAEE,oDAEF,uEAGF,oDACA,+BACE,+BACE,oDADF,oFAIA,+BACE,8CADF,oBAKF,oDACA,6BACE,iDAEE,8EAFF,OAEgE,IAC9D,wDAIJ,oDACA,+BACE,+BACE,4CADF,gDAEE,yCAFF,gBAIA,0EAC0C,oDAA6B,IADvE,YAIA,+BACE,mDADF,qCAGA,+BACE,2DADF,wCAGA,+BACE,6CADF,0DAKF,oDACA,+BACE,+BACE,2DADF,0DAIA,+BACE,+CADF,wCAGA,+BACE,8CADF,0CAGA,+BACE,gDADF,6CAKF,oDACA,+BACE,+BACE,8CADF,yBAC6C,IAC3C,uDAEF,+BACE,uDADF,YAC0C,oDAA8B,IADxE,OAEM,gDAEN,gDACgB,oDADhB,yCAIA,wGACsE,IACpE,mDAIJ,oDACA,+BACE,+BACE,2CADF,qBAC0C,oDAA8B,IADxE,WAEU,8CAEV,+BACE,iDADF,wBACmD,+CAEnD,+BACE,0CADF,oLAQF,oDACA,6BACE,+BACE,8CADF,sEAMF,oDACA,+BACE,+BACE,uDADF,uBAGA,+BACE,+EADF,oBAGA,+BACE,8CADF,6GAIA,+BACE,yDADF,4IAKA,6BACE,qDAEF,+BACE,0DADF,mGAIA,+BACE,gDADF,6BAGA,+BACE,sDADF,sBACuD,IACrD,6CAFF,2CAIA,+BACE,4CADF,gCAGA,+BACE,yCADF,mCACuD,IACrD,uDAEF,+BACE,+CADF,6BACuD,IACrD,8CAEF,+BACE,gDADF,uBACkD,IAChD,gDAFF,eAEqC,aC7ctC,IAAMC,GAAOtK,IAAMC,MAAK,WAC7B,OACE,qCACE,yGAGA,uBACA,mDACA,6BACE,iDACc,0DAGhB,mDACA,+BACE,4EACA,uCACO,uDADP,4DAIA,gDACA,+BACE,2CADF,sBAGA,+BACE,6DADF,wCAKF,mDACA,+BACE,wCACQ,8CADR,gBAGA,uCACO,qDADP,mDAIA,sDACsB,yDAEtB,qEACA,6BACE,oDAEF,+BACE,gDADF,2BAGA,+BACE,iEADF,cAGA,+BACE,sDADF,yDAIA,oDACoB,oDADpB,yGAKA,+BACE,sDADF,yDAIA,6DACA,6BACE,iDAEF,2CACW,+CADX,YAC2C,uBAD3C,6BAGE,uBAHF,UAKE,uBALF,mBAOE,6BAGJ,wDACA,+BACE,+BACE,gDADF,iDAGA,+BACE,kDADF,6DAIA,gEACA,+BACE,0CADF,wBAGA,+BACE,uCADF,cAGA,6BACE,2CAEF,6BACE,oDAGJ,wDACA,+BACE,gOAKA,yCACS,iDADT,0BAGA,+BACE,iDADF,8BAGA,oEC5GD,SAASsK,KAAS,IAAD,EACI7mB,mBAAS,gBADb,mBACfoD,EADe,KACR0jB,EADQ,KAOtB,OACE,eAACC,GAAA,EAAD,CAAY3jB,MAAOA,EAAnB,UACE,cAAC4jB,GAAA,EAAD,CAAQvgB,SAAS,SAAS1F,MAAM,UAAhC,SACE,eAACkmB,GAAA,EAAD,CACE7jB,MAAOA,EACPK,SATa,SAACyjB,EAAYC,GAChCL,EAASK,IASHC,eAAe,UACfC,UAAU,UACVznB,QAAQ,aACR0nB,cAAc,OACdC,aAAW,+BAPb,UASE,cAACC,GAAA,EAAD,CAAKxgB,MAAM,gBAAgB5D,MAAM,iBACjC,cAACokB,GAAA,EAAD,CAAKxgB,MAAM,OAAO5D,MAAM,SACxB,cAACokB,GAAA,EAAD,CAAKxgB,MAAM,MAAM5D,MAAM,QACvB,cAACokB,GAAA,EAAD,CAAKxgB,MAAM,cAAc5D,MAAM,eAGnC,cAACqkB,GAAA,EAAD,CAAUrkB,MAAM,eAAhB,SACE,cAACujB,GAAD,MAEF,cAACc,GAAA,EAAD,CAAUrkB,MAAM,QAAhB,SACE,cAACsjB,GAAD,MAEF,cAACe,GAAA,EAAD,CAAUrkB,MAAM,OAAhB,SACE,cAAC,GAAD,MAEF,cAACqkB,GAAA,EAAD,CAAUrkB,MAAM,MAAhB,SACE,cAACmjB,GAAD,S,yBCzCKmB,GAAgB,SAAChL,GAAD,MAClB,MAATA,EAAe,GAAc,MAATA,EAAe,IAAe,MAATA,EAAe,IAAM,MCezD,SAASiL,GAAYjoB,GAC1B,IAAMwK,EAAU9E,KAD6B,EAEbpF,wBAAShC,GAFI,mBAEtC4pB,EAFsC,KAE5BC,EAF4B,KAIvCC,EAAa7kB,uBACjB,SAACikB,GACCW,OAAY7pB,GACZ,IAAM+pB,EAAOb,EAAMhkB,OAAO8kB,MAAM,IAC5B,OAACD,QAAD,IAACA,OAAD,EAACA,EAAM5kB,MDrBU,SACzB4kB,EACArL,EACAuL,GAES,QAATvL,EACIuL,EAASF,GACTG,KAAQC,iBACNJ,EACAL,GAAchL,GACdgL,GAAchL,GACd,MACA,IACA,EACAuL,EACA,QCUFG,CAAYL,EAAMroB,EAAMgd,MAAM,SAAC2L,GAAc,IAAD,EAC1C3M,QAAQC,KAAK0M,GACb,IAAMC,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQH,EAAKN,EAAK5kB,MAClC,UAAAzD,EAAM+oB,wBAAN,SAAwBC,SAAQ,SAAC/pB,GAAD,OAAO2pB,EAASE,OAAO7pB,EAAE+b,IAAK/b,EAAEyE,UAEhE0N,GAAUpR,EAAM6M,IAAK+b,GAAUjc,SAAS8P,KAAKzc,EAAMipB,eATnDd,EAAY,2BAYhB,CAACnoB,EAAM+oB,iBAAkB/oB,EAAMipB,WAAYjpB,EAAMgd,KAAMhd,EAAM6M,MAG/D,OACE,sBACE3L,MAAO,CACLwiB,aAAc,OACdF,OAAQ,YACR0F,YAAa,YACbC,QAAS,QACTljB,aAAc,OANlB,UASE,eAAC+E,GAAA,EAAD,CACEgb,SAAUhmB,EAAMgmB,SAChBpjB,UAAW4H,EAAQ3E,KACnB3F,QAAQ,YACRmB,MAAM,UACN+nB,UAAU,QACVne,UAAW,cAAC,KAAD,CAAiBnB,KAAMuf,OANpC,UAQGrpB,EAAMiE,SACP,uBACErC,KAAK,OACL0b,QAAM,EACNgM,OAAO,gCACPvlB,SAAUqkB,OAGbF,EACC,8BAAMA,IAENloB,EAAMupB,WACJ,qBAAK3mB,UAAW,2BAAhB,SACE,cAAC,GAAD,CAAOoa,KAAMhd,EAAMgd,KAAMF,KAAM9c,EAAMupB,iBC/DjD,IAAM1c,GAAM,mBAEL,SAAS2c,KACd,IAAMjD,EAAS7gB,KACTpD,EAAWC,cAEXknB,EAAYrpB,YAAYyL,IAJH,EAKHvL,mBAASmpB,GALN,mBAKpB1d,EALoB,KAKd4M,EALc,OAMDrY,oBAAS,GANR,mBAMpBopB,EANoB,KAMbC,EANa,KAQrBrmB,EAAeC,uBACnB,SAAC3C,GAAY,IAAD,EACcA,EAAE4C,OAAlBC,EADE,EACFA,KAAMC,EADJ,EACIA,MACVqI,GACF4M,EAAQ,2BACH5M,GADE,mBAEJtI,EAAOC,KAGZimB,GAAS,KAEX,CAAC5d,IAEG6d,EAAOrmB,uBACX,SAAC3C,GACKmL,GACFzJ,EhDrB8B,SAACyJ,GAAD,MAAwB,CAC5DnK,KAAMH,GACNI,QAASkK,GgDmBM8d,CAAuB9d,IAElC4d,GAAS,KAEX,CAAC5d,EAAMzJ,IAGT,OACE,qCACE,gDACA,uBAAMwnB,YAAU,EAACC,aAAa,MAAMnnB,UAAW2jB,EAAO1gB,KAAtD,UACE,cAACkgB,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,cACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMie,WAEf,cAACjE,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,iBACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMoR,WAEf,cAAC4I,GAAA,EAAD,CACEnhB,GAAG,YACHnB,KAAK,YACL6D,MAAM,WACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAM7G,YAEf,cAAC6gB,GAAA,EAAD,CACEnhB,GAAG,eACHnB,KAAK,eACL6D,MAAM,gBACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMke,eAEf,cAAClE,GAAA,EAAD,CACEnhB,GAAG,cACHnB,KAAK,cACL6D,MAAM,UACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMme,cAEf,cAACnE,GAAA,EAAD,CACEnhB,GAAG,kBACHnB,KAAK,kBACL6D,MAAM,WACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMoe,kBAEf,cAACpE,GAAA,EAAD,CACEnhB,GAAG,gBACHnB,KAAK,gBACL6D,MAAM,iBACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMqe,gBAEf,uBACA,cAACpf,GAAA,EAAD,CACEpI,UAAW2jB,EAAO1gB,KAClB3F,QAAQ,YACRmB,MAAM,UACNwI,QAAS+f,EACT5D,SAAU0D,EACVze,UAAW,cAAC,KAAD,CAAiBnB,KAAM2U,OANpC,uBAUA,cAACwJ,GAAD,CACEgB,WAAY,SAACnM,GACXxZ,EAAa,CAAEE,OAAQ,CAAEC,KAAM,YAAaC,MAAOoZ,MAErDjQ,IAAKA,GACLkc,iBAAkB,CAAC,CAAE/N,IAAK,OAAQtX,MAAO,kBACzC6lB,UAAS,OAAExd,QAAF,IAAEA,OAAF,EAAEA,EAAMse,UACjBrN,KAAK,IAPP,qCAWA,cAACiL,GAAD,CACEgB,WAAY,SAACnM,GAAD,OACVxZ,EAAa,CAAEE,OAAQ,CAAEC,KAAM,YAAaC,MAAOoZ,MAErDjQ,IAAKA,GACLkc,iBAAkB,CAAC,CAAE/N,IAAK,OAAQtX,MAAO,kBACzC6lB,UAAS,OAAExd,QAAF,IAAEA,OAAF,EAAEA,EAAMqR,UACjBJ,KAAK,MAPP,yCC7GD,SAASsN,KAAS,IACfC,EAAQlgB,cAARkgB,IADc,EAEIjqB,mBAAQ,OAACiqB,QAAD,IAACA,IAAO,SAFpB,mBAEf7mB,EAFe,KAER0jB,EAFQ,KAQtB,OACE,eAACC,GAAA,EAAD,CAAY3jB,MAAOA,EAAnB,UACE,cAAC4jB,GAAA,EAAD,CAAQvgB,SAAS,SAAS1F,MAAM,UAAhC,SACE,eAACkmB,GAAA,EAAD,CACE7jB,MAAOA,EACPK,SATa,SAACyjB,EAAYC,GAChCL,EAASK,IASHC,eAAe,UACfC,UAAU,UACVznB,QAAQ,aACR0nB,cAAc,OACdC,aAAW,+BAPb,UASE,cAACC,GAAA,EAAD,CAAKxgB,MAAM,WAAW5D,MAAM,UAC5B,cAACokB,GAAA,EAAD,CAAKxgB,MAAM,UAAU5D,MAAM,YAC3B,cAACokB,GAAA,EAAD,CAAKxgB,MAAM,SAAS5D,MAAM,SAC1B,cAACokB,GAAA,EAAD,CAAKxgB,MAAO,cAAC,KAAD,CAAiBwC,KAAM0gB,OAAkB9mB,MAAM,cAG/D,eAACqkB,GAAA,EAAD,CAAUrkB,MAAM,QAAhB,UACE,cAAC+hB,GAAD,IACA,cAACH,GAAD,OAEF,eAACyC,GAAA,EAAD,CAAUrkB,MAAM,UAAhB,UACE,cAAC4iB,GAAD,IACA,cAACF,GAAD,OAEF,cAAC2B,GAAA,EAAD,CAAUrkB,MAAM,OAAhB,SACE,cAAC8lB,GAAD,MAEF,cAACzB,GAAA,EAAD,CAAUrkB,MAAM,OAAOxC,MAAO,CAAEioB,QAAS,KAAzC,SACE,cAAChC,GAAD,SC/CD,SAASsD,GAAKzqB,GACnB,OACE,qBAAKqkB,KAAK,OAAOzhB,UAAU,wBAAwBiH,QAAS7J,EAAMud,MAAlE,SACGvd,EAAMiE,WCLN,SAASymB,GAAW1qB,GACzB,OACE,wBACE6nB,aAAW,oBACXjlB,UAAU,iBACV+nB,cAAY,mBACZC,cAAY,WACZhpB,KAAK,SACLipB,gBAAc,QACdhhB,QAAS7J,EAAM8qB,QAPjB,SASE,sBAAMloB,UAAU,0B,sDCMTmoB,GAAWnO,IAAMC,MAAK,SAAkB7c,GAAe,IAAD,QACjE,OACE,eAACgrB,GAAA,EAAD,CACEzqB,KAAMP,EAAMO,KACZiB,QAASxB,EAAMirB,SACf3f,kBAAgB,qBAChB4f,mBAAiB,2BAJnB,UAME,cAACC,GAAA,EAAD,CAAavmB,GAAG,qBAAhB,mBACG5E,EAAMorB,mBADT,QACwB,mBAExB,cAACC,GAAA,EAAD,UACE,cAACC,GAAA,EAAD,CAAmB1mB,GAAG,2BAAtB,SACG5E,EAAMurB,eAGX,eAACC,GAAA,EAAD,YACIxrB,EAAMyrB,YACN,cAACzgB,GAAA,EAAD,CAAQnB,QAAS7J,EAAMirB,SAAU5pB,MAAM,UAAvC,mBACGrB,EAAM0rB,kBADT,QACuB,gBAGxB1rB,EAAM2rB,SACL,cAAC3gB,GAAA,EAAD,CAAQnB,QAAS7J,EAAM2rB,QAAStqB,MAAM,YAAtC,mBACGrB,EAAM4rB,iBADT,QACsB,MAGxB,cAAC5gB,GAAA,EAAD,CAAQnB,QAAS7J,EAAM6rB,KAAMxqB,MAAM,UAAUyqB,WAAS,EAAtD,mBACG9rB,EAAM+rB,cADT,QACmB,gBCZpB,SAASC,GAAehsB,GAAe,IAAD,IACPM,oBAAS,GADF,mBACpC2rB,EADoC,KACxBC,EADwB,KAIrCC,EAAQ5oB,uBAAY,WACxBvD,EAAM6rB,OACNK,GAAc,KACb,CAAClsB,IAEEwK,EAAUrD,mBACd,iBACE,cA1CE,aADiB2B,EA4CH9I,EAAMqB,QAzChB,YAANyH,EADA,YAGM,cAANA,EACA,iBACA,aAsCA,KArCoB,SAACA,GAAD,MAClB,YAANA,GAEU,YAANA,EADA,cAGM,cAANA,EACA,mBACA,cA+BAsjB,CAAkBpsB,EAAMqB,OACxB,IACArB,EAAM4C,WACL5C,EAAMgmB,SAAW,qBAAuB,IAjDvB,IAACld,IAkDrB,CAAC9I,EAAM4C,UAAW5C,EAAMqB,MAAOrB,EAAMgmB,WAGvC,OACE,qCACE,yBACEpjB,UAAW4H,EACXnJ,MAAOrB,EAAMqB,MACbwI,QAvBQ,kBAAO7J,EAAMqsB,YAAcH,GAAc,GAAQlsB,EAAM6rB,QAwB/D7F,SAAUhmB,EAAMgmB,SAJlB,UAMGhmB,EAAMiL,UACNjL,EAAMiE,YAET,cAAC,GAAD,CACEsnB,WAAU,UAAEvrB,EAAMurB,kBAAR,QAAsB,MAChCM,KAAMM,EACNlB,SAAU,kBAAMiB,GAAc,IAC9B3rB,KAAM0rB,EACNF,OAAQ/rB,EAAM+rB,OACdJ,QAAS3rB,EAAM2rB,QACfC,UAAW5rB,EAAM4rB,UACjBF,WAAY1rB,EAAM0rB,WAClBD,WAAYzrB,EAAMyrB,gBCvEnB,SAASa,GAAgBtsB,GAC9B,IAAMumB,EAAS7gB,KACTpD,EAAWC,cAIjB,OACE,cAACypB,GAAD,CACE3qB,MAAM,UACNuB,UAAW2jB,EAAO1gB,KAClBgmB,KANW,kBAAMvpB,EAAS0P,OAO1B/G,UAAW,cAAC,KAAD,CAAiBnB,KAAMyiB,OAClCF,aAAa,EALf,SAOGrsB,EAAMiE,WCdN,SAASuoB,GAAcxsB,GAC5B,IAAMumB,EAAS7gB,KACTpD,EAAWC,cAIjB,OACE,cAACypB,GAAD,CACE3qB,MAAM,UACNuB,UAAW2jB,EAAO1gB,KAClBwmB,aAAa,EACbR,KAPW,kBAAMvpB,EAASkC,OAQ1ByG,UAAW,cAAC,KAAD,CAAiBnB,KAAMyiB,OALpC,SAOGvsB,EAAMiE,W,cCdN,SAASwoB,KACd,IAAMlG,EAAS7gB,KACTpD,EAAWC,cAFc,EAILjC,mBAAS,CAAEosB,YAAa,GAAIC,YAAa,KAJpC,mBAIxBntB,EAJwB,KAIjBkB,EAJiB,KAMzB4C,EAAeC,uBACnB,SAAC3C,GAAY,IAAD,EACcA,EAAE4C,OAAlBC,EADE,EACFA,KAAMC,EADJ,EACIA,MACdhD,EAAS,2BACJlB,GADG,mBAELiE,EAAOC,OAGZ,CAAClE,IAEGotB,EAASrpB,uBACb,SAAC3C,GACC0B,EnGSC,CACLV,KAAMH,GACNI,QmGXiCrC,MAE/B,CAAC8C,EAAU9C,IAGb,OACE,qCACE,cAACqtB,GAAA,EAAD,CAAY3sB,QAAQ,KAAKkpB,UAAU,KAAnC,gCAGA,uBAAMU,YAAU,EAACC,aAAa,MAAMnnB,UAAW2jB,EAAO1gB,KAAtD,UACE,cAACkgB,GAAA,EAAD,CACEnkB,KAAK,WACLob,KAAK,QACLpY,GAAG,cACHnB,KAAK,cACL6D,MAAM,gBACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAOlE,EAAMktB,YACb7oB,SAAU+oB,IAEZ,cAAC7G,GAAA,EAAD,CACEnkB,KAAK,WACLob,KAAK,QACLpY,GAAG,cACHnB,KAAK,cACL6D,MAAM,gBACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAOlE,EAAMmtB,YACb9oB,SAAU+oB,OAGd,cAAC5hB,GAAA,EAAD,CACEpI,UAAW2jB,EAAO1gB,KAClB3F,QAAQ,YACRmB,MAAM,UACNwI,QAAS+iB,EACT5G,SAAUxmB,EAAMktB,cAAgBltB,EAAMmtB,YACtC1hB,UAAW,cAAC,KAAD,CAAiBnB,KAAMgjB,OANpC,0BC1CC,SAASC,KACd,IAAMC,EAAY5sB,YAAY+B,IAE9B,OAAO6qB,EACL,cAACC,GAAD,CAAqBlrB,KAAMirB,IAE3B,iDAOG,SAASC,GAAoBjtB,GAAe,IAAD,EAC1CwK,EAAU9E,KACVpD,EAAWC,cACXiH,EAAUC,cAHgC,EAKtBnJ,oBAAS,GALa,mBAKzCopB,EALyC,KAKlCC,EALkC,OAMxBrpB,mBAAS,eAAKN,EAAM+B,OANI,mBAMzCA,EANyC,KAMnCmrB,EANmC,KAQ1C5pB,EAAe,SAAC1C,GAAY,IAAD,EACPA,EAAE4C,OAAlBC,EADuB,EACvBA,KAAMC,EADiB,EACjBA,MACdwpB,EAAQ,2BAAKnrB,GAAN,mBAAa0B,EAAOC,KAC3BimB,GAAS,IAELC,EAAOrmB,uBACX,SAAC3C,GACC0B,EpGNgC,SAACP,GAAD,MAAiB,CACrDH,KAAMH,GACNI,QAASE,GoGIIorB,CAAuBprB,IAChC4nB,GAAS,KAEX,CAACrnB,EAAUP,IAEP0b,EAASla,uBAAY,WACzBjB,EAASL,IACTK,EAASJ,IACTsH,EAAQrK,KAAK,WACZ,CAACmD,EAAUkH,IAER4jB,EAAY7pB,uBAChB,SAACuZ,GAAD,OAAUxa,EAASR,GAAe,2BAAKC,GAAN,IAAYsrB,OAAQvQ,QACrD,CAACxa,EAAUP,IAGb,OACE,qCACE,cAACiJ,GAAA,EAAD,CACEpI,UAAW4H,EAAQ3E,KACnB3F,QAAQ,YACRmB,MAAM,YACNwI,QAAS4T,EACTxS,UAAW,cAAC,KAAD,CAAiBnB,KAAM6T,OALpC,qBASA,eAACxS,GAAA,EAAD,CAAOlL,UAAW,EAAG2C,UAAW,aAAhC,UACE,cAACiqB,GAAA,EAAD,CAAY3sB,QAAQ,KAAKkpB,UAAU,KAAnC,wBAGA,cAACnB,GAAD,CACEgB,WAAYmE,EACZrE,iBAAkB,CAChB,CAAE/N,IAAK,aAActX,MAAO4pB,OAAM,OAACvrB,QAAD,IAACA,OAAD,EAACA,EAAM+C,UAE3C+H,IAAK,eACL0c,UAAS,UAAEvpB,EAAM+B,YAAR,aAAE,EAAYsrB,OACvBrQ,KAAK,IAPP,qCAYF,eAAC7R,GAAA,EAAD,CAAOlL,UAAW,EAAG2C,UAAW,aAAhC,UACE,cAACiqB,GAAA,EAAD,CAAY3sB,QAAQ,KAAKkpB,UAAU,KAAnC,oBAGA,uBAAMU,YAAU,EAACC,aAAa,MAAMnnB,UAAW4H,EAAQ3E,KAAvD,UACE,cAACkgB,GAAA,EAAD,CACEnhB,GAAG,YACHnB,KAAK,YACL6D,MAAM,UACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAO3B,EAAKwJ,YAEd,cAACwa,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,WACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAO3B,EAAKyJ,WAEd,cAACua,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,YACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAO3B,EAAKoB,cAGhB,cAAC6H,GAAA,EAAD,CACEpI,UAAW4H,EAAQ3E,KACnB3F,QAAQ,YACRmB,MAAM,UACNwI,QAAS+f,EACT5D,SAAU0D,EACVze,UAAW,cAAC,KAAD,CAAiBnB,KAAM2U,OANpC,0BAWF,cAACtT,GAAA,EAAD,CAAOlL,UAAW,EAAG2C,UAAW,aAAhC,SACE,cAAC6pB,GAAD,SC7HD,SAASc,GAAOvtB,GACrB,OAAO,qBAAK4C,UAAU,0BAAf,SAA0C5C,EAAMiE,WCDlD,SAASupB,GAAKxtB,GACnB,OAAO,qBAAK4C,UAAU,eAAf,SAA+B5C,EAAMiE,W,MCcvC,SAASwpB,GAA8BztB,GAC5C,IAAM2M,EAASpJ,uBAAY,kBAAOvD,EAAMgmB,UAAYhmB,EAAM2M,WAAU,CAAC3M,IAErE,OACE,qBACE4C,UACE5C,EAAM0tB,OAnBa,iCAqBf1tB,EAAMgmB,SAxBW,mCA0BjBhmB,EAAMukB,QAzBU,kCA2BhBvkB,EAAM2tB,UA1BS,oCA4Bf3tB,EAAM4tB,WA1BQ,qCALI,cAmCxB1sB,MAAO,CAAEiF,MAAM,GAAD,OAAK,KAAOnG,EAAM6tB,OAAS,GAAK,GAAK7tB,EAAM6tB,QAA3C,MACdhkB,QAAS8C,EAfX,SAiBG3M,EAAMiE,WC/BN,SAAS6pB,KACd,IAAMtkB,EAAUC,cAEVskB,EAAkB3tB,YAAYuP,IAC9BhG,EAAWvJ,YAAYgN,IAG7B,OACE,qBAAKxK,UAAU,YAAf,SACE,eAAC6qB,GAAD,CACEI,OAAQ,EACRlhB,OALgB,kBAAMnD,EAAQrK,KAAK,cAGrC,UAKGwK,EAASC,UAAYmkB,EAAkB,WAL1C,YAOE,cAAC,KAAD,CAAiBjkB,KAAMkkB,OAPzB,YASE,cAAC,KAAD,CAAiBlkB,KAAMmkB,OATzB,YAWE,cAAC,KAAD,CAAiBnkB,KAAMmkB,SARlB,UCrBN,IAAMC,GAAe,SAAC1uB,GAAD,OAC1BA,EAAMwN,MAAMyD,wBCeP,SAAS0d,GAA0BnuB,GAAe,IAAD,EAChDsC,EAAWC,cACXiH,EAAUC,cAEVlF,EAASnE,aAAY,SAACZ,GAAD,OACzBmF,GAAanF,EAAOQ,EAAMue,MAAMG,cALoB,EAOlBpe,oBAAS,GAPS,mBAO/C8tB,EAP+C,KAOnCC,EAPmC,KAShD3pB,EAAOyC,mBAAQ,kBAAMwD,KAAK2jB,MAAMtuB,EAAMue,MAAM7Z,QAAO,CAAC1E,EAAMue,MAAM7Z,OAChE6pB,EAASpnB,mBACb,2CAAMzC,QAAN,IAAMA,GAAN,UAAMA,EAAMwJ,YAAZ,aAAM,EAAYrF,OAAOuG,GAAmB,UAA5C,QAAkD,MAClD,QAAC1K,QAAD,IAACA,OAAD,EAACA,EAAMwJ,OAEHsgB,EAASrnB,mBACb,2CAAMzC,QAAN,IAAMA,GAAN,UAAMA,EAAMwJ,YAAZ,aAAM,EAAYrF,OAAO0G,GAAmB,UAA5C,QAAkD,MAClD,QAAC7K,QAAD,IAACA,OAAD,EAACA,EAAMwJ,OAGHxE,EAAcnG,uBAAY,WAC9BjB,EAASoP,GAAmB,eAAKhN,KACjC8E,EAAQrK,KAAK,eACZ,CAACmD,EAAUoC,EAAM8E,IAEpB,OACE,qCACE,qBAAI5G,UAAU,WAAWiH,QAAS,kBAAMwkB,GAAc,IAAtD,UACE,6BACE,cAAC,KAAD,CAAiBvkB,KAAM2kB,SAEzB,+BACE,sBAAM7rB,UAAU,iCAAhB,gBACG2B,QADH,IACGA,OADH,EACGA,EAAQW,YAEX,sBAAMtC,UAAU,8CAAhB,SACGoC,GAAYT,QAGjB,oBAAI3B,UAAU,eAAd,SAA8B5C,EAAMue,MAAMC,YAC1C,6BAAK+P,IACL,6BAAKC,OAEP,cAAC,GAAD,CACEjuB,KAAM6tB,EACNvC,KAAM,kBAAMniB,KACZuhB,SAAU,kBAAMoD,GAAc,IAE9B9C,WACE,uEANJ,UAIOvrB,EAAMue,aAJb,aAIO,EAAamQ,YClDnB,SAASC,GAAqB3uB,GAAe,IAAD,cAC3CsC,EAAWC,cACXiH,EAAUC,cAFiC,EAGjBnJ,oBAAS,GAHQ,mBAG1CsuB,EAH0C,KAGhCC,EAHgC,OAKbvuB,oBAAS,GALI,mBAK1C8tB,EAL0C,KAK9BC,EAL8B,KAO3C3kB,EAAcnG,uBAClB,SAACoG,GAA+B,IAAD,EACvBmlB,EAAI,OAAGnlB,QAAH,IAAGA,GAAH,UAAGA,EAAU4U,aAAb,aAAG,EAAiBwQ,QAG5BzsB,EACEoP,GAFAod,EAEmB,eACdnkB,KAAK2jB,MAAMQ,EAAKpqB,OAIKiF,IAE9BH,EAAQrK,KAAK,eAEf,CAACqK,EAASlH,IAGN0sB,EAAK,kBAAMX,GAAc,IAI/B,OACE,qCACE,wBAAOzrB,UAAU,UAAjB,UACE,qBAAIA,UAAU,YAAd,UACE,oBACE1B,MAAO,CAAEiF,MAAO,QAASsa,YAAa,aACtC5W,QARK,kBAAMglB,GAAaD,IAM1B,SAIE,cAAC,KAAD,CAAiB9kB,KAAMmlB,SAEzB,oBAAIplB,QAASmlB,EAAb,mBAAkBhvB,EAAMmU,eAAxB,aAAkB,EAAelK,UACjC,qBAAIJ,QAASmlB,EAAIpsB,UAAU,eAA3B,oBACG5C,EAAMmU,eADT,aACG,EAAepE,QADlB,eAC6B/P,EAAMmU,eADnC,aAC6B,EAAe5G,WAD5C,OAGA,cAACsQ,GAAD,CAAmBzY,KAAI,UAAEpF,EAAMmU,eAAR,aAAE,EAAe1G,MAAO5D,QAASmlB,IACxD,cAACnR,GAAD,CAAmBzY,KAAI,UAAEpF,EAAMmU,eAAR,aAAE,EAAezG,MAAO7D,QAASmlB,OAEzDJ,IAAQ,UACP5uB,EAAMmU,QAAQoK,aADP,aACP,EAAqB/V,KAAI,SAACkX,GAAD,OACvB,cAACyO,GAAD,CAA2B5P,MAAOmB,WAGxC,cAAC,GAAD,CACEnf,KAAM6tB,EACNvC,KAAM,kBAAMniB,EAAY1J,EAAMmU,UAC9B8W,SAAU,kBAAMoD,GAAc,IAE9B9C,WACE,uEANJ,UAIOvrB,EAAMmU,eAJb,aAIO,EAAevK,c,OC1DrB,SAASslB,KACd,IAAM5sB,EAAWC,cAEXwP,EAAS3R,YAAY8tB,IAO3B,OALAptB,qBAAU,WACRwB,EAAS2P,QAER,IAEIF,EAAS,cAACod,GAAD,CAA2Bpd,OAAQA,IAAa,oCAGlE,SAASod,GAA0BnvB,GACjC,OACE,wBAAO4C,UAAU,UAAU0I,kBAAgB,aAA3C,UACE,gCACE,+BACE,uBACA,uCACA,oBAAI1I,UAAU,eAAd,uBACA,wCACA,6CAGH5C,EAAM+R,OAAOvJ,KAAI,SAAC2L,GAAD,OAChB,cAACwa,GAAD,CAAsBxa,QAASA,GAAcA,EAAQvK,iBC7BtD,SAASwlB,GAAqBpvB,GACnC,IAAMwK,EAAU9E,KACVpD,EAAWC,cAIjB,OACE,cAACypB,GAAD,CACE3qB,MAAM,UACNuB,UAAW4H,EAAQ3E,KACnBgmB,KANW,kBAAMvpB,EAAS2P,OAO1BhH,UAAW,cAAC,KAAD,CAAiBnB,KAAMyiB,OAClCF,aAAa,EALf,SAOGrsB,EAAMiE,WCjBN,SAASorB,KACd,OACE,qCACE,cAACvB,GAAD,IACA,cAACsB,GAAD,uBACA,cAACF,GAAD,OCSC,SAASI,KAA6B,IAAD,EACpChtB,EAAWC,cAEXoH,EAAWvJ,YAAYgN,IACvB0D,EAAQ1Q,YAAY2M,IACpBwiB,EAAcnvB,YAAYuN,IAE1B6hB,EAAWjsB,uBACf,SAAC2K,GAAD,OAAwB5L,EAAS+O,GAAWnD,EAAKC,GAAK,MACtD,CAAC7L,IAEGmtB,EAAclsB,uBAClB,SAACuN,GAAD,OAAmBxO,EAAS+O,GAAW1H,EAASuE,KAAK7P,OAASyS,MAC9D,CAACxO,EAAUqH,EAASuE,KAAK7P,SAG3B,OACE,sBAAKuE,UAAU,YAAf,oBACG+G,EAASuE,YADZ,aACG,EAAe1F,KAAI,SAAC0F,GAAD,OAClB,cAACuf,GAAD,CACEI,OAAQ,GACRlhB,OAAQ,kBAAM6iB,EAASthB,IAEvBqW,QAASzT,IAAU5C,EAAKC,GAAK,EAJ/B,SAMGD,EAAKC,IAHDD,EAAKC,OAObxE,EAASC,WACR,qCACE,cAAC6jB,GAAD,CACEI,OAAQ0B,EAAc,IAAM,GAC5B5B,UAAW4B,EACX5iB,OAAQ,kBAAM8iB,EAAY,IAE1BlL,QAASzT,IAAUnH,EAASuE,KAAK7P,OAAS,EAL5C,SAOE,cAAC,KAAD,CAAiByL,KAAM4lB,QAHlB,QAKP,cAACjC,GAAD,CACEI,OAAQ,GACRlhB,OAAQ,kBAAM8iB,EAAY,IAE1BlL,QAASzT,IAAUnH,EAASuE,KAAK7P,OAAS,EAJ5C,SAME,cAAC,KAAD,CAAiByL,KAAM6lB,QAHlB,OAKP,cAAClC,GAAD,CACEI,OAAQ,GACRlhB,OAAQ,kBAAM8iB,EAAY,IAE1BlL,QAASzT,IAAUnH,EAASuE,KAAK7P,OAAS,EAJ5C,SAME,sCAHK,KAKP,cAACovB,GAAD,CACEI,OAAQ,GACRlhB,OAAQ,kBAAM8iB,EAAY,IAE1BlL,QAASzT,IAAUnH,EAASuE,KAAK7P,OAAS,EAJ5C,SAME,cAAC,KAAD,CAAiByL,KAAM8lB,QAHlB,eClEV,SAASC,KACd,IAAMC,EAAc1vB,YAAY0N,IAC1BiiB,EAAc3vB,YAAY2N,IAC1BiiB,EAAY5vB,YAAYuO,IACxBshB,EAAY7vB,YAAYwO,IACxBjF,EAAWvJ,YAAYgN,IAE7B,OACE,qCACE,sBAAKxK,UAAU,WAAf,UACE,qBAAK1B,MAAO,CAAEiF,MAAO,OAArB,SACG6pB,GAD+B,aAGlC,qBAAK9uB,MAAO,CAAEiF,MAAO,OAArB,SACG8pB,GAD+B,gBAIpC,sBAAKrtB,UAAU,WAAf,UACE,qBAAK1B,MAAO,CAAEiF,MAAO,OAArB,SACG2pB,GAD+B,SAGlC,qBAAKltB,UAAU,gBAAgB1B,MAAO,CAAEiF,MAAO,OAA/C,UACW,OAARwD,QAAQ,IAARA,OAAA,EAAAA,EAAU4D,YAAV,OAAuB5D,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAU4D,WAAa,KADW,QAG5D,qBAAKrM,MAAO,CAAEiF,MAAO,OAArB,SACG4pB,GAD+B,eC5BnC,SAASG,KACd,IAAMvmB,EAAWvJ,YAAYgN,IAE7B,OACE,qCACGzD,EAASC,WAAa,cAACimB,GAAD,IACvB,cAACP,GAAD,O,wBCLOa,GAAgC,SAACC,GAAD,MAAkB,CAC7DxuB,KAAMH,EACNI,QAASuuB,ICAJ,SAASC,GAAuBrwB,GACrC,IAAMsC,EAAWC,cACXiH,EAAUC,cAEV1H,EAAO3B,YAAY+B,IAEnBgqB,EAAQ5oB,uBAAY,WACxBjB,EDSgC,CAClCV,KAAMH,KCTJa,EACEoP,GAAmB9B,GAAsB,OAAC7N,QAAD,IAACA,OAAD,EAACA,EAAMuuB,qBAElD9mB,EAAQrK,KAAK,aACZ,CAACmD,EAAD,OAAWP,QAAX,IAAWA,OAAX,EAAWA,EAAMuuB,kBAAmB9mB,IAEvC,OACE,cAACwiB,GAAD,CACE3qB,MAAM,YACNwqB,KAAMM,EACNlhB,UAAW,cAAC,KAAD,CAAiBnB,KAAMymB,OAClChF,WAAY,0DACZc,aAAa,EALf,SAOGrsB,EAAMiE,WCfN,SAASusB,GAAuBxwB,GAAe,IAAD,EACfM,mBAAS,GADM,mBAC5C2rB,EAD4C,KAChCC,EADgC,KAG7C5pB,EAAWC,cAEXspB,EAAOtoB,uBAAY,W3FagB,IAACqG,E2FZrB,IAAfqiB,GACF3pB,G3FWsCsH,E2FXD5J,EAAM2J,SAASC,U3FWM,CAC9DhI,KAAMH,GACNI,QAAS,CAAE+C,GAAIgF,EAAW6mB,UAAU,M2FXf,IAAfxE,GACF3pB,E3FYqC,SAACsH,GAAD,MAAqB,CAC9DhI,KAAMH,GACNI,QAAS,CAAE+C,GAAIgF,EAAW6mB,UAAU,I2FdvBC,CAA4B1wB,EAAM2J,SAASC,YAEtDsiB,EAAc,KACb,CAAC5pB,EAAU2pB,EAAYjsB,EAAM2J,SAASC,YAKnC+mB,EAAmBvwB,YAAYwN,IAC/BgjB,EAAmBxwB,YAAYyN,IAC/BJ,EAAQrN,YAAYuO,IACpBjB,EAAQtN,YAAYwO,IAEpBiiB,EAAc1pB,mBAClB,iBAAM,eAAiBwpB,EAAmB,GAAK,mBAC/C,CAACA,IAEGG,EAAc3pB,mBAClB,iBAAM,eAAiBypB,EAAmB,GAAK,mBAC/C,CAACA,IAEH,OACE,sBAAK1vB,MAAO,CAAE6vB,QAAS,SAAvB,UACGJ,GAAoBC,EACnB,iDAEA,iEAEF,qBAAKhuB,UAAWiuB,EAAahnB,QAvBjB,kBAAO8mB,EAAmBzE,EAAc,GAAK,IAuBzD,SACGze,IAEH,qBAAK7K,UAAWkuB,EAAajnB,QAzBjB,kBAAO+mB,EAAmB1E,EAAc,GAAK,IAyBzD,SACGxe,IAEH,cAAC,GAAD,CACE6d,WAAY,oDACZM,KAAMA,EACNZ,SAAU,kBAAMiB,EAAc,IAC9B3rB,KAAM0rB,EAAa,EACnBF,OAAQ,SACRL,WAAY,gBC5Db,SAASsF,KACd,IAAM1uB,EAAWC,cAEX4R,EAAU/T,YAAYgN,IAEtBiH,EAAM9Q,uBACV,SAACuZ,GACCxa,E5FwEuB,SAACwa,GAAD,MAAmB,CAC9Clb,KAAMH,GACNI,QAASib,G4F1EImU,CAAcnU,IACvBd,QAAQC,KAAK,2BAEf,CAAC3Z,IAEH,OACE,qCACE,cAACkuB,GAAD,CAAwB7mB,SAAUwK,IAClC,sBACEjT,MAAO,CACLuF,UAAW,MACXsqB,QAAS,QACTG,MAAO,OACP/qB,MAAO,OACPW,UAAW,UANf,WASU,OAAPqN,QAAO,IAAPA,OAAA,EAAAA,EAASvK,YACR,cAACqe,GAAD,CACEgB,WAAY5U,EACZ0U,iBAAkB,CAChB,CAAE/N,IAAK,aAActX,MAAO4pB,OAAM,OAACnZ,QAAD,IAACA,OAAD,EAACA,EAASvK,aAE9CiD,IAAK,0BACLmZ,WAAU,OAAC7R,QAAD,IAACA,OAAD,EAACA,EAASvK,WACpB2f,UAAS,OAAEpV,QAAF,IAAEA,OAAF,EAAEA,EAAS7D,WACpB0M,KAAK,KARP,kCAcF,cAACqT,GAAD,sCCpCD,SAASc,GAAsBnxB,GAIpC,OACE,sBAAK4C,UAAW,cAAhB,UACE,qBACEA,UAAW5C,EAAMoxB,QAAU,aAAe,eAC1CvnB,QAPQ,kBAAM7J,EAAMqxB,QAAQ,IAAK,IAKnC,SAIE,cAAC,KAAD,CAAiBvnB,KAAM0b,SAEzB,qBACE5iB,UAAW5C,EAAMsxB,cAAgB,aAAe,eAChDznB,QAZc,kBAAM7J,EAAMqxB,QAAQ,EAAG,MAUvC,SAIE,cAAC,KAAD,CAAiBvnB,KAAMynB,YCdxB,SAASC,GAAiCxxB,GAC/C,IAAMyxB,EAAUC,iBAAO,MAEvB5wB,qBAAU,WACU,IAAD,EAAbd,EAAM2xB,QACD,OAAPF,QAAO,IAAPA,GAAA,UAAAA,EAASlN,eAAT,SAAkBrQ,YAEnB,CAAClU,EAAM2xB,QAEV,IAAMC,EAAkBruB,uBACtB,SAAC3C,GACC,IAAMixB,EAAMvnB,OAAO1J,EAAE4C,OAAOE,OACxBmuB,GAAO,GAAKA,GAAO,KACrB7xB,EAAMqxB,QAAQQ,EAAK,IAAMA,KAG7B,CAAC7xB,IAEG8xB,EAASvuB,uBACb,SAAC3C,GACCgxB,EAAgBhxB,IACX,OAALZ,QAAK,IAALA,OAAA,EAAAA,EAAO+xB,YAAP,OAAmB/xB,QAAnB,IAAmBA,KAAO+xB,UAAS,MAErC,CAACH,EAAiB5xB,IAIpB,OACE,qCACE,cAACmxB,GAAD,eAA2BnxB,IAC3B,qBAAK4C,UAAU,SAAf,SACE,uBACEhB,KAAK,SACLowB,IAAKP,EACL/tB,MAAO1D,EAAMiyB,OACbluB,SAAU6tB,EACVM,OAAQJ,EACRjoB,QAZQ,SAACjJ,GAAD,OAAYA,EAAE4C,OAAO0Q,UAa7Bie,IAAK,IACLC,IAAK,EACLC,KAAM,SC1CT,SAASC,GAA+BtyB,GAC7C,IAAMuyB,EAAaprB,mBACjB,iBACE,uBACCnH,EAAMkO,KAAKM,SACRxO,EAAMkO,KAAKM,WAAaxO,EAAMwO,SAC5B,iBACA,mBACF,kBACN,CAACxO,EAAMwO,SAAUxO,EAAMkO,KAAKM,WAG9B,OACE,qBACE5L,UAAW2vB,EACX1oB,QAAS,kBAAM7J,EAAMwyB,eAAexyB,EAAMwO,WAF5C,SAIE,cAAC,GAAD,CAAcA,SAAUxO,EAAMwO,aCjB7B,SAASikB,GAA6BzyB,GAC3C,IAAMuyB,EACJ,WAAavyB,EAAMkO,KAAKyC,gBAAkB,UAAY,WAExD,OACE,qBAAK/N,UAAW2vB,EAAY1oB,QAAS7J,EAAM0yB,QAA3C,SACE,cAAC,KAAD,CAAiB5oB,KAAM6oB,SCJtB,SAASC,GAA4B5yB,GAC1C,IAAM6yB,EAAMzyB,aAAY,SAACZ,GAAD,OACtBmF,GAAanF,EAAOQ,EAAMkO,KAAKO,mBAE3B7G,EAAUxH,aAAY,SAACZ,GAAD,aAC1BmF,GAAanF,EAAD,UAAQQ,EAAMkO,YAAd,aAAQ,EAAYyC,oBAGlC,OACE,sBAAK/N,UAAU,UAAf,UACE,qBAAKA,UAAWgF,EAAU,mBAAqB,gBAA/C,gBACGirB,QADH,IACGA,OADH,EACGA,EAAK1vB,WAER,sBAAKP,UAAWgF,EAAU,iBAAmB,gBAA7C,UACE,cAAC,KAAD,CAAiBkC,KAAM8W,OACvB,mDAAmBhZ,QAAnB,IAAmBA,OAAnB,EAAmBA,EAASzE,kBCH7B,SAAS2vB,GAA2B9yB,GACzC,IAAMsC,EAAWC,cADsC,EAGnBjC,oBAAS,GAHU,mBAGhDyyB,EAHgD,KAGpCC,EAHoC,KAIjDH,EAAMzyB,aAAY,SAACZ,GAAD,OACtBmF,GAAanF,EAAOQ,EAAMkO,KAAKO,mBAE3B7G,EAAUxH,aAAY,SAACZ,GAAD,aAC1BmF,GAAanF,EAAD,UAAQQ,EAAMkO,YAAd,aAAQ,EAAYyC,oBAE5BjI,EAAYtI,aAAY,SAACZ,GAAD,OrGiBH,SAACA,EAAkBoF,GAC9C,IAAM6I,EAAQjO,EAAMwN,MAAMK,uBAAuBI,MAC3CC,EAAQlO,EAAMwN,MAAMK,uBAAuBK,MACjD,OAAOD,EAAMpI,YAAcT,EACvB6I,EAAMnI,UACNmI,EAAMnI,YAAcV,EACpB6I,EAAMpI,UACNqI,EAAMrI,YAAcT,EACpB8I,EAAMpI,UACNoI,EAAMpI,UACNoI,EAAMrI,eACN/G,EqG3BF20B,CAAczzB,EAAD,OAAQqzB,QAAR,IAAQA,OAAR,EAAQA,EAAK/tB,WAEtBoF,EAAS9J,aAAY,SAACZ,GAAD,OACzBqP,GAA0BrP,EAAOQ,EAAMkO,KAAd,OAAoB2kB,QAApB,IAAoBA,OAApB,EAAoBA,EAAK/tB,WAE9CiK,EAAS3O,aAAY,SAACZ,GAAD,OACzBkP,GAAalP,EAAD,OAAQqzB,QAAR,IAAQA,OAAR,EAAQA,EAAK/tB,WAGrBssB,EAAUjqB,mBACd,kBACc,IAAX4H,GAA2C,MAA3B/O,EAAMkO,KAAKI,aAChB,IAAXS,GAA2C,MAA3B/O,EAAMkO,KAAKK,cAC9B,CAACvO,EAAMkO,KAAKI,YAAatO,EAAMkO,KAAKK,YAAaQ,IAE7CuiB,EAAgBnqB,mBACpB,kBACc,IAAX4H,GAA2C,MAA3B/O,EAAMkO,KAAKK,aAChB,IAAXQ,GAA2C,MAA3B/O,EAAMkO,KAAKI,cAC9B,CAACtO,EAAMkO,KAAKI,YAAatO,EAAMkO,KAAKK,YAAaQ,IAG7C6iB,EAAkBruB,uBACtB,SAAC2vB,EAAuBC,GlGLN,IACpBjlB,EACA0C,EACAC,EkGGIvO,GlGLJ4L,EkGOQlO,EAAMkO,KlGNd0C,EkGOmB,IAAX7B,EAAemkB,EAAgBC,ElGNvCtiB,EkGOmB,IAAX9B,EAAeokB,EAAeD,ElGNlC,CACJtxB,KAAMH,GACNI,QAAS,CAAE6O,OAAQxC,EAAKC,GAAIyC,cAAaC,oBkGQvC,CAACvO,EAAUtC,EAAMkO,KAAMa,IAEnBqkB,EAAY7vB,uBAAY,WlGpBT,IAAC2K,EAAoByC,EkGqBxCrO,GlGrBoB4L,EkGqBHlO,EAAMkO,KlGrBiByC,EkGqBX/I,OAAUtJ,EAAYoK,ElGrBmB,CACxE9G,KAAMH,GACNI,QAAS,CAAE6O,OAAQxC,EAAKC,GAAIwC,wBkGoBzB,CAACrO,EAAUsF,EAASc,EAAW1I,EAAMkO,OAClCskB,EAAiBjvB,uBACrB,SAACiL,GACClM,ElGbqB,SAAC4L,EAAoBM,GAArB,MAA2C,CACpE5M,KAAMH,GACNI,QAAS,CAAE6O,OAAQxC,EAAKC,GAAIK,akGWf6kB,CAAYrzB,EAAMkO,KAAMM,IACjCwkB,GAAc,KAEhB,CAAC1wB,EAAUtC,EAAMkO,OAGbolB,EAAQnsB,mBACZ,iBACE,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGqB,KAAI,SAAC2F,GAAD,OACrB,cAACmkB,GAAD,2BAEMtyB,GAFN,IAGEwO,SAAUL,EACVqkB,eAAgBA,IAHXrkB,QAMX,CAACnO,EAAOwyB,IAGV,OACE,qCACE,cAACI,GAAD,eAAiC5yB,IACjC,cAACwxB,GAAD,CACEH,QAASO,EACTK,OAAQ/nB,EACRknB,QAASA,EACTE,cAAeA,EACfK,MAAOoB,EACPhB,SAAUiB,IAEXM,EACD,cAACb,GAAD,2BAAkCzyB,GAAlC,IAAyC0yB,QAASU,QC5FjD,SAASG,GAAiCvzB,GAC/C,IAAMsC,EAAWC,cAEXgC,EAASnE,aAAY,SAACZ,GAAD,OACzBmF,GAAanF,EAAOQ,EAAMqJ,aAGtBmqB,EAAajwB,uBACjB,SAACuN,GACCxO,EAAStC,EAAMyzB,aAAa3iB,MAE9B,CAACxO,EAAUtC,IAGb,OACE,sBAAK4C,UAAU,OAAf,UACE,8BACE,cAAC,KAAD,CAAiBkH,KAAM4pB,SAEzB,8BAAM1zB,EAAMmP,SACZ,qCAAM5K,QAAN,IAAMA,OAAN,EAAMA,EAAQpB,WACd,qBAAKP,UAAU,cAAciH,QAAS,kBAAM2pB,EAAWxzB,EAAM8Q,QAA7D,SACE,cAAC,KAAD,CAAiBhH,KAAME,YCvBxB,SAAS2pB,GAA6B3zB,GAC3C,OACE,qCACE,8BAAMA,EAAM4zB,QACX5zB,EAAM6zB,KAAKrrB,KAAI,SAACsrB,EAAGhjB,GAAJ,OACd,wBAACyiB,GAAD,uCACMvzB,GACA8zB,GAFN,IAGEhjB,MAAOA,EACPkK,IAAK,QAAUlK,WCTlB,SAASijB,GAA0B/zB,GACxC,OACE,qCACE,cAAC2zB,GAAD,CACEE,KAAM7zB,EAAMkO,KAAKmB,UACjBokB,aAAc,SAAC3iB,GAAD,OrGyDS,SAACA,EAAeJ,GAAhB,MAAoC,CACjE9O,KAAMH,GACNI,QAAS,CAAEiP,QAAOJ,WqG3DqBsjB,CAAgBljB,EAAO9Q,EAAMkO,KAAKC,OAErE,cAACwlB,GAAD,CACEE,KAAM7zB,EAAMkO,KAAKsB,UACjBikB,aAAc,SAAC3iB,GAAD,OrGyDS,SAACA,EAAeJ,GAAhB,MAAoC,CACjE9O,KAAMH,GACNI,QAAS,CAAEiP,QAAOJ,WqG3DqBujB,CAAgBnjB,EAAO9Q,EAAMkO,KAAKC,UCdpE,SAAS+lB,GAAal0B,GAC3B,OACE,qBACE4C,UAAW,SACX1B,MAAO,CACLiF,MAAsB,WAAfnG,EAAM4B,KAAoB,QAAU,QAC3C2d,OAAuB,WAAfvf,EAAM4B,KAAoB,QAAU,OAE9CiI,QAAS,kBAAM7J,EAAMm0B,OAAOn0B,EAAM6xB,MANpC,SAQG7xB,EAAMiE,WCPb,IAAMmwB,QAAa91B,EAOZ,SAAS+1B,GAA2Br0B,GACzC,IAAMmU,EAAU/T,YAAYgN,IACtB0Q,EAAU1d,aAAY,SAACZ,GAAD,OAC1BmF,GAAanF,EAAO2U,EAAQ1G,MAAMpI,cAE9B0Y,EAAU3d,aAAY,SAACZ,GAAD,OAC1BmF,GAAanF,EAAO2U,EAAQ1G,MAAMnI,cAE9BgvB,EAAUl0B,aAAY,SAACZ,GAAD,OAC1BmF,GAAanF,EAAO2U,EAAQzG,MAAMrI,cAE9BkvB,EAAUn0B,aAAY,SAACZ,GAAD,OAC1BmF,GAAanF,EAAO2U,EAAQzG,MAAMpI,cAZmB,EAc/BhF,oBAAS,GAdsB,mBAchDC,EAdgD,KAc1Ci0B,EAd0C,OAe3Bl0B,mBAAS8zB,IAfkB,mBAehDK,EAfgD,KAexCC,EAfwC,KAiBjDC,EAAa,SAAC9C,GACdA,GACF7xB,EAAM40B,QAAQ,CACZ3C,OAAQJ,EACRxoB,SAAUorB,EACVvkB,OACEukB,IAAWtgB,EAAQzG,MAAMrI,WACzBovB,IAAWtgB,EAAQzG,MAAMpI,UACrB,EACA,IAGVkvB,GAAQ,IAEJK,EAAe,SAAChD,GACpB6C,EAAU7C,IAUZ,OACE,qCACE,qBAAKjvB,UAAU,eAAeiH,QAVV,WACtB6qB,EAAUN,IACVI,GAAQ,IAQN,kBAGA,eAACxJ,GAAA,EAAD,CAAQzqB,KAAMA,EAAMiB,QATJ,WAClBgzB,GAAQ,IAQN,UACE,cAACrJ,GAAA,EAAD,UACE,sBAAKjqB,MAAO,CAAE0F,WAAY,UAA1B,UACG6tB,GAAU,iDACTA,GAAU,4DAGhB,eAACpJ,GAAA,EAAD,WACGoJ,GACC,qCACE,cAACP,GAAD,CAAcrC,IAAK,GAAIsC,OAAQQ,EAA/B,sBAGA,cAACT,GAAD,CAAcrC,IAAK,GAAIsC,OAAQQ,EAA/B,gBAGA,cAACT,GAAD,CAAcrC,IAAK,GAAIsC,OAAQQ,EAA/B,gBAGA,cAACT,GAAD,CAAcrC,IAAK,IAAKsC,OAAQQ,EAAhC,iBAGA,cAACT,GAAD,CAAcrC,IAAK,IAAKsC,OAAQQ,EAAhC,iBAGA,cAACT,GAAD,CAAcrC,IAAK,IAAKsC,OAAQQ,EAAhC,iBAGA,cAACT,GAAD,CAAcrC,IAAK,IAAKsC,OAAQQ,EAAhC,qBAKFF,GACA,qCACE,cAACP,GAAD,CAAcrC,IAAG,OAAE/T,QAAF,IAAEA,OAAF,EAAEA,EAAShZ,OAAQqvB,OAAQU,EAA5C,gBACG/W,QADH,IACGA,OADH,EACGA,EAAS3a,WAEZ,cAAC+wB,GAAD,CAAcrC,IAAG,OAAE9T,QAAF,IAAEA,OAAF,EAAEA,EAASjZ,OAAQqvB,OAAQU,EAA5C,gBACG9W,QADH,IACGA,OADH,EACGA,EAAS5a,WAEZ,cAAC+wB,GAAD,CAAcrC,IAAG,OAAEyC,QAAF,IAAEA,OAAF,EAAEA,EAASxvB,OAAQqvB,OAAQU,EAA5C,gBACGP,QADH,IACGA,OADH,EACGA,EAASnxB,WAEZ,cAAC+wB,GAAD,CAAcrC,IAAG,OAAE0C,QAAF,IAAEA,OAAF,EAAEA,EAASzvB,OAAQqvB,OAAQU,EAA5C,gBACGN,QADH,IACGA,OADH,EACGA,EAASpxB,uBC/FnB,SAAS2xB,GAAqB90B,GACnC,IAAMsC,EAAWC,cAEX2L,EAAO9N,aAAY,SAACZ,GAAD,OACvByO,GAAmBzO,EAAOQ,EAAMmO,OAG5B4mB,EAAUxxB,uBACd,SAACif,GACKtU,GACF5L,ExGyCa,SACnB4L,EACA7E,EACA6G,EACAf,GAJmB,MAKf,CACJvN,KAAMH,GACNI,QAAS,CAAE6O,OAAQxC,EAAKC,GAAI9E,WAAU6G,SAAQf,WwG/CtC6lB,CAAM9mB,EAAsBsU,EAAKnZ,SAAUmZ,EAAKtS,OAAQsS,EAAKyP,WAInE,CAAC3vB,EAAU4L,IAGb,OAAOA,EACL,qCACE,cAAC4kB,GAAD,CAEE5kB,KAAMA,GADD,6BAA+BlO,EAAMmO,IAG5C,cAACkmB,GAAD,CAA4BnmB,KAAMA,EAAM0mB,QAASG,IACjD,cAAChB,GAAD,CAA2B7lB,KAAMA,OAGnC,gDCpCG,SAAS+mB,GAAqBj1B,GACnC,OACE,qCACGA,EAAMkO,KAAKmB,UAAU7G,KAAI,SAAC+X,EAAMzP,GAAP,OACxB,qBAAIlO,UAAU,gBAAd,UACE,6BAAK2d,EAAKpR,SACV,oBAAIkP,QAAS,EAAb,SACE,qBAAKzb,UAAU,sBAAf,SACE,cAACuG,GAAD,CAAcE,SAAUkX,EAAKlX,iBAJAyH,MASpC9Q,EAAMkO,KAAKsB,UAAUhH,KAAI,SAAC+X,EAAMzP,GAAP,OACxB,qBAAIlO,UAAU,gBAAd,UACE,oBAAIyb,QAAS,EAAb,SACE,qBAAKzb,UAAU,sBAAf,SACE,cAACuG,GAAD,CAAcE,SAAUkX,EAAKlX,eAGjC,6BAAKkX,EAAKpR,WANuB2B,SCJpC,SAASokB,GAAqBl1B,GAAe,IAAD,MACjD,OACE,qCACE,qBAAI4C,UAAU,qBAAd,UACE,6BAAKwM,GAAkB,EAAGpP,EAAMkO,QAChC,6BACE,gCACE,uBAAMtL,UAAU,QAAhB,UAAyB5C,EAAMkO,KAAKI,YAApC,QACC,UAAAtO,EAAMkO,YAAN,eAAYyC,iBACX,qCACE,cAAC,KAAD,CAAiB7G,KAAM8W,OAAuB,IAC9C,cAACzX,GAAD,CACEE,SAAQ,UAAErJ,EAAMkO,YAAR,aAAE,EAAYyC,gBACtB/N,UAAW,2CACV,IACH,cAAC,GAAD,CAAc4L,SAAUxO,EAAMkO,KAAKM,cAGrC,qCACE,cAACrF,GAAD,CACEE,SAAQ,UAAErJ,EAAMkO,YAAR,aAAE,EAAYO,eACtB7L,UAAW,yBACV,IACH,cAAC,GAAD,CAAc4L,SAAUxO,EAAMkO,KAAKM,cAGvC,sBAAM5L,UAAU,SAAhB,SAA0B5C,EAAMkO,KAAKK,mBAGzC,6BAAKgB,GAAkB,EAAGvP,EAAMkO,WAElC,cAAC+mB,GAAD,CAAsB/mB,KAAMlO,EAAMkO,UCtCjC,SAASinB,GAAwBn1B,GACtC,IAAM4Q,EAAczJ,mBAClB,iCAAMnH,QAAN,IAAMA,GAAN,UAAMA,EAAOmU,eAAb,iBAAM,EAAgBjG,YAAtB,aAAM,EAAsBrF,OAAOuG,GAAmB,KACtD,CAACpP,EAAMmU,QAAQjG,OAEX2C,EAAc1J,mBAClB,iCAAMnH,QAAN,IAAMA,GAAN,UAAMA,EAAOmU,eAAb,iBAAM,EAAgBjG,YAAtB,aAAM,EAAsBrF,OAAO0G,GAAmB,KACtD,CAACvP,EAAMmU,QAAQjG,OAGjB,OACE,qBAAItL,UAAU,sBAAd,UACE,6BAAKgO,IACL,uCACA,6BAAKC,OCfJ,SAASukB,GAAsBp1B,GACpC,IAAMyN,EAAQrN,aAAY,SAACZ,GAAD,OACxB2F,GAAgB3F,EAAOQ,EAAMmU,QAAQ1G,UAEjCC,EAAQtN,aAAY,SAACZ,GAAD,OACxB2F,GAAgB3F,EAAOQ,EAAMmU,QAAQzG,UAGvC,OACE,oBAAI9K,UAAU,uBAAd,SACE,oBAAIyb,QAAS,EAAb,SACE,uBAAOzb,UAAU,2BAAjB,SACE,gCACE,+BACE,oBAAIA,UAAW,4BAAf,SAA6C6K,IAC7C,oBAAI7K,UAAW,cAAf,yBACA,oBAAIA,UAAW,2BAAf,SAA4C8K,eCbnD,SAAS2nB,GAAiBr1B,GAAe,IAAD,IAC7C,OACE,mCACE,wBAAO4C,UAAU,gBAAjB,UACE,gCACE,+BACE,oBAAIA,UAAU,0BACd,uBACA,oBAAIA,UAAU,+BAGlB,kCACE,cAACwc,GAAD,eAA4Bpf,IAC5B,cAACo1B,GAAD,eAA2Bp1B,IAF7B,OAGGA,QAHH,IAGGA,GAHH,UAGGA,EAAOmU,eAHV,iBAGG,EAAgBjG,YAHnB,aAGG,EAAsB1F,KAAI,SAAC0F,GAAD,OACzB,cAACgnB,GAAD,CAAsBhnB,KAAMA,GAAWA,EAAKC,OAE9C,cAACgnB,GAAD,eAA6Bn1B,YCpBhC,SAASs1B,GAAWt1B,GAAe,IAAD,EACPM,oBAAS,GADF,mBAChCkO,EADgC,KACtB+mB,EADsB,KAEvC,OACE,qCACE,qBAAI3yB,UAAU,kBAAd,uBAEE,cAACoiB,GAAA,EAAD,CACEhI,KAAK,QACLiI,QAASzW,EACTzK,SAAU,kBAAMwxB,GAAa/mB,SAGhCA,EACC,cAAC6mB,GAAD,eAAsBr1B,IAEtB,cAACohB,GAAD,eAAuBphB,O,cCGxB,SAASw1B,KAAoB,IAAD,EAC3BlzB,EAAWC,cACXiH,EAAUC,cAEVgsB,EAAUr1B,YAAY2M,IACtBpD,EAAWvJ,YAAYgN,IACvBmiB,EAAcnvB,YAAYuN,IAC1B+nB,EAAkBrnB,GAAYjO,YAAYgO,KAPf,EASL9N,mBAAS,MATJ,mBAS1Bq1B,EAT0B,KASlBC,EATkB,KAW3BC,EAAS53B,OAAO63B,WAAW,2CAEjCh1B,qBAAU,WACH6I,EAASC,WACZJ,EAAQrK,KAAK,UAEd,CAACqK,EAASG,IAEb7I,qBAAU,WACF,OAAN60B,QAAM,IAANA,KAAQI,QAAQN,KACf,CAACE,EAAQF,IAEZ30B,qBAAU,WACJ40B,IAAoBnG,GACtBjtB,EtBhCwB,CAC5BV,KAAMH,OsBiCH,CAACa,EAAUitB,EAAamG,IAE3B50B,qBAAU,WACJyuB,IAAgBmG,GAClBpzB,EtBnC+B,CACnCV,KAAMH,OsBoCH,CAACa,EAAUitB,EAAamG,IAO3B,OACE,eAAC,KAAD,CACEM,aAAc,GACdC,cAAe,EACfC,SAAUN,EACVO,cAVkB,SAACR,GACrBrzB,EAAS+O,GAAWskB,EAAOS,eAUzBC,aARiB,SAACV,KASlBW,WAAiB,OAANT,QAAM,IAANA,OAAA,EAAAA,EAAQU,SAAU,GAAK,IAClCC,YAAU,EACVt1B,MAAO,CAAEqe,OAAQ,OAAQkX,UAAW,QARtC,iBAUG9sB,QAVH,IAUGA,GAVH,UAUGA,EAAUuE,YAVb,aAUG,EAAgB1F,KAAI,SAAC0F,GAAD,OACnB,cAAC,KAAD,UACE,cAAC4mB,GAAD,CAAsB3mB,GAAID,EAAKC,MADfD,EAAKC,OAIxBxE,EAASC,WACR,qCACE,cAAC,KAAD,UACE,cAAConB,GAAD,KADe,WAGjB,cAAC,KAAD,UACE,cAACsE,GAAD,CAAYnhB,QAASxK,KADN,YAGjB,cAAC,KAAD,UACE,cAACqa,GAAD,CAA2B7P,QAASxK,KADrB,SAGjB,cAAC,KAAD,UACE,cAACsa,GAAD,CAAoBta,SAAUA,KADf,e,cC/EpB,SAAS+sB,KAAc,IACpB9xB,EAAOyF,cAAPzF,GACF7C,EAAO3B,aAAY,SAACZ,GAAD,O3DbD,SAACA,EAAkBsF,GAAnB,yBACxBtF,EAAMgG,aADkB,iBACxB,EAAawR,aADW,aACxB,EAAoBnS,MAAK,SAACiT,GAAD,OAAaA,EAAEhT,SAAWA,K2DYJ3C,CAAW3C,EAAO8K,OAAO1F,OAExE,OAAO7C,EACL,cAAC40B,GAAD,CAAoB50B,KAAMA,IAE1B,iDAOJ,SAAS40B,GAAmB32B,GAAe,IAAD,YAClCumB,EAAS7gB,KACTpD,EAAWC,cAFuB,EAIdjC,oBAAS,GAJK,mBAIjCopB,EAJiC,KAI1BC,EAJ0B,KAMlCrmB,EAAeC,uBACnB,SAAC3C,GAAY,IAAD,EACcA,EAAE4C,OAAlBC,EADE,EACFA,KAAMC,EADJ,EACIA,MACdpB,EACE2U,GAAe,2BACVjX,EAAM+B,MADG,mBAEX0B,EAAOC,MAGZimB,GAAS,KAEX,CAACrnB,EAAUtC,EAAM+B,OAGb60B,EAAmBrzB,uBACvB,SAAC3C,GAAY,IAAD,EACgBA,EAAE4C,OAApBC,EADE,EACFA,KAAMwhB,EADJ,EACIA,QACd3iB,EACE2U,GAAe,2BACVjX,EAAM+B,MADG,mBAEX0B,EAAOwhB,MAGZ0E,GAAS,KAEX,CAACrnB,EAAUtC,EAAM+B,OAEb6nB,EAAOrmB,uBACX,SAAC3C,GnGnDqB,IAACmB,EmGoDrBO,GnGpDqBP,EmGoDD/B,EAAM+B,KnGpDW,CACzCH,KAAMH,GACNI,QAASE,KmGmDL4nB,GAAS,KAEX,CAACrnB,EAAUtC,EAAM+B,OAGnB,OACE,qCACE,qDACA,uBAAM+nB,YAAU,EAACC,aAAa,MAAMnnB,UAAW2jB,EAAO1gB,KAAtD,UACE,cAACkgB,GAAA,EAAD,CACEnhB,GAAG,YACHnB,KAAK,YACL6D,MAAM,UACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAE1D,QAAF,IAAEA,GAAF,UAAEA,EAAO+B,YAAT,aAAE,EAAawJ,YAEtB,cAACwa,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,WACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAE1D,QAAF,IAAEA,GAAF,UAAEA,EAAO+B,YAAT,aAAE,EAAayJ,WAEtB,cAACua,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,YACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAE1D,QAAF,IAAEA,GAAF,UAAEA,EAAO+B,YAAT,aAAE,EAAaoB,WAEtB,cAAC4iB,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,WACNpH,QAAQ,WACR0B,KAAK,WACLmC,SAAUT,IAEZ,cAACyiB,GAAA,EAAD,CACEnhB,GAAG,UACHnB,KAAK,UACL6D,MAAM,YACNpH,QAAQ,WACR6D,SAAUT,EACVoD,WAAS,EACThD,MAAK,OAAE1D,QAAF,IAAEA,GAAF,UAAEA,EAAO+B,YAAT,aAAE,EAAagO,UAEtB,cAAC8mB,GAAA,EAAD,CACEpzB,KAAK,SACLwhB,QAAO,OAAEjlB,QAAF,IAAEA,GAAF,UAAEA,EAAO+B,YAAT,aAAE,EAAagT,OACtBhR,SAAU6yB,IAEX,QACD,cAACC,GAAA,EAAD,CACEpzB,KAAK,QACLwhB,QAAO,OAAEjlB,QAAF,IAAEA,GAAF,UAAEA,EAAO+B,YAAT,aAAE,EAAayD,MACtBzB,SAAU6yB,IAEX,QACD,uBACA,cAAC5rB,GAAA,EAAD,CACEpI,UAAW2jB,EAAO1gB,KAClB3F,QAAQ,YACRmB,MAAM,UACNwI,QAAS+f,EACT5D,SAAU0D,EACVze,UAAW,cAAC,KAAD,CAAiBnB,KAAM2U,OANpC,uBAUA,cAAC,KAAD,CAAMzb,GAAI,eAAV,SACE,cAACgI,GAAA,EAAD,CACEpI,UAAW2jB,EAAO1gB,KAClB3F,QAAQ,YACRmB,MAAM,YACN4J,UAAW,cAAC,KAAD,CAAiBnB,KAAMgtB,OAJpC,kCCjIH,SAASC,GAAoB/2B,GAClC,IAAMsC,EAAWC,cACXiH,EAAUC,cAEVutB,EAAa52B,YAAY4N,IAEzBme,EAAQ5oB,uBAAY,WACxBjB,EAASoP,GAAmB9B,OAC5BpG,EAAQrK,KAAK,UACZ,CAACqK,EAASlH,IAEb,OACE,mCACE,cAAC0pB,GAAD,CACE3qB,MAAM,YACNwqB,KAAMM,EACNlhB,UAAW,cAAC,KAAD,CAAiBnB,KAAMmc,OAClCsF,WACE,yFAEFc,YAAa2K,EAPf,SASGh3B,EAAMiE,aCvBR,SAASgzB,GAAaj3B,GAG3B,OAFaI,YAAY+B,IAGvBnC,EAAMiE,SACJjE,EAAMyF,OACR,6BAEA,6DCFG,SAASyxB,KAAgB,IACtBtyB,EAAOyF,cAAPzF,GACFwQ,EAAShV,aAAY,SAACZ,GAAD,O9DLD,SAACA,EAAkBgO,GAAnB,uBAC1BhO,EAAM0V,QAAQxQ,YADY,aAC1B,EAAoBG,MAAK,SAACiT,GAAD,OAAeA,EAAEtK,WAAaA,K8DKrDkZ,CAAalnB,EAAO8K,OAAO1F,OAG7B,OAAOwQ,EACL,cAAC+hB,GAAD,CAAsB/hB,OAAQA,IAE9B,iDAOJ,SAAS+hB,GAAqBn3B,GAAe,IAAD,IACpCumB,EAAS7gB,KACTpD,EAAWC,cAFyB,EAIhBjC,oBAAS,GAJO,mBAInCopB,EAJmC,KAI5BC,EAJ4B,KAMpCrmB,EAAeC,uBACnB,SAAC3C,GAAY,IAAD,EACcA,EAAE4C,OAAlBC,EADE,EACFA,KAAMC,EADJ,EACIA,MACdpB,EACE6S,GAAU,2BACLnV,EAAMoV,QADF,mBAEN3R,EAAOC,MAGZimB,GAAS,KAEX,CAACrnB,EAAUtC,EAAMoV,SAEbwhB,EAAmBrzB,uBACvB,SAAC3C,GAAY,IAAD,EACgBA,EAAE4C,OAApBC,EADE,EACFA,KAAMwhB,EADJ,EACIA,QACd3iB,EACE6S,GAAU,2BACLnV,EAAMoV,QADF,mBAEN3R,EAAOwhB,MAGZ0E,GAAS,KAEX,CAACrnB,EAAUtC,EAAMoV,SAEbwU,EAAOrmB,uBACX,SAAC3C,G7G7CuB,IAACwU,E6G8CvB9S,G7G9CuB8S,E6G8CDpV,EAAMoV,O7G9Ce,CAC/CxT,KAAMH,GACNI,QAASuT,K6G6CLuU,GAAS,KAEX,CAACrnB,EAAUtC,EAAMoV,SAGnB,OACE,qCACE,kDACA,uBAAM0U,YAAU,EAACC,aAAa,MAAMnnB,UAAW2jB,EAAO1gB,KAAtD,UACE,cAACkgB,GAAA,EAAD,CACEnhB,GAAG,OACHnB,KAAK,OACL6D,MAAM,aACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAE1D,QAAF,IAAEA,GAAF,UAAEA,EAAOoV,cAAT,aAAE,EAAe3R,OAExB,cAACozB,GAAA,EAAD,CACEpzB,KAAK,SACLwhB,QAAO,OAAEjlB,QAAF,IAAEA,GAAF,UAAEA,EAAOoV,cAAT,aAAE,EAAeL,OACxBhR,SAAU6yB,IAEX,QACD,uBACA,cAAC5rB,GAAA,EAAD,CACEpI,UAAW2jB,EAAO1gB,KAClB3F,QAAQ,YACRmB,MAAM,UACNwI,QAAS+f,EACT5D,SAAU0D,EACVze,UAAW,cAAC,KAAD,CAAiBnB,KAAM2U,OANpC,uBAUA,cAAC,KAAD,CAAMzb,GAAI,iBAAV,SACE,cAACgI,GAAA,EAAD,CACEpI,UAAW2jB,EAAO1gB,KAClB3F,QAAQ,YACRmB,MAAM,YACN4J,UAAW,cAAC,KAAD,CAAiBnB,KAAMgtB,OAJpC,kCC5FH,SAASM,KACd,IAAM90B,EAAWC,cAEXoH,EAAWvJ,YAAYgN,IAEvBqoB,EAAUr1B,YAAY2M,IAE5B,OACE,sBAAKnK,UAAU,yBAAf,UACE,cAAC6qB,GAAD,CACEI,OAAQ,EACR7H,SAAsB,IAAZyP,EACV7H,YAAY,EACZjhB,OAAQ,kBAAMrK,EAAS+O,GAAWokB,EAAU,KAJ9C,sBAKO,QAIP,cAAChI,GAAD,CACEI,OAAQ,EACR7H,SAAUyP,IAAY9rB,EAASuE,KAAK7P,OAAS,EAC7CuvB,YAAY,EACZjhB,OAAQ,kBAAMrK,EAAS+O,GAAWokB,EAAU,KAJ9C,mBAKO,cC1BN,SAAS4B,GAAOr3B,GACrB,OAAO,qBAAK4C,UAAU,0BAAf,SAA0C5C,EAAMiE,WCSlD,SAASqzB,GAAat3B,GAC3B,IAAMwK,EAAU9E,KAEVnB,EAASnE,aAAY,SAACZ,GAAD,OACzBmF,GAAanF,EAAOQ,EAAMqJ,aAGtBhF,EAAO,MAAI/F,GAAJ,mBAAkB8B,YAAYqE,MAErC8yB,EAAkBh0B,uBACtB,SAAC3C,GAAD,OAAYZ,EAAMw3B,UAAUltB,OAAO1J,EAAE4C,OAAOE,UAC5C,CAAC1D,IAGH,OAAOA,EAAMy3B,YACX,wBAAQ70B,UAAW4H,EAAQ7D,KAA3B,SACG3B,GAAYT,IADf,OAAsCA,QAAtC,IAAsCA,OAAtC,EAAsCA,EAAQO,QAI9C,mCACE,wBACElC,UAAU,kBACVmB,SAAUwzB,EACV7zB,MAAK,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAQO,OAHjB,SAKGT,EAAQmE,KAAI,SAACC,GAAD,aACX,wBAAqC/E,MAAK,OAAE+E,QAAF,IAAEA,OAAF,EAAEA,EAAG3D,OAA/C,SACGE,GAAYyD,IADf,iBAAaA,QAAb,IAAaA,OAAb,EAAaA,EAAG3D,cAAhB,QAA0B,kBChC7B,SAAS4yB,GAAQ13B,GAAe,IAAD,EAC9BwK,EAAU9E,KAEhB,OAAO1F,EAAMy3B,YACX,wBAAQ70B,UAAW4H,EAAQ7D,KAA3B,mBACG3G,EAAM0kB,QAAQ7f,MAAK,SAAC8yB,GAAD,OAAOA,EAAEj0B,QAAU1D,EAAM0D,gBAD/C,aACG,EAAoD4D,OADjBtH,EAAM0D,OAI5C,mCACE,wBACED,KAAMzD,EAAMyD,KACZb,UAAW5C,EAAM4C,UACjBmB,SAAU/D,EAAMonB,SAChB1jB,MAAO1D,EAAM0D,MAJf,SAMG1D,EAAM0kB,QAAQlc,KAAI,SAACC,GAAD,aACjB,wBAAoC/E,MAAK,OAAE+E,QAAF,IAAEA,OAAF,EAAEA,EAAG/E,MAA9C,SACG+E,EAAEnB,OADL,iBAAamB,QAAb,IAAaA,OAAb,EAAaA,EAAG/E,aAAhB,QAAyB,kBCjBnC,IAAMk0B,GAAc,CAClB,CAAEl0B,MAAO,KAAM4D,MAAO,QACtB,CAAE5D,MAAO,IAAM4D,MAAO,QACtB,CAAE5D,MAAO,KAAM4D,MAAO,QACtB,CAAE5D,MAAO,IAAM4D,MAAO,QACtB,CAAE5D,MAAO,IAAM4D,MAAO,SAQjB,SAASuwB,GAA+B73B,GAAe,IAAD,kCACrDsD,EAAeC,uBACnB,SAAC3C,GAAY,IAAD,EACcA,EAAE4C,OAAlBC,EADE,EACFA,KAAMC,EADJ,EACIA,MACd1D,EAAM83B,OAAN,gBAAgBr0B,EAAOC,MAEzB,CAAC1D,IAEH,OACE,qBAAK4C,UAAU,mBAAf,SACE,sBAAKA,UAAU,UAAf,UACE,qBAAKA,UAAU,2BAAf,SACE,cAAC00B,GAAD,CACEjuB,SAAQ,UAAErJ,EAAM2J,gBAAR,iBAAE,EAAgB8D,aAAlB,aAAE,EAAuBpI,UACjCmyB,UAAW,SAACnuB,GAAD,OAAcrJ,EAAM+3B,aAAa,EAAGztB,OAAOjB,KACtDouB,YAAanrB,QAAQtM,EAAM2J,SAASC,YAHtC,UAIO5J,EAAM2J,gBAJb,iBAIO,EAAgB8D,aAJvB,aAIO,EAAuBpI,aAGhC,qBAAKzC,UAAU,YAAf,SACE,cAAC00B,GAAD,CACEjuB,SAAQ,UAAErJ,EAAM2J,gBAAR,iBAAE,EAAgB+D,aAAlB,aAAE,EAAuBrI,UACjCmyB,UAAW,SAACnuB,GAAD,OAAcrJ,EAAM+3B,aAAa,EAAGztB,OAAOjB,KACtDouB,YAAanrB,QAAQtM,EAAM2J,SAASC,YAHtC,UAIO5J,EAAM2J,gBAJb,iBAIO,EAAgB+D,aAJvB,aAIO,EAAuBrI,aAGhC,qBAAKzC,UAAU,YAAf,SACE,cAAC00B,GAAD,CACEjuB,SAAQ,UAAErJ,EAAM2J,gBAAR,iBAAE,EAAgB8D,aAAlB,aAAE,EAAuBnI,UACjCkyB,UAAW,SAACnuB,GAAD,OAAcrJ,EAAM+3B,aAAa,EAAGztB,OAAOjB,KACtDouB,YAAanrB,QAAQtM,EAAM2J,SAASC,YAHtC,UAIO5J,EAAM2J,gBAJb,iBAIO,EAAgB8D,aAJvB,aAIO,EAAuBnI,aAGhC,qBAAK1C,UAAU,YAAf,SACE,cAAC00B,GAAD,CACEjuB,SAAQ,UAAErJ,EAAM2J,gBAAR,iBAAE,EAAgB+D,aAAlB,aAAE,EAAuBpI,UACjCkyB,UAAW,SAACnuB,GAAD,OAAcrJ,EAAM+3B,aAAa,EAAGztB,OAAOjB,KACtDouB,YAAanrB,QAAQtM,EAAM2J,SAASC,YAHtC,UAIO5J,EAAM2J,gBAJb,iBAIO,EAAgB+D,aAJvB,aAIO,EAAuBpI,aAGhC,sBAAM1C,UAAU,SAAhB,SACE,cAAC,KAAD,CAAiBkH,KAAMkuB,SAEzB,sBAAMp1B,UAAU,SAAhB,SACE,cAAC,KAAD,CAAiBkH,KAAMkuB,SAEzB,sBAAMp1B,UAAU,SAAhB,SACE,cAAC,KAAD,CAAiBkH,KAAMkuB,SAEzB,sBAAMp1B,UAAU,SAAhB,SACE,cAAC,KAAD,CAAiBkH,KAAMkuB,SAEzB,qBAAKp1B,UAAU,iBAAf,SACE,cAAC80B,GAAD,CACEh0B,MAAK,UAAE1D,EAAM2J,gBAAR,aAAE,EAAgB4D,WACvB9J,KAAM,aACN2jB,SAAU9jB,EACVm0B,YAAanrB,QAAQtM,EAAM2J,SAASC,WAEpC8a,QAASkT,GACTh1B,UAAW,mBAFN,qB,cCxEV,SAASq1B,GAAqBj4B,GAAe,IAAD,EAC3CumB,EAAS7gB,KAETpC,EAAeC,uBACnB,SAAC3C,GAAY,IAAD,EACcA,EAAE4C,OAAlBC,EADE,EACFA,KAAMC,EADJ,EACIA,MACd1D,EAAM83B,OAAN,gBAAgBr0B,EAAOC,MAEzB,CAAC1D,IAGH,OACE,mCACE,sBAAM8pB,YAAU,EAACC,aAAa,MAAMnnB,UAAW2jB,EAAO1gB,KAAtD,SACE,sBAAKjD,UAAU,gBAAf,UACE,cAACmjB,GAAA,EAAD,CACE7R,QAAM,EACNzQ,KAAK,WAEL6D,MAAM,SACN1E,UAAW2jB,EAAOngB,kBAClBlG,QAAQ,WACRg4B,YAAY,SACZlS,SAAU1Z,QAAQtM,EAAM2J,SAASC,WACjClG,MAAO1D,EAAM2J,SAAS6D,SACtBzJ,SAAUT,EAVZ,mBAYGtD,EAAMkV,eAZT,aAYG,EAAe1M,KAAI,SAAC4M,GAAD,OAClB,cAAC+iB,GAAA,EAAD,CAAUz0B,MAAO0R,EAAO5H,SAAxB,SACG4H,EAAO3R,MAD6B2R,EAAO5H,cAV5C,YAeN,cAACuY,GAAA,EAAD,CACEnhB,GAAG,UACHnB,KAAK,UAEL6D,MAAM,YACNpH,QAAQ,WACR8lB,SAAU1Z,QAAQtM,EAAM2J,SAASC,WACjC7F,SAAUT,EACVoD,WAAS,EACThD,MAAO1D,EAAM2J,SAASoG,SANlB,kBCnCT,SAASqoB,KACd,IAAM91B,EAAWC,cACXoH,EAAWvJ,YAAYgN,IACvB8H,EAAU9U,YAAY+lB,IAE5BrlB,qBAAU,WAEwC,IAAD,GAA1C6I,EAAS6D,WAAmB,OAAP0H,QAAO,IAAPA,OAAA,EAAAA,EAAS7W,QAAS,GAC1CiE,EACE6tB,GAA8B,CAAE3iB,SAAQ,UAAE0H,EAAQ,UAAV,aAAE,EAAY1H,cAGzD,CAAClL,EAAUqH,EAAUuL,IAExBpU,qBAAU,WACRwB,EAASkC,QACR,CAAClC,IAEJ,IAAMw1B,EAAS,SAACO,GAAD,OAAe/1B,EAAS6tB,GAA8BkI,KAGrE,OACE,qCACE,cAACR,GAAD,CACEluB,SAAUA,EACVmuB,OAAQA,EACRC,aAPY,SAACxzB,EAAgB8E,GAAjB,OAChB/G,EjC5B6B,SAACiC,EAAgB8E,GAAjB,MAAuC,CACtEzH,KAAMH,EACNI,QAAS,CAAE0C,SAAQ8E,aiC0BRivB,CAAkB/zB,EAAQ8E,OAQjC,cAAC4uB,GAAD,CACEtuB,SAAUA,EACVmuB,OAAQA,EACR5iB,QAASA,OC9BV,SAASqjB,KAAwB,IAAD,EAC/Bj2B,EAAWC,cAEXoH,EAAWvJ,YAAYgN,IACvBorB,EAAoBp4B,YAAYkN,IAEhCmrB,EAAkBr4B,aAAY,SAACZ,GAAD,aAClCuF,GAAkBvF,EAAD,OAAQmK,QAAR,IAAQA,GAAR,UAAQA,EAAU8D,aAAlB,aAAQ,EAAiBpI,cAGtCqzB,EAAQn1B,uBAAY,WACxBjB,ElCV4B,CAC9BV,KAAMH,OkCUH,CAACa,IAEJ,OACE,qCACG,OAACqH,QAAD,IAACA,OAAD,EAACA,EAAUC,YACV,sBAAKhH,UAAU,YAAf,UACE,cAAC6qB,GAAD,CACEI,OAAQ2K,EAAoB,EAAI,EAChCxS,UAAWwS,EACX7rB,OAAQ+rB,EAHV,SAMGF,GACW,OAAR7uB,QAAQ,IAARA,GAAA,UAAAA,EAAU8D,aAAV,eAAiBpI,YAAaozB,EAAkB,aAChD,sBAJC,QAMND,GACC,eAAC/K,GAAD,CACEI,OAAQ,EACR7H,UAAWwS,EACX7K,UAAW6K,EACX7rB,OAAQ+rB,EAJV,wBAOa,cAAC,KAAD,CAAiB5uB,KAAM4lB,SAF7B,gBC5BZ,SAASiJ,KACd,IAAMr2B,EAAWC,cACXoH,EAAWvJ,YAAYgN,IAEvBqoB,EAAUr1B,YAAY2M,IACtBmB,EAAO9N,aAAY,SAACZ,GAAD,OACvByO,GAAmBzO,EAAOi2B,EAAU,MAEhCmD,EAASx4B,YAAYuN,IACrBkrB,EAAQxqB,GAAYH,GACpB4qB,EAAU3xB,mBAAQ,WACtB,OAAIsuB,GAAW9rB,EAASuE,KAAK7P,OAAS,EAChCw6B,EACK,CAAEE,EAAG,gBAAiBC,EAAG,SAE3B,CAAED,EAAG,6BAA2BC,EAAG,QAExCvD,IAAY9rB,EAASuE,KAAK7P,QAAWu6B,EAGrCnD,EAAU9rB,EAASuE,KAAK7P,OACnB,CAAE06B,EAAG,qBAAsBC,EAAG,aADvC,EAFS,CAAED,EAAG,qBAAsBC,EAAG,UAMtC,CAACJ,EAAQjvB,EAASuE,KAAK7P,OAAQo3B,EAASoD,IAErCI,EAAc11B,uBAClB,kBAAMjB,EAAS+O,GAAW1H,EAASuE,KAAK7P,OAAS,MACjD,CAACiE,EAAUqH,EAASuE,KAAK7P,SAE3B,OACE,mCACGy6B,GACC,qBAAKl2B,UAAU,YAAf,SACE,eAAC6qB,GAAD,CACEI,OAAQ,EACRlhB,OAAQssB,EAERrL,YAAU,EAJZ,UAMiB,SAAdkL,EAAQE,GACP,qCACE,cAAC,KAAD,CAAiBlvB,KAAMovB,OADzB,OAGE,cAAC,KAAD,CAAiBpvB,KAAMovB,OAHzB,OAKE,cAAC,KAAD,CAAiBpvB,KAAMqvB,OALzB,UASDL,EAAQC,EACM,UAAdD,EAAQE,GACP,4CAEE,cAAC,KAAD,CAAiBlvB,KAAMqvB,OAFzB,OAIE,cAAC,KAAD,CAAiBrvB,KAAMmkB,OAJzB,OAME,cAAC,KAAD,CAAiBnkB,KAAMmkB,YArBtB,YCrDV,IAAMmL,GAAW,kBACtB,qCACE,2CACA,eAAC7zB,GAAD,WACE,yBAAQrE,MAAO,CAAE4F,UAAW,SAAUiqB,QAAS,SAA/C,iDAEE,uBAFF,oDAKA,uBAEA,cAACzG,GAAD,WCHO+O,GAAQ,SAACr5B,GACpB,IAAMsC,EAAWC,cACT+2B,EAAWx2B,cAAXw2B,OAEFC,EAAO3c,IAAMzV,SAAQ,WAKzB,IAJA,IAAM0P,EAAsB,GACtB2F,EAAS,IAAIgd,gBAAgBF,GAC7BG,EAAOjd,EAAOid,OAChBze,EAAMye,EAAKC,OACR1e,EAAItX,OACTmT,EAAOmE,EAAItX,OAAS8Y,EAAOF,IAAItB,EAAItX,OACnCsX,EAAMye,EAAKC,OAEb,OAAO7iB,IACN,CAACyiB,IAKJ,OAHAx4B,qBAAU,WACRwB,EAASZ,GAAY63B,MACpB,CAACA,EAAMj3B,IACH,mCAAGtC,EAAMiE,YCwLH01B,OA9JR,SAAiB35B,GACtB,IAAM45B,EAAY77B,IACZgE,EAAO3B,YAAY+B,IACnB4J,EAAO3L,YAAYyL,IAEnBvJ,EAAWC,cACjBzB,qBAAU,WAAO,IAAD,EACViB,IAAY,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMmD,iBAAN,eAAiB3G,kBAAjB,OAAmCq7B,QAAnC,IAAmCA,OAAnC,EAAmCA,EAAWr7B,gBACxD+D,EAASL,MAEV,CAACK,EAAUs3B,EAAW73B,EAAtB,OAA4BA,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAMmD,YAErCpE,qBAAU,WACRwB,EAASgT,MACLvT,GACFO,EAASkC,QAEV,CAAClC,EAAUP,IAEdjB,qBAAU,WAAO,IAAD,EACdoY,SAAS0a,MAAT,iBAAiB7nB,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAMoR,gBAAvB,QAAmC,aAClC,QAACpR,QAAD,IAACA,OAAD,EAACA,EAAMoR,WArB0B,MAuBA7c,oBAAS,GAvBT,mBAuB7Bu5B,EAvB6B,KAuBjBC,EAvBiB,KAwB9BC,EAASx2B,uBAAY,kBAAMu2B,GAAeD,KAAa,CAACA,IAC9D,OACE,mCACE,cAACrM,GAAD,UACE,eAAC,KAAD,CAAiBhkB,QAASA,GAA1B,UACE,eAACxF,GAAD,WACE,cAACG,GAAD,UAAWnE,EAAM45B,YACjB,cAAC3C,GAAD,CAAcxxB,QAAM,EAApB,SACE,cAACsxB,GAAD,oBAEF,cAACrM,GAAD,CAAYI,QAASiP,IACrB,eAAC1c,GAAD,CAAUC,OAAQuc,EAAYtc,MAAO,kBAAMuc,GAAc,IAAzD,UACE,cAAC51B,GAAD,CAAalB,GAAG,WAAhB,qBACA,cAACkB,GAAD,CAAalB,GAAG,aAAhB,sBACA,cAACkB,GAAD,CAAalB,GAAG,UAAhB,wBACA,cAACkB,GAAD,CAAalB,GAAG,YAAhB,qBACA,cAACuC,GAAD,CAAeE,QAAM,EAArB,SACE,cAACvB,GAAD,CAAalB,GAAG,SAAhB,qBAEF,cAACwa,GAAD,UAGJ,eAAC6Z,GAAD,WACE,cAAC,IAAD,CAAOzrB,KAAK,aAAZ,SACE,cAACwrB,GAAD,MAEF,cAAC,IAAD,CAAOxrB,KAAK,OAAZ,SACE,cAAC2sB,GAAD,MAEF,cAACp4B,EAAD,IACA,cAACkC,GAAD,OAEF,cAACooB,GAAD,CAAMlN,MAAO,kBAAMuc,GAAc,IAAjC,SACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAOluB,KAAK,SAAZ,SACE,cAAC/I,GAAD,MAEF,cAAC8I,GAAD,CAAcC,KAAK,QAAnB,SACE,cAACmhB,GAAD,MAEF,cAAC,IAAD,CAAOnhB,KAAK,SAAZ,SACE,cAACvM,EAAD,MAEF,eAACsM,GAAD,CAAcC,KAAK,WAAnB,UACE,cAAC4gB,GAAD,uBACA,cAACphB,GAAD,OAEF,cAACO,GAAD,CAAcC,KAAK,cAAnB,SACE,cAACxB,GAAD,MAEF,eAACuB,GAAD,CAAcC,KAAK,aAAnB,UACE,cAAC0gB,GAAD,uBACA,cAACtO,GAAD,OAEF,cAACrS,GAAD,CAAcC,KAAK,gBAAnB,SACE,cAACsZ,GAAD,MAEF,cAACvZ,GAAD,CAAcC,KAAK,UAAnB,SACE,cAACyjB,GAAD,MAEF,cAAC1jB,GAAD,CAAcC,KAAK,OAAnB,SACE,cAACwsB,GAAD,MAEF,cAACzsB,GAAD,CAAcC,KAAK,YAAnB,SACE,cAAC4pB,GAAD,MAEF,cAAC7pB,GAAD,CAAcC,KAAK,kBAAnB,SACE,cAACrG,GAAD,UACE,cAACmxB,GAAD,QAGJ,cAAC/qB,GAAD,CAAcC,KAAK,oBAAnB,SACE,cAACrG,GAAD,UACE,cAAC2xB,GAAD,QAGJ,cAACvrB,GAAD,CAAcC,KAAK,cAAnB,SACE,cAACrG,GAAD,UACE,cAAC+kB,GAAD,QAGJ,cAAC3e,GAAD,CAAcC,KAAK,SAAnB,SACE,cAACrG,GAAD,UACE,cAAC+kB,GAAD,QAGJ,cAAC,IAAD,CAAO1e,KAAK,WAAZ,SACE,cAAC,GAAD,UACE,cAAC,IAAD,CACE5I,GAAI,CACFC,SAAU,WAKlB,cAAC,IAAD,CAAO2I,KAAK,SAAZ,SACE,cAAC,GAAD,UACE,cAAC,IAAD,CACE5I,GAAI,CACFC,SAAU,eAKlB,cAAC,IAAD,CAAO2I,KAAK,QAAZ,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOA,KAAK,IAAZ,SACE,cAAC,GAAD,WAIN,cAAC2hB,GAAD,UACE,eAAC,IAAD,WACE,eAAC,IAAD,CAAO3hB,KAAK,aAAZ,UACE,cAAC+sB,GAAD,IACA,cAACzI,GAAD,OAEF,cAAC,IAAD,CAAOtkB,KAAM,SACb,eAAC,IAAD,CAAOA,KAAM,IAAb,UACE,mBAAGqN,KAAMpa,IAAT,SACE,cAAC,KAAD,CAAiBiL,KAAMkwB,SAEzB,sBAAK94B,MAAO,CAAE6vB,QAAS,QAAvB,UACE,6CADF,IAC0B,2ECzM7BkJ,GAAgB,CAC3B1uB,UAAW,QACXrG,UAAW,KACXD,YAAa,QACbH,OAAQ,EACR0G,SAAU,SACVrI,SAAU,QACV4M,QAAS,KACTgF,QAAQ,EACRvP,OAAO,EACP6nB,OAAQ,GACRiD,kBAAmB,QACnB4J,OAAQ,GAEGC,GAAgB,CAC3B5uB,UAAW,QACXrG,UAAW,KACXD,YAAa,QACbH,OAAQ,EACR0G,SAAU,QACVrI,SAAU,QACV4M,QAAS,QACTgF,QAAQ,EACRvP,OAAO,EACP6nB,OAAQ,GACRiD,kBAAmB,QACnB4J,OAAQ,GAEGE,GAAe,CAC1B7uB,UAAW,OACXrG,UAAW,KACXD,YAAa,OACbH,OAAQ,EACR0G,SAAU,SACVrI,SAAU,OACV4M,QAAS,MACTgF,QAAQ,EACRvP,OAAO,EACP6nB,OAAQ,GACRiD,kBAAmB,QACnB4J,OAAQ,GAEGG,GAAgB,CAC3B9uB,UAAW,QACXrG,UAAW,MACXD,YAAa,QACbH,OAAQ,EACR0G,SAAU,eACVrI,SAAU,QACV4M,QAAS,MACTgF,QAAQ,EACRvP,OAAO,EACP6nB,OAAQ,GACRiD,kBAAmB,QACnB4J,OAAQ,GAGGI,GAAgC,CAC3C1wB,UAAW,EACXkG,WAAY,QACZ5B,KAAM,CACJ,CACEC,GAAI,EACJoC,cAAe,EACfjC,YAAa,GACbC,YAAa,GACbc,UAAW,CACT,CACEhG,SAAU,EACV8F,OAAQ,KAGZK,UAAW,GACXf,eAAgB,EAChBD,SAAU,EACVmC,gBAAiB,GAEnB,CACExC,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,CACT,CACEhG,SAAU,EACV8F,OAAQ,KAGZK,UAAW,GACXhB,SAAU,EACVF,YAAa,GACbC,YAAa,KAEf,CACEJ,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,GACXhB,SAAU,EACVF,YAAa,GACbC,YAAa,IAEf,CACEJ,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,GACXhB,SAAU,EACVmC,gBAAiB,EACjBrC,YAAa,GACbC,YAAa,IAEf,CACEJ,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,CACT,CACEhG,SAAU,EACV8F,OAAQ,MAGZK,UAAW,GACXhB,SAAU,EACVF,YAAa,IACbC,YAAa,GAEf,CACEJ,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,CACT,CACEhG,SAAU,EACV8F,OAAQ,MAGZK,UAAW,GACXmB,gBAAiB,EACjBnC,SAAU,EACVF,YAAa,GACbC,YAAa,IAEf,CACEJ,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,GACXhB,SAAU,EACVF,YAAa,GACbC,YAAa,IAEf,CACEJ,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,GACXhB,SAAU,EACVF,YAAa,GACbC,YAAa,IAEf,CACEJ,GAAI,EACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,CACT,CACEnG,SAAU,EACV8F,OAAQ,MAGZX,SAAU,EACVmC,gBAAiB,EACjBrC,YAAa,GACbC,YAAa,KAEf,CACEJ,GAAI,GACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,GACXhB,SAAU,EACVF,YAAa,GACbC,YAAa,IACboC,gBAAiB,GAEnB,CACExC,GAAI,GACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,CACT,CACEnG,SAAU,EACV8F,OAAQ,KAGZX,SAAU,EACVF,YAAa,GACbC,YAAa,IAEf,CACEJ,GAAI,GACJoC,cAAe,EACf9B,eAAgB,EAChBY,UAAW,GACXG,UAAW,GACXhB,SAAU,EACVF,YAAa,IACbC,YAAa,KAGjBhB,WAAY,KACZwC,QAAS,kCACTzB,YAAa,EACbC,YAAa,EACbf,SAAU,EACVC,MAAO,CAAEpI,UAAW80B,GAAMr1B,OAAQQ,UAAW80B,GAAKt1B,QAClD4I,MAAO,CAAErI,UAAWg1B,GAAMv1B,OAAQQ,UAAW20B,GAAMn1B,SCtN9C,SAASy1B,KACd,IAAMj4B,EAAWC,cADQ,EAGVjC,mBAASg6B,IAAjBE,EAHkB,sBAICl6B,mBAAS,GAJV,mBAIlBwQ,EAJkB,KAIX2pB,EAJW,KAMzB35B,qBAAU,WACRwB,EAAS8B,GAAW,CAAC61B,GAAOI,GAAOD,GAAMD,QACxC,CAAC73B,IACJxB,qBAAU,WACR,IAAM45B,EAAWC,aAAY,WAC3BF,GAAS,SAAC3pB,GAAD,OAAYA,EAAQ,GAAK,EAAIA,EAAQ,OAC7C,KACH,OAAO,kBAAM8pB,cAAcF,MAE1B,IAEH,IAAMnW,EAAUpd,mBACd,8BAAC,eAAWqzB,GAAZ,IAAkBtsB,KAAMssB,EAAKtsB,KAAKvP,MAAM,EAAGmS,OAC3C,CAACA,EAAO0pB,IAGV,OACE,qCACE,qBAAKt5B,MAAO,CAAEuF,UAAW,MAAOR,aAAc,OAA9C,SACE,cAAC+d,GAAD,CAA2B7P,QAASoQ,MAEtC,cAACgJ,GAAD,UACE,cAAC,IAAD,CAAO3hB,KAAK,KAAZ,SACE,qBAAKhJ,UAAU,WAAf,SACE,oBACE1B,MAAO,CACL4F,UAAW,OACXhB,OAAQ,OACRqjB,QAAS,SAJb,UAOG5E,EAAQrW,KAAKrF,OAAOuG,GAAmB,GAP1C,eAQG+qB,GAAMl1B,YART,YASGm1B,GAAKn1B,YACN,uBAAM/D,MAAO,CAAEgwB,MAAO,SAAtB,UACGmJ,GAAMp1B,YADT,YAEGg1B,GAAMh1B,YAFT,eAGGsf,EAAQrW,KAAKrF,OAAO0G,GAAmB,kBC1BzCsrB,OArBf,WACE,OACE,qCACE,uBACA,eAAC,KAAD,CAAM73B,GAAG,SAAT,UACE,iEACA,+BACE,cAAC,KAAD,CAAiB8G,KAAM8W,OADzB,oBAKF,uBACA,cAAC,KAAD,CAAM5d,GAAG,UAAT,SACE,kDAEE,cAAC,KAAD,CAAiB8G,KAAMgxB,gBCyLlBC,OAvMf,WAAuB,IAAD,EACIz6B,mBAAS,CAC/B4E,UAAW,GACXiY,SAAU,GACV+c,OAAQ,EACRlQ,SAAU,GACVI,cAAe,GACfH,aAAc,GACdE,gBAAiB,GACjBD,YAAa,GACb8Q,SAAU,GACV53B,SAAU,KAXQ,mBACb2I,EADa,KACP4M,EADO,KAcd4N,EAAS7gB,KACTpD,EAAWC,cAEXe,EAAeC,uBACnB,SAAC3C,GAAY,IAAD,EACcA,EAAE4C,OAAlBC,EADE,EACFA,KAAMC,EADJ,EACIA,MACdiV,EAAQ,2BACH5M,GADE,mBAEJtI,EAAOC,OAGZ,CAACqI,IAGGkvB,EAAuB13B,uBAC3B,SAAC3C,GAAD,OACE+X,EAAQ,2BACH5M,GADE,IAELie,SAAUppB,EAAE4C,OAAOE,MACnByZ,SACEpR,EAAKoR,WAAavc,EAAE4C,OAAOE,MAAMw3B,UAAU,EAAGnvB,EAAKoR,SAAS9e,QACxDuC,EAAE4C,OAAOE,MACTqI,EAAKoR,cAEf,CAACpR,IAGG6d,EAAOrmB,uBACX,SAAC3C,GACC0B,EjH7CyB,SAACyJ,GAAD,MAAgB,CAC7CnK,KAAMH,GACNI,QAAS,CAAEkK,SiH2CEovB,CAAgBpvB,MAE3B,CAACzJ,EAAUyJ,IAGPqvB,EAAgBj0B,mBAAQ,wBAAM,UAAA4E,EAAKie,gBAAL,eAAe3rB,QAAS,IAAG,CAAC0N,IAC1DsvB,EAAgBl0B,mBAAQ,wBAAM,UAAA4E,EAAKoR,gBAAL,eAAe9e,QAAS,IAAG,CAAC0N,IAC1DuvB,EAAen0B,mBACnB,mBAAO4E,EAAK7G,UAAUq2B,MAAM,kBAC5B,CAACxvB,IAEGyvB,EAAiBr0B,mBACrB,0BACE,UAAA4E,EAAK7G,iBAAL,eAAgB7G,QAAS,IACzB,UAAA0N,EAAK7G,iBAAL,eAAgB7G,QAAS,KACxBi9B,IAEH,CAACvvB,IAEG0vB,EAAgBt0B,mBAAQ,wBAAM,UAAA4E,EAAKivB,gBAAL,eAAe38B,QAAS,IAAG,CAAC0N,IAC1D2vB,EAAgBv0B,mBAAQ,wBAAM,UAAA4E,EAAK3I,gBAAL,eAAe/E,QAAS,IAAG,CAAC0N,IAE1D8sB,EAAQ1xB,mBACZ,kBACEi0B,GACAC,GACAG,GACAC,GACAC,IACF,CAACN,EAAeC,EAAeK,EAAeF,EAAgBC,IAG1DE,EAAax0B,mBACjB,wBACEm0B,EACI,oBACA98B,GAAgB,UAAAuN,EAAK7G,iBAAL,eAAgB7G,QAAS,EAAI0N,EAAK7G,UAAY,SACpE,CAAC6G,EAAK7G,UAAWo2B,IAGnB,OACE,qCACE,6CACA,uBAAMxR,YAAU,EAACC,aAAa,MAAMnnB,UAAW2jB,EAAO1gB,KAAtD,UACE,cAACkgB,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,cACNs0B,WAAW,+BACXC,OAAQT,EACRl7B,QAAQ,WACR6D,SAAUk3B,EACVv3B,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMie,SACb8R,WAAY,CAAEC,UAAW,IAAKC,UAAW,KAE3C,cAACjW,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,mBACNu0B,OAAQR,EACRn7B,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMoR,SACb2e,WAAY,CAAEC,UAAW,IAAKC,UAAW,KAE3C,cAACjW,GAAA,EAAD,CACEnhB,GAAG,YACHnB,KAAK,YACL6D,MAAM,WACNs0B,WAAYD,EACZE,OAAQL,EACRt7B,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAM7G,UACb42B,WAAY,CAAEC,UAAW,GAAIC,UAAW,KAE1C,uBACA,sDACA,cAACjW,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,eACNs0B,WAAYH,EAAgB,GAAK,sBACjCI,OAAQJ,EACRv7B,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMivB,SACbc,WAAY,CAAEC,UAAW,MAE3B,cAAChW,GAAA,EAAD,CACEnhB,GAAG,WACHnB,KAAK,WACL6D,MAAM,WACNs0B,WAAYF,EAAgB,GAAK,sBACjCG,OAAQH,EACRx7B,QAAQ,WACR0B,KAAK,WACLmC,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAM3I,SACb04B,WAAY,CAAEC,UAAW,MAE3B,uBACA,6CACA,cAAChW,GAAA,EAAD,CACEnhB,GAAG,gBACHnB,KAAK,gBACL6D,MAAM,UACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMqe,cACb0R,WAAY,CAAEC,UAAW,OAE3B,cAAChW,GAAA,EAAD,CACEnhB,GAAG,eACHnB,KAAK,eACL6D,MAAM,QACNpH,QAAQ,WACR0B,KAAK,QACLmC,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMke,aACb6R,WAAY,CAAEC,UAAW,MAE3B,cAAChW,GAAA,EAAD,CACEnhB,GAAG,kBACHnB,KAAK,kBACL6D,MAAM,WACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMoe,gBACb2R,WAAY,CAAEC,UAAW,MAE3B,cAAChW,GAAA,EAAD,CACEnhB,GAAG,cACHnB,KAAK,cACL6D,MAAM,UACNpH,QAAQ,WACR6D,SAAUT,EACVI,MAAK,OAAEqI,QAAF,IAAEA,OAAF,EAAEA,EAAMme,YACb4R,WAAY,CAAEC,UAAW,MAE3B,uBACA,cAAC/wB,GAAA,EAAD,CACEpI,UAAW2jB,EAAO1gB,KAClB3F,QAAQ,YACRmB,MAAM,UACNwI,QAAS+f,EACT5D,UAAW6S,EACX5tB,UAAW,cAAC,KAAD,CAAiBnB,KAAM2U,OANpC,6BCtKOwd,OAtBf,WAAsB,IAAD,EACW37B,oBAAS,GADpB,mBACZ47B,EADY,KACHC,EADG,KAEnB,OACE,qCACE,6CACA,qGACA,gEACA,uBACCD,EACC,cAAC/U,GAAD,IAEA,mCACE,sBAAKtd,QAAS,kBAAMsyB,GAAW,IAA/B,UACE,cAAC,KAAD,CAAiBryB,KAAMsyB,OADzB,sBAGE,cAAC,KAAD,CAAiBtyB,KAAM0gB,gBClBtB6R,GAAc,SAAC78B,GAAD,OAAsBA,EAAMwY,MAAMA,OCsC9CskB,OAjCf,WACE,IAAMh6B,EAAWC,cACjBzB,qBAAU,WACRwB,EAAS+W,QACR,CAAC/W,IACJ,IAAM0V,EAAQ5X,YAAYi8B,IAM1B,OACE,qCACE,qDACA,uBAAOz5B,UAAU,sBAAjB,SACE,uCACGoV,QADH,IACGA,OADH,EACGA,EAAOxP,KAAI,SAACM,EAAGT,GAAJ,OACV,qBAAuBwB,QAAS,kBAVxB3E,EAUuC4D,EAAE5D,eATzDjH,OAAOC,SAAS+a,KAAOza,EAAgB0G,IADxB,IAACA,GAUR,UACE,6BACE,cAAC,GAAD,CAAO8X,KAAK,IAAIF,KAAI,OAAEhU,QAAF,IAAEA,OAAF,EAAEA,EAAGyzB,YAE3B,oBAAI35B,UAAU,yBAAd,SACE,mBAAGA,UAAU,OAAb,SAAqBkG,EAAE5D,cAEzB,oBAAItC,UAAU,yBAAd,SAAwCkG,EAAEkhB,WAC1C,oBAAIpnB,UAAU,yBAAd,SAAwCkG,EAAEqU,aARnCrU,EAAEoxB,OAAS7xB,cC6BjBm0B,OArCf,WACE,OACE,mCACE,cAAChP,GAAD,UACE,eAAC,KAAD,CAAiBhkB,QAASA,GAA1B,UACE,eAACxF,GAAD,WACE,cAACG,GAAD,uBACA,eAACkZ,GAAD,CAAUC,QAAQ,EAAOC,MAAO,aAAhC,UACE,cAACrZ,GAAD,CAAalB,GAAG,SAAhB,oBACA,cAACkB,GAAD,CAAalB,GAAG,QAAhB,sBACA,cAACkB,GAAD,CAAalB,GAAG,SAAhB,wBAGJ,cAACynB,GAAD,CAAMlN,MAAO,aAAb,SACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAO3R,KAAK,QAAZ,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOA,KAAK,UAAZ,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOA,KAAK,SAAZ,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOA,KAAK,SAAZ,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOA,KAAK,IAAZ,SACE,cAAC2uB,GAAD,mBCMDkC,OAxCf,WACE,IAAM7C,EAAY77B,IAEZia,EAAQ5X,YAAYi8B,IAEpB/5B,EAAWC,cAsBjB,OApBAzB,qBAAU,WACRwB,EAAS+W,MACLugB,GACFt3B,EtHjBkD,CACtDV,KAAMH,GACNI,QAAS,CAAEqD,UsHemB00B,OAE3B,CAACt3B,EAAUs3B,IAEd94B,qBAAU,WAEL84B,GACA5hB,IACDA,EAAM0kB,MAAK,SAAC5zB,GAAD,aAAO,UAAAA,EAAE5D,iBAAF,eAAa3G,kBAAb,OAA+Bq7B,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAWr7B,oBAM9D2a,SAAShb,SAAWW,OACnB,CAACmZ,EAAO4hB,IAGT,mCACI5hB,EAEE4hB,EACF,cAAC,GAAD,CAASA,UAAWA,IAEpB,cAAC,GAAD,IAJA,yDC1BO+C,GAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBpgB,MAAK,YAAkD,IAA/CqgB,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,iBCEdO,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,IAAD,CAAU3iB,MAAOA,GAAjB,SACE,cAAC,KAAD,CAAa9N,QAAS,cAACxL,EAAA,EAAD,IAAsB+Z,UAAWA,GAAvD,SACE,cAAC,GAAD,UAINjC,SAASokB,eAAe,SAM1BX,M","file":"static/js/main.31bbcfd4.chunk.js","sourcesContent":["/** Finds the most occurences of an element in an array.\r\n * Usually used after mapping an object array to on of its properties\r\n */\r\nexport function mode(array: any[]) {\r\n if (array.length === 0) {\r\n return null;\r\n }\r\n const modeMap = Object.create(null);\r\n let maxEl = array[0],\r\n maxCount = 1;\r\n for (let i = 0; i < array.length; i++) {\r\n const el = array[i];\r\n if (modeMap[el] === null) {\r\n modeMap[el] = 1;\r\n } else {\r\n modeMap[el]++;\r\n }\r\n if (modeMap[el] > maxCount) {\r\n maxEl = el;\r\n maxCount = modeMap[el];\r\n }\r\n }\r\n return maxEl;\r\n}\r\n\r\nexport const file2Base64 = (file: File): Promise =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader?.result?.toString() ?? \"ERROR\");\r\n reader.onerror = (error) => reject(error);\r\n });\r\n\r\nexport function currentSubDomain() {\r\n const host = window.location.host;\r\n const parts = host.split(\".\");\r\n // Subdomain gesetzt, wenn 3 abschnitte (bzw. 2 wenn auf ip/localhost)\r\n if (parts.length >= (process.env.NODE_ENV === \"development\" ? 2 : 3)) {\r\n return parts[0] === \"www\" ? undefined : parts[0].toLowerCase();\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function getSubDomainUrl(sub: string): string {\r\n const host = window.location.host;\r\n const protocol = window.location.protocol;\r\n const parts = host.split(\".\");\r\n // Wenn subdomain bereits gesetzt\r\n if (parts.length >= (process.env.NODE_ENV === \"development\" ? 2 : 3)) {\r\n return protocol + \"//\" + [sub, ...parts.slice(1, parts.length)].join(\".\");\r\n }\r\n // wenn keine subdomain vorhanden\r\n return protocol + \"//\" + [sub, ...parts].join(\".\");\r\n}\r\n\r\nexport function getMainUrl(): string {\r\n const host = window.location.host;\r\n const protocol = window.location.protocol;\r\n const parts = host.split(\".\");\r\n // Wenn subdomain bereits gesetzt\r\n if (parts.length >= (process.env.NODE_ENV === \"development\" ? 2 : 3)) {\r\n return protocol + \"//\" + parts.slice(1, parts.length).join(\".\");\r\n }\r\n // wenn keine subdomain vorhanden\r\n return protocol + \"//\" + parts.join(\".\");\r\n}\r\n\r\nexport function serializeObjectToQuerystring(obj: any) {\r\n const str = [];\r\n for (const p in obj) {\r\n if (obj.hasOwnProperty(p) && obj[p]) {\r\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\r\n }\r\n }\r\n return str.join(\"&\");\r\n}\r\n","import React from \"react\";\n\nexport function About() {\n return
Jasserei.ch created by Puurle @ 2021
;\n}\n","export interface Club {\r\n clubId: number;\r\n clubName: string;\r\n longName: string;\r\n shortName: string;\r\n thumbnail?: any;\r\n webIcon?: any;\r\n}\r\nexport interface ClubDetails extends Club {\r\n contactEmail: string;\r\n contactName: string;\r\n contactLastName: string;\r\n contactAdress: string;\r\n mainImage?: any;\r\n}\r\nexport interface User {\r\n userId: number;\r\n clubId: number;\r\n firstName: string;\r\n lastName: string;\r\n nickname: string;\r\n remarks: string;\r\n active: boolean;\r\n admin: boolean;\r\n avatar: string;\r\n defaultKartendeck: string;\r\n}\r\nexport interface AuthUser extends User {\r\n shortName: string;\r\n token: string;\r\n expiration: Date;\r\n}\r\nexport interface Player extends User {\r\n shortName: string;\r\n displayName: string;\r\n schieberStats?: SchieberStats;\r\n sessions?: PersonalSession[];\r\n}\r\nexport interface SchieberStats {\r\n vorhandPunktetotal: number;\r\n gschobePunktetotal: number;\r\n wiisTotal: number;\r\n agseit: number;\r\n gschobe: number;\r\n sessions: number;\r\n favoritePartnerId: number;\r\n sessionsWon: number;\r\n}\r\nexport interface PersonalSession {\r\n sessionId: number;\r\n started: string;\r\n partnerId: number;\r\n won: number;\r\n points: number;\r\n opponentPoints: number;\r\n pointsGoal: number;\r\n hands: number;\r\n}\r\n\r\nexport interface Auth {\r\n signin: (callback: () => any) => any;\r\n signout: (callback: () => any) => any;\r\n user: User | null;\r\n}\r\n\r\nexport interface GraphData {\r\n lines: DataLine[];\r\n}\r\nexport interface DataLine {\r\n lineTitle: string;\r\n data: DataSet[];\r\n}\r\nexport interface DataSet {\r\n dataSetTitle?: string;\r\n value: number;\r\n}\r\n\r\nexport interface DataGridLine {\r\n lineTitle: string;\r\n data: DataGridSet[];\r\n}\r\nexport interface DataGridSet {\r\n dataSetTitle?: string;\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport enum ApiStatus {\r\n idle,\r\n loading,\r\n succeeded,\r\n failed,\r\n authExpired,\r\n}\r\n\r\nexport type WiisBetrag = 20 | 50 | 100 | 150 | 200;\r\n","import { RootState } from \"../global/Store\";\r\n\r\nexport const selectApiStatus = (state: RootState) => state.apiState.apiStatus;\r\n\r\nexport const selectPendingRequests = (state: RootState) =>\r\n state.apiState.pending.length;\r\n\r\nexport const selectLatestResponse = (state: RootState) =>\r\n state.apiState.latestResponse;\r\n\r\nexport const selectBlocked = (state: RootState) => state.apiState.blocked;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport {\r\n selectApiStatus,\r\n selectBlocked,\r\n selectLatestResponse,\r\n} from \"../../api/apiSelector\";\r\nimport { ApiStatus } from \"../../types/types\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport MuiAlert from \"@material-ui/lab/Alert\";\r\nimport { Backdrop, CircularProgress } from \"@material-ui/core\";\r\n\r\nfunction Alert(props: any) {\r\n return ;\r\n}\r\n\r\nexport function ApiStatusWidget() {\r\n const latestResponse = useSelector(selectLatestResponse);\r\n const apiStatus = useSelector(selectApiStatus);\r\n const criticalActionPending = useSelector(selectBlocked);\r\n const [state, setState] = useState({\r\n open: false,\r\n message: \"\",\r\n severity: \"success\",\r\n });\r\n\r\n const handleClose = (e: any, reason: any) => {\r\n setState({ ...state, open: false });\r\n };\r\n useEffect(() => {\r\n if (latestResponse) {\r\n setState({\r\n open: true,\r\n ...latestResponse,\r\n });\r\n }\r\n }, [latestResponse]);\r\n useEffect(() => {\r\n if (apiStatus === ApiStatus.failed) {\r\n setState({\r\n open: true,\r\n message: \"Fehler bem Lade\",\r\n severity: \"warning\",\r\n });\r\n }\r\n if (apiStatus === ApiStatus.authExpired) {\r\n setState({\r\n open: true,\r\n message: \"Wer besch du überhaupt? Bitte neu ilogge\",\r\n severity: \"warning\",\r\n });\r\n }\r\n }, [apiStatus]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {state.message}\r\n \r\n \r\n \r\n );\r\n}\r\n","export const AT = {\r\n PUT_AUTH: \"PUT_AUTH\",\r\n DELETE_AUTH: \"DELETE_AUTH\",\r\n AUTH_EXPIRED: \"AUTH_EXPIRED\",\r\n PUT_PERSONAL_DATA: \"PUT_PERSONAL_DATA\",\r\n DELETE_PERSONAL_DATA: \"DELETE_DELETE_PERSONAL_DATAAUTH\",\r\n\r\n /* ------------ State Content Actions ------------- */\r\n PUT_CLUBS: \"PUT_CLUBS\",\r\n\r\n ANNOUNCE_NEWCLUB: \"ANNOUNCE_NEWCLUB\",\r\n\r\n PUT_CLUBDETAILS: \"PUT_CLUBDETAILS\",\r\n ANNOUNCE_CLUBUPDATE: \"ANNOUNCE_CLUBUPDATE\",\r\n\r\n PUT_SEASONS: \"PUT_SEASONS\",\r\n PUT_SEASON: \"PUT_SEASON\",\r\n ANNOUNCE_NEWSEASON: \"ANNOUNCE_NEWSEASON\",\r\n\r\n PUT_PLAYERS: \"PUT_PLAYERS\",\r\n PUT_PLAYERDETAILS: \"PUT_PLAYERDETAILS\",\r\n\r\n PUT_SCHIEBERS: \"PUT_SCHIEBERS\",\r\n\r\n PUT_USERS: \"PUT_USERS\",\r\n PUT_USERDETAILS: \"PUT_USERDETAILS\",\r\n ANNOUNCE_NEWUSER: \"ANNOUNCE_NEWUSER\",\r\n\r\n PUT_SCHIEBERPLAYER: \"PUT_SCHIEBERPLAYER\",\r\n PUT_SCHIEBERFORM: \"PUT_SCHIEBERFORM\",\r\n\r\n PUT_SCHIEBER: \"PUT_SCHIEBER\",\r\n\r\n PUT_SCHIEBERDETAILS: \"PUT_SCHIEBERDETAILS\",\r\n\r\n PUT_SCHIEBERDRAFTS: \"PUT_SCHIEBERDRAFTS\",\r\n\r\n ANNOUNCE_SCHIEBER: \"ANNOUNCE_SCHIEBER\",\r\n ANNOUNCE_SCHIEBERDRAFT: \"ANNOUNCE_SCHIEBERDRAFT\",\r\n ANNOUNCE_APPROVAL: \"ANNOUNCE_APPROVAL\",\r\n\r\n LOCK_SCHIEBERMETADATA: \"LOCK_SCHIEBERMETADATA\",\r\n APPROVE_SCHIEBERSESSION: \"APPROVE_SCHIEBERSESSION\",\r\n APPROVE_SCHIEBERSESSIONDRAFT: \"APPROVE_SCHIEBERSESSIONDRAFT\",\r\n\r\n ADD_SCHIEBERHAND: \"ADD_SCHIEBERHAND\",\r\n REMOVE_SCHIEBERHAND: \"REMOVE_SCHIEBERHAND\",\r\n SAVE_SCHIEBERSESSION: \"SAVE_SCHIEBERSESSION\",\r\n DELETE_SCHIEBERSESSION: \"DELETE_SCHIEBERSESSION\",\r\n DO_SCHIEBE: \"DO_SCHIEBE\",\r\n DO_ASAEGE: \"DO_ASAEGE\",\r\n DO_CHOOSEVARIANTE: \"DO_CHOOSEVARIANTE\",\r\n ADD_SCHIEBERWEIS: \"ADD_SCHIEBERWEIS\",\r\n REMOVE_SCHIEBERWEIS_TEAM1: \"REMOVE_SCHIEBERWEIS_TEAM1\",\r\n REMOVE_SCHIEBERWEIS_TEAM2: \"REMOVE_SCHIEBERWEIS_TEAM2\",\r\n ADD_SCHIEBERHANDPOINTS: \"ADD_SCHIEBERHANDPOINTS\",\r\n PUT_SESSIONATTACHMENT: \"PUT_SESSIONATTACHMENT\",\r\n\r\n /* ------------ GUI State Actions ------------- */\r\n SET_UIINDEX: \"SET_UIINDEX\",\r\n\r\n /* ------------ API Actions ------------- */\r\n FETCH_LOGIN: \"FETCH_LOGIN\",\r\n\r\n FETCH_CHANGE_PASSWORD: \"FETCH_CHANGE_PASSWORD\",\r\n FETCH_CURRENTUSER_UPDATE: \"FETCH_CURRENTUSER_UPDATE\",\r\n\r\n FETCH_CLUBS: \"FETCH_CLUBS\",\r\n\r\n FETCH_CLUBDETAILS_ADD: \"FETCH_CLUBDETAILS_ADD\",\r\n\r\n FETCH_CLUBDETAILS: \"FETCH_CLUBDETAILS\",\r\n FETCH_CLUBDETAILS_UPDATE: \"FETCH_CLUBDETAILS_UPDATE\",\r\n\r\n FETCH_SEASONS: \"FETCH_SEASONS\",\r\n FETCH_SEASON_ADD: \"FETCH_SEASON_ADD\",\r\n FETCH_SEASON_UPDATE: \"FETCH_SEASON_UPDATE\",\r\n\r\n FETCH_PLAYERS: \"FETCH_PLAYERS\",\r\n FETCH_PLAYERDETAILS: \"FETCH_PLAYERDETAILS\",\r\n\r\n FETCH_SCHIEBERS: \"FETCH_SCHIEBERS\",\r\n FETCH_SCHIEBER: \"FETCH_SCHIEBER\",\r\n FETCH_SCHIEBERDETAILS: \"FETCH_SCHIEBERDETAILS\",\r\n\r\n FETCH_DRAFTS: \"FETCH_DRAFTS\",\r\n\r\n FETCH_USERS: \"FETCH_USERS\",\r\n FETCH_USER_CREATE: \"FETCH_USER_CREATE\",\r\n FETCH_USER_UPDATE: \"FETCH_USER_UPDATE\",\r\n\r\n /* ------------ API State Changes ------------- */\r\n FETCH_PENDING: \"FETCH_PENDING\",\r\n FETCH_FULFILLED: \"FETCH_FULFILLED\",\r\n FETCH_REJECTED: \"FETCH_REJECTED\",\r\n FETCH_RESPONSE: \"FETCH_RESPONSE\",\r\n};\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { User } from \"../types/types\";\r\n\r\nexport const fetchLogin = (credentials: {\r\n nickname: string;\r\n password: string;\r\n}) => ({\r\n type: AT.FETCH_LOGIN,\r\n payload: credentials,\r\n});\r\n\r\nexport const putAuthData = (credentials: any) => ({\r\n type: AT.PUT_AUTH,\r\n payload: credentials,\r\n});\r\nexport const putCurrentUser = (user: any) => ({\r\n type: AT.PUT_PERSONAL_DATA,\r\n payload: user,\r\n});\r\nexport const putAuthExpired = {\r\n type: AT.AUTH_EXPIRED,\r\n payload: undefined,\r\n};\r\nexport const deleteAuthData = {\r\n type: AT.DELETE_AUTH,\r\n payload: undefined,\r\n};\r\nexport const deletePersonalData = {\r\n type: AT.DELETE_PERSONAL_DATA,\r\n payload: undefined,\r\n};\r\n\r\nexport const fetchChangePassword = (data: {\r\n oldPassword: string;\r\n newPassword: string;\r\n}) => ({\r\n type: AT.FETCH_CHANGE_PASSWORD,\r\n payload: data,\r\n});\r\n\r\nexport const fetchUpdateUserDetails = (user: User) => ({\r\n type: AT.FETCH_CURRENTUSER_UPDATE,\r\n payload: user,\r\n});\r\n","import { RootState } from \"../global/Store\";\n\nexport const selectUser = (state: RootState) => state.user.currentUser;\n","import { useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectApiStatus } from \"../../api/apiSelector\";\r\nimport { ApiStatus } from \"../../types/types\";\r\nimport { putAuthExpired } from \"../../user/userActionCreators\";\r\nimport { selectUser } from \"../../user/userSelector\";\r\n\r\nexport function AuthWidget() {\r\n const dispatch = useDispatch();\r\n const apiStatus = useSelector(selectApiStatus);\r\n const user = useSelector(selectUser);\r\n useEffect(() => {\r\n if (\r\n apiStatus === ApiStatus.failed &&\r\n user?.expiration &&\r\n new Date(user.expiration).valueOf() < Date.now()\r\n ) {\r\n dispatch(putAuthExpired);\r\n }\r\n }, [apiStatus, dispatch, user?.expiration]);\r\n\r\n return apiStatus === ApiStatus.authExpired ? (\r\n
\r\n Wer besch du überhaupt? Bitte neu ilogge.\r\n
\r\n ) : (\r\n <>\r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Redirect, useLocation } from \"react-router-dom\";\r\nimport { fetchLogin } from \"../../user/userActionCreators\";\r\nimport { selectUser } from \"../../user/userSelector\";\r\n\r\nexport function LoginPage() {\r\n const location = useLocation();\r\n\r\n const user = useSelector(selectUser);\r\n\r\n const from = (location?.state as any)?.from ?? \"/home\";\r\n\r\n return user ? (\r\n \r\n ) : (\r\n \r\n );\r\n}\r\n\r\nfunction LoginPageInternal() {\r\n const dispatch = useDispatch();\r\n\r\n const [state, setState] = useState<{\r\n nickname: string;\r\n password: string;\r\n submitted: boolean;\r\n }>({\r\n nickname: \"\",\r\n password: \"\",\r\n submitted: false,\r\n });\r\n\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n setState({ ...state, [name]: value });\r\n },\r\n [state]\r\n );\r\n const handleSubmit = useCallback(\r\n (e: any) => {\r\n e.preventDefault();\r\n setState({ ...state, submitted: true });\r\n if (state.nickname && state.password) {\r\n dispatch(\r\n fetchLogin({ nickname: state.nickname, password: state.password })\r\n );\r\n }\r\n },\r\n [dispatch, state]\r\n );\r\n\r\n return (\r\n
\r\n

Login

\r\n \r\n \r\n \r\n {state.submitted && !state.nickname && (\r\n
Spitzname esch Pflicht
\r\n )}\r\n \r\n \r\n \r\n \r\n {state.submitted && !state.password && (\r\n
Kennwort esch Pflicht
\r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\nimport \"../../App.scss\";\n\nexport function Nav(props: any) {\n return (\n
\n \n
{props.children}
\n \n
\n );\n}\n","import React from \"react\";\nimport \"../../App.scss\";\nimport { Link } from \"react-router-dom\";\n\ninterface Props {\n children: any;\n to: string;\n}\nexport function NavItemLink(props: Props) {\n return (\n
  • \n \n {props.children}\n \n
  • \n );\n}\n","import React from \"react\";\nimport \"../../App.scss\";\nimport { Link } from \"react-router-dom\";\n\nexport function NavTitle(props: any) {\n return (\n \n {props.children}\n \n );\n}\n","import { AT } from \"../global/actionTypes\";\nimport { Player } from \"../types/types\";\n\nexport const putPlayers = (players: any[]) => ({\n type: AT.PUT_PLAYERS,\n payload: players,\n});\nexport const putPlayerDetails = (player: Player) => ({\n type: AT.PUT_PLAYERDETAILS,\n payload: player,\n});\n\nexport const fetchPlayers = () => ({ type: AT.FETCH_PLAYERS });\nexport const fetchPlayerDetails = (player: Player) => ({\n type: AT.FETCH_PLAYERDETAILS,\n payload: player.userId,\n});\n","import { SessionTeam } from \"../games/gamesReducer\";\nimport { RootState } from \"../global/Store\";\nimport { Player } from \"../types/types\";\n\nexport const selectPlayers = (state: RootState) => state.players.data;\nexport const selectPlayer = (state: RootState, id?: number) =>\n state?.players?.data?.find((p) => p.userId === id) ?? undefined;\nexport const selectPlayerTitle = (state: RootState, id?: number) =>\n playerTitle(selectPlayer(state, id));\n\nexport const playerTitle = (player?: Player) =>\n player?.displayName ?? player?.nickname ?? player?.shortName ?? \"Spieler\";\n\nexport const selectTeamTitle = (state: RootState, team: SessionTeam) =>\n selectPlayerTitle(state, team.player1Id) +\n \" & \" +\n selectPlayerTitle(state, team.player2Id);\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectUser } from \"../../user/userSelector\";\r\n\r\ninterface Props {\r\n children?: any;\r\n silent?: boolean;\r\n}\r\nexport function AdminRequired(props: Props) {\r\n const user = useSelector(selectUser);\r\n\r\n return user?.admin ? (\r\n props.children\r\n ) : props.silent ? (\r\n <>\r\n ) : (\r\n
    Du hesch do nüt verlore
    \r\n );\r\n}\r\n","import { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nexport const useJassereiFormStyles = makeStyles((theme) => ({\r\n root: {\r\n margin: theme.spacing(1),\r\n \"& .MuiTextField-root\": {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n card: {\r\n marginBottom: theme.spacing(4),\r\n },\r\n playerdropdown: {\r\n width: \"100%\",\r\n },\r\n registerTextfield: {\r\n minWidth: \"16em\",\r\n },\r\n simpleCreateTextfield: {\r\n width: \"10em\",\r\n marginRight: \"1em\",\r\n },\r\n overViewTable: {\r\n marginTop: \"2em\",\r\n },\r\n fullWidth: {\r\n width: \"100%\",\r\n },\r\n bold: {\r\n fontWeight: \"bold\",\r\n },\r\n jasstafel: {\r\n textAlign: \"center\",\r\n position: \"absolute\",\r\n },\r\n}));\r\n","import React from \"react\";\r\nimport \"./common.scss\";\r\n\r\ninterface Props {\r\n children: any;\r\n}\r\nexport const JasstafelContainer = (props: Props) => (\r\n
    \r\n
    {props.children}
    \r\n
    \r\n);\r\n","import React, { useMemo } from \"react\";\r\n\r\ninterface Props {\r\n label: string;\r\n value?: number;\r\n text?: string;\r\n type?: \"percent\" | \"text\" | \"value\";\r\n}\r\nexport function ProfileEntry(props: Props) {\r\n const unit = props.type === \"percent\" ? \"%\" : \"\";\r\n const value = useMemo(\r\n () =>\r\n props.value &&\r\n Math.round(\r\n (props.type === \"percent\" ? props.value * 100 : props.value) * 100\r\n ) / 100,\r\n [props.type, props.value]\r\n );\r\n\r\n return (\r\n
    \r\n {props.label}: {value}\r\n {unit}\r\n {props.text}\r\n
    \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { selectPlayerTitle } from \"../../players/playerSelector\";\r\nimport { PersonalSession, Player } from \"../../types/types\";\r\nimport { mode } from \"../../util/commonUtil\";\r\nimport { JasstafelContainer } from \"../Common/JasstafelContainer\";\r\nimport { ProfileEntry } from \"./ProfileEntry\";\r\n\r\ninterface Props {\r\n player: Player;\r\n}\r\nexport function PlayerProfile(props: Props) {\r\n const sessions = useMemo(\r\n () => props.player?.sessions ?? [],\r\n [props.player?.sessions]\r\n );\r\n const vorhandRatio = useMemo(() => {\r\n if (!props.player.schieberStats) {\r\n return 0;\r\n }\r\n return (\r\n props.player.schieberStats?.gschobe /\r\n (props.player.schieberStats?.gschobe + props.player.schieberStats?.agseit)\r\n );\r\n }, [props.player.schieberStats]);\r\n const favPartnerId = useMemo(\r\n () => mode(sessions.map((s: PersonalSession) => s.partnerId)),\r\n [sessions]\r\n );\r\n const avgWiis = useMemo(\r\n () =>\r\n (props.player.schieberStats?.wiisTotal ?? 0) /\r\n sessions.reduce((p: number, c: PersonalSession) => p + c.hands, 0),\r\n [props.player.schieberStats?.wiisTotal, sessions]\r\n );\r\n\r\n const favPartner = useSelector((state: RootState) =>\r\n selectPlayerTitle(state, favPartnerId)\r\n );\r\n\r\n return (\r\n \r\n

    {props.player.displayName}

    \r\n \r\n {sessions.length ? (\r\n <>\r\n s.won).length /\r\n sessions.length\r\n }\r\n type={\"percent\"}\r\n />\r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { selectPlayerTitle } from \"../../players/playerSelector\";\r\n\r\ninterface Props {\r\n playerId?: number;\r\n className?: string;\r\n}\r\nexport function PlayerWidget(props: Props) {\r\n const playerName = useSelector((state: RootState) =>\r\n selectPlayerTitle(state, props.playerId)\r\n );\r\n\r\n return {playerName} ;\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { faCheck, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { PersonalSession, Player } from \"../../types/types\";\r\nimport { PlayerWidget } from \"../Common/PlayerWidget\";\r\nimport { useHistory } from \"react-router\";\r\ninterface Props {\r\n player: Player;\r\n}\r\nexport function PlayerSessions(props: Props) {\r\n return props.player.sessions ? (\r\n \r\n ) : (\r\n
    Keine Sessions gefunden
    \r\n );\r\n}\r\ninterface InternalProps {\r\n sessions: PersonalSession[];\r\n}\r\nfunction PlayerSessionsInternal(props: InternalProps) {\r\n const history = useHistory();\r\n\r\n const gotoDetails = useCallback(\r\n (schieber: PersonalSession) =>\r\n history.push(`/schieber/${schieber.sessionId}`),\r\n [history]\r\n );\r\n\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\n {props.sessions.map((s: PersonalSession) => (\r\n gotoDetails(s)} key={s?.sessionId}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    DatumPartnerResultat# Rundene
    \r\n {s.won ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {s.started}\r\n \r\n \r\n {s.points}:{s.opponentPoints}\r\n {s.hands}
    \r\n );\r\n}\r\n","import React, { useCallback, useEffect } from \"react\";\r\nimport { faArrowLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Button, Paper } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { fetchPlayerDetails } from \"../../players/playerActionCreators\";\r\nimport { selectPlayer } from \"../../players/playerSelector\";\r\nimport { Player } from \"../../types/types\";\r\nimport { AdminRequired } from \"../Common/AdminRequired\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { PlayerProfile } from \"./PlayerProfile\";\r\nimport { PlayerSessions } from \"./PlayerSessions\";\r\n\r\ninterface Params {\r\n id: string;\r\n}\r\nexport function PlayerDetails() {\r\n const { id } = useParams();\r\n const player = useSelector((state: RootState) =>\r\n selectPlayer(state, Number(id))\r\n );\r\n\r\n return player ? (\r\n \r\n ) : (\r\n
    Spieler konnte nicht gefunden werden
    \r\n );\r\n}\r\n\r\ninterface Props {\r\n player: Player;\r\n}\r\nfunction PlayerDetailsInternal(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(fetchPlayerDetails(props.player));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const stateToClipboard = useCallback(() => {\r\n const json = JSON.stringify(props.player, undefined, 2);\r\n navigator.clipboard.writeText(json);\r\n }, [props]);\r\n\r\n return (\r\n <>\r\n \r\n }\r\n >\r\n Öbersecht\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    <>
    \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useCallback, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { fetchPlayers } from \"../../players/playerActionCreators\";\r\nimport { selectPlayers } from \"../../players/playerSelector\";\r\nimport { Player } from \"../../types/types\";\r\n\r\nexport function Players() {\r\n const dispatch = useDispatch();\r\n\r\n const players = useSelector(selectPlayers);\r\n\r\n useEffect(() => {\r\n dispatch(fetchPlayers());\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return players ? (\r\n \r\n ) : (\r\n
    Keine Spieler gefunden
    \r\n );\r\n}\r\n\r\ninterface Props {\r\n players: Player[];\r\n}\r\nfunction PlayersInternal(props: Props) {\r\n const history = useHistory();\r\n\r\n const gotoDetails = useCallback(\r\n (player: Player) => {\r\n history.push(`/player/${player.userId}`);\r\n },\r\n [history]\r\n );\r\n\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\n \r\n \r\n \r\n {props.players.map((player: Player) => (\r\n gotoDetails(player)} key={player.userId}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    SpelerVornameNochnameSessionsAgseitGschobeGwise
    \r\n \r\n {player.shortName}\r\n \r\n {player.nickname}{player.displayName}{player.firstName}{player.lastName}\r\n {player.schieberStats?.sessions}\r\n \r\n {player.schieberStats?.agseit} (\r\n {player.schieberStats?.vorhandPunktetotal})\r\n \r\n {player.schieberStats?.gschobe} (\r\n {player.schieberStats?.gschobePunktetotal})\r\n \r\n {player.schieberStats?.wiisTotal}\r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Redirect, Route } from \"react-router-dom\";\r\nimport { selectUser } from \"../../user/userSelector\";\r\n\r\ninterface Props {\r\n children?: any;\r\n path: string;\r\n}\r\n\r\nexport function PrivateRoute(props: Props) {\r\n const user = useSelector(selectUser);\r\n\r\n return user ? (\r\n {props.children}\r\n ) : (\r\n \r\n );\r\n}\r\n","import { RootState } from \"../global/Store\";\r\n\r\nexport const selectClubdetails = (state: RootState) => state.clubdetails?.club;\r\n","import { AT } from \"../global/actionTypes\";\r\n\r\nexport const fetchPending = (id: string, url: string) => ({\r\n type: AT.FETCH_PENDING,\r\n payload: { id, url },\r\n});\r\nexport const fetchFulfilled = (id: string) => ({\r\n type: AT.FETCH_FULFILLED,\r\n payload: { id },\r\n});\r\nexport const fetchRejected = (id: string) => ({\r\n type: AT.FETCH_REJECTED,\r\n payload: { id },\r\n});\r\n\r\nexport const putResponseMessage = (response: any) => ({\r\n type: AT.FETCH_RESPONSE,\r\n payload: {\r\n message: Boolean(response) ? \"success\" : \"warning\",\r\n severity: Boolean(response) ? \"success\" : \"warning\",\r\n },\r\n});\r\n\r\nexport const createResponseMessage =\r\n (successMsg: string, failMsg: string) => (response: any) => ({\r\n type: AT.FETCH_RESPONSE,\r\n payload: {\r\n message: response ? successMsg : failMsg,\r\n severity: Boolean(response) ? \"success\" : \"warning\",\r\n },\r\n });\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { ApiStatus } from \"../types/types\";\r\n\r\nexport interface ApiState {\r\n pending: { id: string; url: string }[];\r\n blocked: boolean;\r\n apiStatus: ApiStatus;\r\n latestResponse?: { message: string; severity: string };\r\n}\r\nconst initialState = {\r\n pending: [],\r\n blocked: false,\r\n apiStatus: ApiStatus.idle,\r\n};\r\n\r\nexport const apiReducer = (\r\n state: ApiState = initialState,\r\n action: any\r\n): ApiState => {\r\n switch (action.type) {\r\n // these operations are critical, hence toggle blocked (backdrop)\r\n case AT.FETCH_SCHIEBERDETAILS:\r\n case AT.LOCK_SCHIEBERMETADATA: {\r\n return {\r\n ...state,\r\n blocked: true,\r\n };\r\n }\r\n case AT.FETCH_PENDING: {\r\n return {\r\n ...state,\r\n apiStatus: ApiStatus.loading,\r\n pending: [\r\n ...state.pending,\r\n { id: action.payload.id, url: action.payload.url },\r\n ],\r\n };\r\n }\r\n case AT.FETCH_FULFILLED: {\r\n return {\r\n ...state,\r\n blocked: false,\r\n apiStatus: ApiStatus.succeeded,\r\n pending: state.pending.filter((i) => i.id !== action.payload.id),\r\n };\r\n }\r\n case AT.FETCH_REJECTED: {\r\n return {\r\n ...state,\r\n blocked: false,\r\n apiStatus: ApiStatus.failed,\r\n pending: state.pending.filter((i) => i.id !== action.payload.id),\r\n };\r\n }\r\n case AT.FETCH_RESPONSE: {\r\n return {\r\n ...state,\r\n blocked: false,\r\n latestResponse: action.payload,\r\n };\r\n }\r\n case AT.AUTH_EXPIRED: {\r\n return { ...state, apiStatus: ApiStatus.authExpired };\r\n }\r\n case AT.ANNOUNCE_APPROVAL: {\r\n return {\r\n ...state,\r\n blocked: false,\r\n latestResponse: {\r\n message: \"Jassette esch gspeicheret\",\r\n severity: \"success\",\r\n },\r\n };\r\n }\r\n }\r\n return { ...state, blocked: false };\r\n};\r\n","import { RootState } from \"../global/Store\";\r\nimport { selectTeamTitle } from \"../players/playerSelector\";\r\nimport { SchieberHand } from \"./gamesReducer\";\r\n\r\nexport const selectCurrentUiIndex = (state: RootState) =>\r\n state.games.currentUiIndex;\r\n\r\nexport const selectSchieber = (state: RootState, id: number) =>\r\n state.games.allSchieberSessions?.find((s) => s.sessionId === id);\r\nexport const selectSchiebers = (state: RootState) =>\r\n state.games.allSchieberSessions;\r\n\r\nexport const selectEditSchieber = (state: RootState) =>\r\n state.games.currentSchieberSession;\r\n\r\nexport const selectInitSchieberValid = (state: RootState) =>\r\n state.games.currentSchieberSession.pointsGoal > 100 &&\r\n Boolean(state.games.currentSchieberSession.seasonId) &&\r\n Boolean(state.games.currentSchieberSession.team1.player1Id) &&\r\n Boolean(state.games.currentSchieberSession.team1.player2Id) &&\r\n Boolean(state.games.currentSchieberSession.team2.player1Id) &&\r\n Boolean(state.games.currentSchieberSession.team2.player2Id);\r\n\r\nexport const selectIsGoalReached = (state: RootState) =>\r\n selectTeam1GoalReached(state) || selectTeam2GoalReached(state);\r\n\r\nexport const selectTeam1GoalReached = (state: RootState) =>\r\n team1totalpoints(state) >= state.games.currentSchieberSession.pointsGoal;\r\nexport const selectTeam2GoalReached = (state: RootState) =>\r\n team2totalpoints(state) >= state.games.currentSchieberSession.pointsGoal;\r\n\r\nexport const pendingChanges = (state: RootState) =>\r\n state.games.pendingChanges &&\r\n Boolean(state.games.currentSchieberSession?.sessionId);\r\n\r\nexport const selectSchieberHand = (state: RootState, id: number) =>\r\n state.games.currentSchieberSession.hand?.find((s) => s.no === id);\r\n\r\nexport const selectLastHand = (state: RootState) =>\r\n state.games.currentSchieberSession.hand[\r\n state.games.currentSchieberSession.hand.length - 1\r\n ];\r\nexport const selectHandNo = (state: RootState) =>\r\n state.games.currentSchieberSession.hand.length;\r\n\r\nexport const isHandValid = (hand: SchieberHand | undefined) =>\r\n Boolean(\r\n (hand?.team1Result || hand?.team2Result) &&\r\n hand?.variante &&\r\n hand?.playerDragsiId\r\n );\r\n\r\nexport const selectPartner = (state: RootState, id?: number) => {\r\n const team1 = state.games.currentSchieberSession.team1;\r\n const team2 = state.games.currentSchieberSession.team2;\r\n return team1.player1Id === id\r\n ? team1.player2Id\r\n : team1.player2Id === id\r\n ? team1.player1Id\r\n : team2.player1Id === id\r\n ? team2.player2Id\r\n : team2.player2Id\r\n ? team2.player1Id\r\n : undefined;\r\n};\r\nexport const selectTeamNo = (state: RootState, userId?: number) => {\r\n const team1 = state.games.currentSchieberSession.team1;\r\n const team2 = state.games.currentSchieberSession.team2;\r\n return team1.player1Id === userId || team1.player2Id === userId\r\n ? 1\r\n : team2.player1Id === userId || team2.player2Id === userId\r\n ? 2\r\n : undefined;\r\n};\r\n\r\nexport const selectTeam1Title = (state: RootState) =>\r\n selectTeamTitle(state, state.games.currentSchieberSession.team1);\r\nexport const selectTeam2Title = (state: RootState) =>\r\n selectTeamTitle(state, state.games.currentSchieberSession.team2);\r\n\r\nexport const selectPointsByHandAndUser = (\r\n state: RootState,\r\n currentHand: SchieberHand,\r\n userId?: number\r\n) => {\r\n const teamNo = selectTeamNo(state, userId);\r\n return (\r\n (teamNo === 1\r\n ? currentHand.team1Result\r\n : teamNo === 2\r\n ? currentHand.team2Result\r\n : 0) ?? 0\r\n );\r\n};\r\n\r\nexport const weisReducerFn = (\r\n accumulator: number,\r\n currentWeis: { betrag: number; playerId: number }\r\n) => accumulator + (currentWeis?.betrag ?? 0);\r\n\r\nexport const team1sumreducerFn = (\r\n accumulator: number,\r\n currentHand: SchieberHand\r\n) =>\r\n accumulator +\r\n ((currentHand?.team1Result ?? 0) +\r\n (currentHand?.team1Wiis?.reduce(weisReducerFn, 0) ?? 0)) *\r\n varianteToFactor(currentHand.variante);\r\n\r\nexport const team2sumreducerFn = (\r\n accumulator: number,\r\n currentHand: SchieberHand\r\n) =>\r\n accumulator +\r\n ((currentHand?.team2Result ?? 0) +\r\n (currentHand?.team2Wiis?.reduce(weisReducerFn, 0) ?? 0)) *\r\n varianteToFactor(currentHand.variante);\r\n\r\nexport const team1sumreducerlightFn = (\r\n accumulator: number,\r\n currentHand: SchieberHand\r\n) =>\r\n accumulator +\r\n (currentHand?.team1Result ?? 0) * varianteToFactor(currentHand.variante);\r\nexport const team2sumreducerlightFn = (\r\n accumulator: number,\r\n currentHand: SchieberHand\r\n) =>\r\n accumulator +\r\n (currentHand?.team2Result ?? 0) * varianteToFactor(currentHand.variante);\r\n\r\nexport const team1totalpoints = (state: RootState) =>\r\n state.games.currentSchieberSession.hand?.reduce(team1sumreducerFn, 0);\r\n\r\nexport const team2totalpoints = (state: RootState) =>\r\n state.games.currentSchieberSession.hand?.reduce(team2sumreducerFn, 0);\r\n\r\nexport const currentStandingWidget = (state: RootState) =>\r\n state.games.currentSchieberSession.hand?.reduce(team2sumreducerFn, 0) +\r\n \" : \" +\r\n state.games.currentSchieberSession.hand?.reduce(team1sumreducerFn, 0) +\r\n \" (Runde \" +\r\n state.games.currentSchieberSession.hand?.length +\r\n \")\";\r\n\r\nexport const varianteToFactor = (variante?: number) => {\r\n switch (variante) {\r\n case 0:\r\n case 1:\r\n case 2:\r\n return 1;\r\n case 3:\r\n case 4:\r\n return 2;\r\n case 5:\r\n case 6:\r\n return 3;\r\n default:\r\n return 1;\r\n }\r\n};\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { varianteToFactor } from \"./gamesSelector\";\r\nimport moment from \"moment\";\r\n\r\nexport interface SchieberSession {\r\n sessionId?: number;\r\n kartendeck: string;\r\n hand: SchieberHand[];\r\n pointsGoal: number;\r\n remarks: string;\r\n team1: SessionTeam;\r\n team2: SessionTeam;\r\n started?: string;\r\n draft?: SchieberDraft[];\r\n team1Result: number;\r\n team2Result: number;\r\n seasonId?: number | string;\r\n attachment?: string;\r\n}\r\n\r\nexport interface SchieberDraft {\r\n draftId: number;\r\n data: string;\r\n sessionId: number;\r\n createdOn: any;\r\n creatorId: number;\r\n\r\n adminId?: number;\r\n adminApproval?: any;\r\n\r\n attachment: string;\r\n\r\n player1Approval?: any;\r\n player2Approval?: any;\r\n player3Approval?: any;\r\n player4Approval?: any;\r\n}\r\n\r\nexport interface SessionTeam {\r\n teamId?: number;\r\n player1Id?: number;\r\n player2Id?: number;\r\n}\r\n\r\nexport interface SchieberHand {\r\n /** client only */\r\n no: number;\r\n /** as on API */\r\n schieberHandId?: number;\r\n variante?: number;\r\n multiplikator: number;\r\n teamId?: number;\r\n playerDragsiId: number;\r\n playerGschobeId?: number;\r\n team1Result?: number;\r\n team2Result?: number;\r\n team1Wiis: Wiis[];\r\n team2Wiis: Wiis[];\r\n}\r\n\r\nexport interface Wiis {\r\n betrag: number;\r\n playerId: number;\r\n}\r\n\r\nexport interface GamesState {\r\n currentSchieberSession: SchieberSession;\r\n pendingChanges: boolean;\r\n allSchieberSessions?: SchieberSession[];\r\n personalSchieberDrafts?: SchieberSession[];\r\n currentUiIndex: number;\r\n}\r\nexport const initialSchieberCreator = (deck?: string): SchieberSession => ({\r\n sessionId: undefined,\r\n kartendeck: deck ?? \"ch-fr\",\r\n hand: [],\r\n pointsGoal: 2500,\r\n // eslint-disable-next-line no-restricted-syntax\r\n remarks: \"Jasserei vom \" + moment().format(\"D.M.yyy HH:mm\"),\r\n team1: { teamId: undefined, player1Id: undefined, player2Id: undefined },\r\n team2: { teamId: undefined, player1Id: undefined, player2Id: undefined },\r\n team1Result: 0,\r\n team2Result: 0,\r\n seasonId: \"\",\r\n});\r\nexport const initialSchieberState = {\r\n currentSchieberSession: initialSchieberCreator(\"de-fr\"), // TODO: kartendeck from userdefault oder clubdefault\r\n pendingChanges: false,\r\n currentUiIndex: 0,\r\n};\r\n\r\nexport const changedFlagReducer = (\r\n state: GamesState = initialSchieberState,\r\n action: any\r\n): GamesState => {\r\n switch (action.type) {\r\n // These actions are mutating the current sessionmodel, which must be saved eventually\r\n case AT.ADD_SCHIEBERHAND:\r\n case AT.REMOVE_SCHIEBERHAND:\r\n case AT.ADD_SCHIEBERHANDPOINTS:\r\n case AT.ADD_SCHIEBERWEIS:\r\n case AT.DO_ASAEGE:\r\n case AT.DO_SCHIEBE:\r\n case AT.DO_CHOOSEVARIANTE:\r\n case AT.PUT_SCHIEBERFORM:\r\n case AT.PUT_SCHIEBERPLAYER:\r\n case AT.REMOVE_SCHIEBERWEIS_TEAM1:\r\n case AT.REMOVE_SCHIEBERWEIS_TEAM2:\r\n case AT.PUT_SESSIONATTACHMENT:\r\n return { ...state, pendingChanges: true };\r\n // These actions result in having no pending changes\r\n case AT.PUT_SCHIEBER:\r\n case AT.LOCK_SCHIEBERMETADATA:\r\n case AT.ANNOUNCE_SCHIEBER:\r\n case AT.ANNOUNCE_SCHIEBERDRAFT:\r\n case AT.SAVE_SCHIEBERSESSION:\r\n return { ...state, pendingChanges: false };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const gamesReducer = (\r\n state: GamesState = initialSchieberState,\r\n action: any\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n): GamesState => {\r\n state = changedFlagReducer(state, action);\r\n switch (action.type) {\r\n case AT.SET_UIINDEX: {\r\n return {\r\n ...state,\r\n currentUiIndex: action.payload,\r\n };\r\n }\r\n case AT.DELETE_PERSONAL_DATA: {\r\n return initialSchieberState;\r\n }\r\n case AT.PUT_SESSIONATTACHMENT: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n attachment: action.payload,\r\n },\r\n };\r\n }\r\n case AT.ANNOUNCE_SCHIEBER: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n sessionId: action.payload.sessionId,\r\n hand: [\r\n {\r\n no: 1,\r\n multiplikator: 1,\r\n team1Result: 0,\r\n team2Result: 0,\r\n team1Wiis: [],\r\n team2Wiis: [],\r\n playerDragsiId: state.currentSchieberSession.team1.player1Id ?? 0,\r\n },\r\n ],\r\n },\r\n };\r\n }\r\n case AT.PUT_SCHIEBERS: {\r\n return { ...state, allSchieberSessions: action.payload };\r\n }\r\n case AT.PUT_SCHIEBER: {\r\n return { ...state, currentSchieberSession: action.payload };\r\n }\r\n case AT.PUT_SCHIEBERDETAILS: {\r\n return {\r\n ...state,\r\n allSchieberSessions: [\r\n ...(state?.allSchieberSessions?.map((ss) =>\r\n ss.sessionId === action.payload.sessionId ? action.payload : ss\r\n ) ?? []),\r\n ],\r\n };\r\n }\r\n case AT.PUT_SCHIEBERDRAFTS: {\r\n return { ...state, personalSchieberDrafts: action.payload };\r\n }\r\n case AT.DO_CHOOSEVARIANTE: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: state.currentSchieberSession.hand.map((hand: SchieberHand) =>\r\n hand.no === action.payload.handNo\r\n ? {\r\n ...hand,\r\n variante: action.payload.variante,\r\n multiplikator: varianteToFactor(action.payload.variante),\r\n }\r\n : hand\r\n ),\r\n },\r\n };\r\n }\r\n case AT.DO_SCHIEBE: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: state.currentSchieberSession.hand.map((hand: SchieberHand) =>\r\n hand.no === action.payload.handNo\r\n ? { ...hand, playerGschobeId: action.payload.playerGschobeId }\r\n : hand\r\n ),\r\n },\r\n };\r\n }\r\n case AT.DO_ASAEGE: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: state.currentSchieberSession.hand.map((hand: SchieberHand) =>\r\n hand.no === action.payload.handNo\r\n ? {\r\n ...hand,\r\n team1Result: action.payload.team1Points,\r\n team2Result: action.payload.team2Points,\r\n }\r\n : hand\r\n ),\r\n },\r\n };\r\n }\r\n case AT.ADD_SCHIEBERWEIS: {\r\n if (action.payload.teamId === 2) {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: state.currentSchieberSession.hand.map((hand: SchieberHand) =>\r\n hand.no === action.payload.handNo\r\n ? {\r\n ...hand,\r\n team2Wiis: [\r\n ...hand.team2Wiis,\r\n {\r\n playerId: action.payload.playerId,\r\n betrag: action.payload.betrag,\r\n },\r\n ],\r\n }\r\n : hand\r\n ),\r\n },\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: state.currentSchieberSession.hand.map((hand: SchieberHand) =>\r\n hand.no === action.payload.handNo\r\n ? {\r\n ...hand,\r\n team1Wiis: [\r\n ...hand.team1Wiis,\r\n {\r\n playerId: action.payload.playerId,\r\n betrag: action.payload.betrag,\r\n },\r\n ],\r\n }\r\n : hand\r\n ),\r\n },\r\n };\r\n }\r\n }\r\n case AT.REMOVE_SCHIEBERWEIS_TEAM1: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: state.currentSchieberSession.hand.map((hand: SchieberHand) =>\r\n hand.no === action.payload.handNo\r\n ? {\r\n ...hand,\r\n team1Wiis: [\r\n ...hand.team1Wiis.slice(0, action.payload.index),\r\n ...hand.team1Wiis.slice(action.payload.index + 1),\r\n ],\r\n }\r\n : hand\r\n ),\r\n },\r\n };\r\n }\r\n case AT.REMOVE_SCHIEBERWEIS_TEAM2: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: state.currentSchieberSession.hand.map((hand: SchieberHand) =>\r\n hand.no === action.payload.handNo\r\n ? {\r\n ...hand,\r\n team2Wiis: [\r\n ...hand.team2Wiis.slice(0, action.payload.index),\r\n ...hand.team2Wiis.slice(action.payload.index + 1),\r\n ],\r\n }\r\n : hand\r\n ),\r\n },\r\n };\r\n }\r\n case AT.ADD_SCHIEBERHAND: {\r\n const prevHand =\r\n state.currentSchieberSession.hand[\r\n state.currentSchieberSession.hand.length - 1\r\n ];\r\n let nextPlayerId = undefined;\r\n switch (state.currentSchieberSession.hand.length % 4) {\r\n case 0:\r\n nextPlayerId = state.currentSchieberSession.team1.player1Id;\r\n break;\r\n case 1:\r\n nextPlayerId = state.currentSchieberSession.team2.player1Id;\r\n break;\r\n case 2:\r\n nextPlayerId = state.currentSchieberSession.team1.player2Id;\r\n break;\r\n case 3:\r\n nextPlayerId = state.currentSchieberSession.team2.player2Id;\r\n break;\r\n default: {\r\n break;\r\n }\r\n }\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand: [\r\n ...state.currentSchieberSession.hand,\r\n {\r\n no: prevHand.no + 1,\r\n multiplikator: 1,\r\n playerDragsiId: nextPlayerId ?? 0,\r\n team1Wiis: [],\r\n team2Wiis: [],\r\n },\r\n ],\r\n },\r\n };\r\n }\r\n case AT.REMOVE_SCHIEBERHAND: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n hand:\r\n state.currentSchieberSession.hand.length > 1\r\n ? [\r\n ...state.currentSchieberSession.hand.slice(\r\n 0,\r\n state.currentSchieberSession.hand.length - 1\r\n ),\r\n ...state.currentSchieberSession.hand.slice(\r\n state.currentSchieberSession.hand.length\r\n ),\r\n ]\r\n : [...state.currentSchieberSession.hand],\r\n },\r\n };\r\n }\r\n case AT.PUT_SCHIEBERFORM: {\r\n return {\r\n ...state,\r\n currentUiIndex: 0,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n ...action.payload,\r\n },\r\n };\r\n }\r\n case AT.PUT_SCHIEBERPLAYER: {\r\n // if user is already used, set the other usage to undefined\r\n switch (action.payload.player) {\r\n case 1: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n team1: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id: action.payload.playerId,\r\n player2Id:\r\n state.currentSchieberSession.team1.player2Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team1.player2Id,\r\n },\r\n team2: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id:\r\n state.currentSchieberSession.team2.player1Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team2.player1Id,\r\n player2Id:\r\n state.currentSchieberSession.team2.player2Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team2.player2Id,\r\n },\r\n },\r\n };\r\n }\r\n case 2: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n team1: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id:\r\n state.currentSchieberSession.team1.player1Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team1.player1Id,\r\n player2Id:\r\n state.currentSchieberSession.team1.player2Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team1.player2Id,\r\n },\r\n team2: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id: action.payload.playerId,\r\n player2Id:\r\n state.currentSchieberSession.team2.player2Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team2.player2Id,\r\n },\r\n },\r\n };\r\n }\r\n case 3: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n team1: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id:\r\n state.currentSchieberSession.team1.player1Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team1.player1Id,\r\n player2Id: action.payload.playerId,\r\n },\r\n team2: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id:\r\n state.currentSchieberSession.team2.player1Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team2.player1Id,\r\n player2Id:\r\n state.currentSchieberSession.team2.player2Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team2.player2Id,\r\n },\r\n },\r\n };\r\n }\r\n case 4: {\r\n return {\r\n ...state,\r\n currentSchieberSession: {\r\n ...state.currentSchieberSession,\r\n team1: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id:\r\n state.currentSchieberSession.team1.player1Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team1.player1Id,\r\n player2Id:\r\n state.currentSchieberSession.team1.player2Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team1.player2Id,\r\n },\r\n team2: {\r\n ...state.currentSchieberSession.team1,\r\n player1Id:\r\n state.currentSchieberSession.team2.player1Id ===\r\n action.payload.playerId\r\n ? undefined\r\n : state.currentSchieberSession.team2.player1Id,\r\n player2Id: action.payload.playerId,\r\n },\r\n },\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return { ...state };\r\n};\r\n","import { SchieberSession } from \"../games/gamesReducer\";\r\nimport { fetchGet, fetchPost } from \"../util/apiUtil\";\r\n\r\nexport const loadSchiebers = () => fetchGet(\"SchieberSessions/GetAll\");\r\nexport const loadSchieber = (sessionId: string) =>\r\n fetchGet(\"SchieberSessions/Get\", { sessionId });\r\nexport const loadSchieberDrafts = () =>\r\n fetchGet(\"SchieberSessions/GetPersonalDrafts\");\r\n\r\nexport const createSchieber = (schieber: SchieberSession) =>\r\n fetchPost(\"SchieberSessions/CreateSession\", { ...schieber });\r\nexport const createSchieberDraft = (schieber: SchieberSession) =>\r\n fetchPost(\"SchieberSessions/CreateDraft\", {\r\n data: JSON.stringify(schieber),\r\n sessionId: schieber.sessionId,\r\n });\r\n\r\nexport const approveSchieber = (payload: { id: number; team1Won?: boolean }) =>\r\n fetchPost(\"SchieberSessions/ApproveSession\", payload);\r\nexport const approveSchieberDraft = (payload: {\r\n id: number;\r\n team1Won?: boolean;\r\n}) => fetchPost(\"SchieberSessions/ApproveSessionDraft\", payload);\r\nexport const deleteSchieber = (sessionId: number) =>\r\n fetchPost(\"SchieberSessions/DeleteSession\", {\r\n id: sessionId,\r\n });\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { SchieberHand, SchieberSession } from \"./gamesReducer\";\r\n\r\nexport const setUiIndex = (index: number) => ({\r\n type: AT.SET_UIINDEX,\r\n payload: index,\r\n});\r\nexport const putSchiebers = (schiebers: SchieberSession[]) => ({\r\n type: AT.PUT_SCHIEBERS,\r\n payload: schiebers,\r\n});\r\nexport const putSchieberDetails = (schieber: SchieberSession) => ({\r\n type: AT.PUT_SCHIEBERDETAILS,\r\n payload: populateInternalSchieber(schieber),\r\n});\r\nexport const putCurrentSchieber = (schieber: SchieberSession) => ({\r\n type: AT.PUT_SCHIEBER,\r\n payload: populateInternalSchieber(schieber),\r\n});\r\n\r\nexport const putSchieberFromServer = (schieber: SchieberSession) => ({\r\n type: AT.ANNOUNCE_SCHIEBER,\r\n payload: schieber,\r\n});\r\nexport const putSchieberDraftFromServer = (schieber: SchieberSession) => ({\r\n type: AT.ANNOUNCE_SCHIEBERDRAFT,\r\n payload: schieber,\r\n});\r\nexport const putApprovalFromServer = (schieber: SchieberSession) => ({\r\n type: AT.ANNOUNCE_APPROVAL,\r\n payload: schieber,\r\n});\r\nexport const approveSchieberSession = (sessionId: any) => ({\r\n type: AT.APPROVE_SCHIEBERSESSION,\r\n payload: { id: sessionId },\r\n});\r\nexport const approveSchieberSessionTeam1 = (sessionId: any) => ({\r\n type: AT.APPROVE_SCHIEBERSESSION,\r\n payload: { id: sessionId, team1Won: true },\r\n});\r\nexport const approveSchieberSessionTeam2 = (sessionId: any) => ({\r\n type: AT.APPROVE_SCHIEBERSESSION,\r\n payload: { id: sessionId, team1Won: false },\r\n});\r\n\r\nexport const approveSchieberSessionDraft = (draftId: any) => ({\r\n type: AT.APPROVE_SCHIEBERSESSIONDRAFT,\r\n payload: { id: draftId },\r\n});\r\n\r\nexport const schiebe = (hand: SchieberHand, playerGschobeId?: number) => ({\r\n type: AT.DO_SCHIEBE,\r\n payload: { handNo: hand.no, playerGschobeId },\r\n});\r\nexport const asaege = (\r\n hand: SchieberHand,\r\n team1Points: number,\r\n team2Points: number\r\n) => ({\r\n type: AT.DO_ASAEGE,\r\n payload: { handNo: hand.no, team1Points, team2Points },\r\n});\r\nexport const putVariante = (hand: SchieberHand, variante: number) => ({\r\n type: AT.DO_CHOOSEVARIANTE,\r\n payload: { handNo: hand.no, variante },\r\n});\r\nexport const wiise = (\r\n hand: SchieberHand,\r\n playerId: number,\r\n teamId: number,\r\n betrag: number\r\n) => ({\r\n type: AT.ADD_SCHIEBERWEIS,\r\n payload: { handNo: hand.no, playerId, teamId, betrag },\r\n});\r\nexport const removeWiisTeam1 = (index: number, handNo: number) => ({\r\n type: AT.REMOVE_SCHIEBERWEIS_TEAM1,\r\n payload: { index, handNo },\r\n});\r\nexport const removeWiisTeam2 = (index: number, handNo: number) => ({\r\n type: AT.REMOVE_SCHIEBERWEIS_TEAM2,\r\n payload: { index, handNo },\r\n});\r\nexport const putSchieberDrafts = (drafts: SchieberSession[]) => ({\r\n type: AT.PUT_SCHIEBERDRAFTS,\r\n payload: drafts,\r\n});\r\nexport const putAttachment = (guid: string) => ({\r\n type: AT.PUT_SESSIONATTACHMENT,\r\n payload: guid,\r\n});\r\n\r\nexport const fetchSchiebers = () => ({ type: AT.FETCH_SCHIEBERS });\r\nexport const fetchSchieber = (schieberId: number) => ({\r\n type: AT.FETCH_SCHIEBER,\r\n payload: schieberId,\r\n});\r\nexport const fetchSchieberDetails = (sessionId: number) => ({\r\n type: AT.FETCH_SCHIEBERDETAILS,\r\n payload: sessionId,\r\n});\r\nexport const fetchSchieberDrafts = () => ({ type: AT.FETCH_DRAFTS });\r\n\r\nconst populateInternalSchieber = (schieber: SchieberSession) => ({\r\n ...schieber,\r\n hand:\r\n schieber?.hand?.map((s: SchieberHand, index: number) => ({\r\n ...s,\r\n no: index + 1,\r\n })) ?? [],\r\n});\r\n","import { all, put, select, takeEvery, takeLatest } from \"redux-saga/effects\";\r\nimport {\r\n approveSchieber,\r\n approveSchieberDraft,\r\n createSchieber,\r\n createSchieberDraft,\r\n deleteSchieber,\r\n loadSchieber,\r\n loadSchieberDrafts,\r\n loadSchiebers,\r\n} from \"../api/schieberApi\";\r\nimport { AT } from \"../global/actionTypes\";\r\nimport { watchApiCall } from \"../util/apiUtil\";\r\nimport {\r\n putApprovalFromServer,\r\n putCurrentSchieber,\r\n putSchieberDetails,\r\n putSchieberDraftFromServer,\r\n putSchieberDrafts,\r\n putSchieberFromServer,\r\n putSchiebers,\r\n} from \"./gamesActionCreators\";\r\nimport { history } from \"../global/Store\";\r\nimport { pendingChanges, selectEditSchieber } from \"./gamesSelector\";\r\nimport { SchieberSession, initialSchieberCreator } from \"./gamesReducer\";\r\nimport { createResponseMessage } from \"../api/apiActionCreator\";\r\n\r\nconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\r\n\r\nexport function* fetchSchiebersSaga() {\r\n yield watchApiCall(loadSchiebers(), putSchiebers);\r\n}\r\nexport function* watchFetchSchiebersSaga() {\r\n yield takeLatest(AT.FETCH_SCHIEBERS, fetchSchiebersSaga);\r\n}\r\n\r\nexport function* fetchDraftsSaga() {\r\n yield watchApiCall(loadSchieberDrafts(), putSchieberDrafts);\r\n}\r\nexport function* watchFetchDraftsSaga() {\r\n yield takeLatest(AT.FETCH_DRAFTS, fetchDraftsSaga);\r\n}\r\nexport function* watchPutAuth() {\r\n yield takeLatest(AT.PUT_AUTH, fetchDraftsSaga);\r\n}\r\n\r\nexport function* fetchSchieberSaga(sessionId: string): any {\r\n yield watchApiCall(loadSchieber(sessionId), putCurrentSchieber);\r\n}\r\nexport function* fetchSchieberDetailsSaga(sessionId: string): any {\r\n yield watchApiCall(loadSchieber(sessionId), putSchieberDetails);\r\n}\r\nexport function* watchFetchSchieberSaga() {\r\n yield takeLatest(AT.FETCH_SCHIEBER, (data: any) =>\r\n fetchSchieberSaga(data.payload)\r\n );\r\n}\r\nexport function* watchFetchSchieberDetailsSaga() {\r\n yield takeLatest(AT.FETCH_SCHIEBERDETAILS, (data: any) =>\r\n fetchSchieberDetailsSaga(data.payload)\r\n );\r\n}\r\n\r\nexport function* saveSession() {\r\n const session: SchieberSession = yield select(selectEditSchieber);\r\n yield watchApiCall(createSchieber(session), putSchieberFromServer);\r\n}\r\n\r\nexport function* saveSchieberSession() {\r\n const session: SchieberSession = yield select(selectEditSchieber);\r\n yield watchApiCall(createSchieber(session), putSchieberFromServer);\r\n}\r\nexport function* watchSaveSchieberSession() {\r\n yield takeLatest(AT.LOCK_SCHIEBERMETADATA, saveSchieberSession);\r\n}\r\n\r\nexport function* deleteSchieberSession() {\r\n const session: SchieberSession = yield select(selectEditSchieber);\r\n if (session?.sessionId) {\r\n yield watchApiCall(\r\n deleteSchieber(session.sessionId as number),\r\n createResponseMessage(\"Gelöscht\", \"Konnte nicht löschen\")\r\n );\r\n }\r\n}\r\nexport function* watchDeleteSchieberSession() {\r\n yield takeLatest(AT.DELETE_SCHIEBERSESSION, deleteSchieberSession);\r\n}\r\n\r\nexport function* saveSchieberDraft() {\r\n const session: SchieberSession = yield select(selectEditSchieber);\r\n yield watchApiCall(createSchieberDraft(session), putSchieberDraftFromServer);\r\n}\r\nexport function* watchSaveSchieberDraft() {\r\n yield takeLatest(AT.SAVE_SCHIEBERSESSION, saveSchieberDraft);\r\n}\r\n\r\nexport function* syncSchieberDraft() {\r\n while (true) {\r\n yield delay(10000);\r\n const mustSave: boolean = yield select(pendingChanges);\r\n if (mustSave) {\r\n yield saveSchieberDraft();\r\n }\r\n }\r\n}\r\n\r\nexport function* approveDraft(action: any) {\r\n yield watchApiCall(\r\n approveSchieberDraft(action.payload),\r\n putApprovalFromServer\r\n );\r\n}\r\nexport function* watchApproveDraft() {\r\n yield takeEvery(AT.APPROVE_SCHIEBERSESSIONDRAFT, approveDraft);\r\n}\r\n\r\nexport function* approveSession(action: any) {\r\n yield watchApiCall(approveSchieber(action.payload), putApprovalFromServer);\r\n}\r\nexport function* watchApproveSession() {\r\n yield takeEvery(AT.APPROVE_SCHIEBERSESSION, approveSession);\r\n}\r\n\r\nexport function* announceApproval() {\r\n yield history.push(\"/schiebers\");\r\n yield put(putCurrentSchieber(initialSchieberCreator()));\r\n}\r\nexport function* watchAnnounceApproval() {\r\n yield takeLatest(AT.ANNOUNCE_APPROVAL, announceApproval);\r\n}\r\n\r\nexport function* handleSchieberAnnouncement() {\r\n yield history.push(\"/erfassen\");\r\n yield saveSchieberDraft();\r\n}\r\nexport function* watchSchieberUpdateFromServer() {\r\n yield takeLatest(AT.ANNOUNCE_SCHIEBER, handleSchieberAnnouncement);\r\n}\r\n\r\nexport default function* rootGamesSaga() {\r\n yield all([\r\n watchFetchSchiebersSaga(),\r\n watchFetchSchieberSaga(),\r\n watchFetchSchieberDetailsSaga(),\r\n watchSaveSchieberSession(),\r\n watchDeleteSchieberSession(),\r\n watchSaveSchieberDraft(),\r\n watchFetchDraftsSaga(),\r\n watchApproveDraft(),\r\n watchApproveSession(),\r\n watchAnnounceApproval(),\r\n watchSchieberUpdateFromServer(),\r\n watchPutAuth(),\r\n syncSchieberDraft(),\r\n ]);\r\n}\r\n","import { AT } from \"../global/actionTypes\";\nimport { Player } from \"../types/types\";\n\nexport interface PlayerState {\n data: Player[];\n}\nexport const playerReducer = (\n state: PlayerState = { data: [] },\n action: any\n): PlayerState => {\n switch (action.type) {\n case AT.PUT_PLAYERS: {\n return { ...state, data: action.payload };\n }\n case AT.PUT_PLAYERDETAILS: {\n return {\n ...state,\n data: state.data.map((p: Player) =>\n p.userId === action.payload.userId ? action.payload : p\n ),\n };\n }\n case AT.FETCH_PLAYERS: {\n return { ...state };\n }\n }\n return { ...state };\n};\n","import { fetchGet } from \"../util/apiUtil\";\n\nexport const loadPlayers = () => fetchGet(\"Players/GetAll\");\nexport const loadPlayerDetails = (playerId: number) =>\n fetchGet(\"Players/GetDetails\", { playerId });\n","import { all, takeEvery, takeLatest } from \"redux-saga/effects\";\r\nimport { loadPlayerDetails, loadPlayers } from \"../api/playersApi\";\r\nimport { AT } from \"../global/actionTypes\";\r\nimport { watchApiCall } from \"../util/apiUtil\";\r\nimport { putPlayerDetails, putPlayers } from \"./playerActionCreators\";\r\n\r\nexport function* fetchPlayersSaga() {\r\n yield watchApiCall(loadPlayers(), putPlayers);\r\n}\r\nexport function* watchFetchPlayersSaga() {\r\n yield takeEvery(AT.FETCH_PLAYERS, fetchPlayersSaga);\r\n}\r\n\r\nexport function* fetchPlayerDetailsSaga(playerId: number) {\r\n yield watchApiCall(loadPlayerDetails(playerId), putPlayerDetails);\r\n}\r\nexport function* watchFetchPlayerDetailsSaga() {\r\n yield takeLatest(AT.FETCH_PLAYERDETAILS, (action: any) =>\r\n fetchPlayerDetailsSaga(action.payload)\r\n );\r\n}\r\n\r\nexport default function* rootPlayerSaga() {\r\n yield all([watchFetchPlayersSaga(), watchFetchPlayerDetailsSaga()]);\r\n}\r\n","import { AT } from \"../global/actionTypes\";\r\n\r\nexport interface SeasonState {\r\n data: Season[];\r\n}\r\nexport interface Season {\r\n seasonId?: number;\r\n name: string;\r\n active: boolean;\r\n}\r\nconst initialSeason = {\r\n seasonId: -1,\r\n name: \"Unbekannt\",\r\n active: true,\r\n};\r\n\r\nexport const seasonReducer = (\r\n state: SeasonState = { data: [initialSeason] },\r\n action: any\r\n): SeasonState => {\r\n switch (action.type) {\r\n case AT.PUT_SEASONS: {\r\n return { ...state, data: action.payload };\r\n }\r\n case AT.PUT_SEASON: {\r\n return {\r\n ...state,\r\n data: [\r\n ...(state?.data?.map((s) =>\r\n s.seasonId === action.payload.seasonId ? action.payload : s\r\n ) ?? []),\r\n ],\r\n };\r\n }\r\n }\r\n return { ...state };\r\n};\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { Season } from \"./seasonReducer\";\r\n\r\nexport const putSeasons = (seasons: Season[]) => ({\r\n type: AT.PUT_SEASONS,\r\n payload: seasons,\r\n});\r\nexport const putSeason = (season: Season) => ({\r\n type: AT.PUT_SEASON,\r\n payload: season,\r\n});\r\nexport const announceNewSeason = (season: {\r\n seasonId: number;\r\n name: string;\r\n}) => ({\r\n type: AT.ANNOUNCE_NEWSEASON,\r\n payload: season.name,\r\n});\r\n\r\nexport const updateSeason = (season: Season) => ({\r\n type: AT.FETCH_SEASON_UPDATE,\r\n payload: season,\r\n});\r\nexport const fetchSeasons = () => ({ type: AT.FETCH_SEASONS });\r\nexport const createSeason = (seasonName: string) => ({\r\n type: AT.FETCH_SEASON_ADD,\r\n payload: seasonName,\r\n});\r\n","import { Season } from \"../seasons/seasonReducer\";\r\nimport { fetchGet, fetchPost } from \"../util/apiUtil\";\r\n\r\nexport const loadSeasons = () => fetchGet(\"Seasons/GetAll\");\r\nexport const createSeason = (name: string) =>\r\n fetchPost(\"Seasons/Create\", { name });\r\nexport const updateSeason = (season: Season) =>\r\n fetchPost(\"Seasons/Update\", season);\r\n","import { all, put, takeEvery, takeLatest } from \"redux-saga/effects\";\r\nimport { announceNewSeason, putSeasons } from \"./seasonActionCreators\";\r\nimport { AT } from \"../global/actionTypes\";\r\nimport { createSeason, loadSeasons, updateSeason } from \"../api/seasonsApi\";\r\nimport { watchApiCall } from \"../util/apiUtil\";\r\nimport { createResponseMessage } from \"../api/apiActionCreator\";\r\n\r\nexport function* fetchSeasonsSaga() {\r\n yield watchApiCall(loadSeasons(), putSeasons);\r\n}\r\nexport function* watchFetchSeasonsSaga() {\r\n yield takeLatest(AT.FETCH_SEASONS, fetchSeasonsSaga);\r\n}\r\n\r\nexport function* fetchCreateSeasonSaga(seasonName: string) {\r\n yield watchApiCall(createSeason(seasonName), announceNewSeason);\r\n}\r\nexport function* watchFetchCreateSeasonSaga() {\r\n yield takeLatest(AT.FETCH_SEASON_ADD, (action: any) =>\r\n fetchCreateSeasonSaga(action.payload)\r\n );\r\n}\r\nexport function* fetchUpdateSeasonSaga(season: any) {\r\n yield watchApiCall(\r\n updateSeason(season),\r\n createResponseMessage(\"Änderige send gspeicheret.\", \"Ned chöne speichere.\")\r\n );\r\n}\r\nexport function* watchFetchUpdateSeasonSaga() {\r\n yield takeEvery(AT.FETCH_SEASON_UPDATE, (action: any) =>\r\n fetchUpdateSeasonSaga(action.payload)\r\n );\r\n}\r\n\r\nexport function* addedSeason(seasonName: string) {\r\n yield fetchSeasonsSaga();\r\n yield put(\r\n createResponseMessage(\"Saison erstellt\", \"Ned chöne erstelle.\")(seasonName)\r\n );\r\n}\r\nexport function* watchAddedSeason() {\r\n yield takeLatest(AT.ANNOUNCE_NEWSEASON, (action: any) =>\r\n addedSeason(action.payload)\r\n );\r\n}\r\n\r\nexport default function* rootSeasonSaga() {\r\n yield all([\r\n watchFetchSeasonsSaga(),\r\n watchFetchCreateSeasonSaga(),\r\n watchFetchUpdateSeasonSaga(),\r\n watchAddedSeason(),\r\n ]);\r\n}\r\n","import { AT } from \"../global/actionTypes\";\nimport { AuthUser } from \"../types/types\";\n\nexport interface UserState {\n currentUser?: AuthUser;\n}\n\nexport const userReducer = (\n state: UserState = { currentUser: undefined },\n action: any\n): UserState => {\n switch (action.type) {\n case AT.PUT_AUTH: {\n return { ...state, currentUser: action.payload };\n }\n case AT.ANNOUNCE_NEWCLUB: {\n return { ...state, currentUser: action.payload };\n }\n case AT.PUT_PERSONAL_DATA: {\n return {\n ...state,\n currentUser: { ...state.currentUser, ...action.payload },\n };\n }\n case AT.AUTH_EXPIRED: {\n return { ...state, currentUser: undefined };\n }\n case AT.DELETE_AUTH: {\n return { ...state, currentUser: undefined };\n }\n }\n return { ...state };\n};\n","import { User } from \"../types/types\";\r\nimport { fetchPost } from \"../util/apiUtil\";\r\n\r\nexport const authenticate = (data: {\r\n nickname: string;\r\n password: string;\r\n shortName: string;\r\n}) => fetchPost(\"users/authenticate\", data);\r\n\r\nexport const changePassword = (data: {\r\n oldPassword: string;\r\n newPassword: string;\r\n}) => fetchPost(\"users/changePassword\", data);\r\n\r\nexport const updateUser = (data: User) => fetchPost(\"users/update\", data);\r\n","import { all, put, takeLatest } from \"redux-saga/effects\";\r\nimport { AT } from \"../global/actionTypes\";\r\nimport { watchApiCall } from \"../util/apiUtil\";\r\nimport { authenticate, changePassword, updateUser } from \"../api/authApi\";\r\nimport { putAuthData, putCurrentUser } from \"./userActionCreators\";\r\nimport { createResponseMessage } from \"../api/apiActionCreator\";\r\nimport { currentSubDomain } from \"../util/commonUtil\";\r\n\r\nexport function* fetchLoginSaga(data: any) {\r\n const shortName = currentSubDomain();\r\n yield watchApiCall(authenticate({ ...data, shortName }), putAuthData);\r\n}\r\nexport function* watchFetchLoginSaga() {\r\n yield takeLatest(AT.FETCH_LOGIN, (data: any) => fetchLoginSaga(data.payload));\r\n}\r\n\r\nexport function* fetchChangePasswordSaga(data: any) {\r\n yield watchApiCall(\r\n changePassword(data),\r\n createResponseMessage(\"Kennwort esch gänderet\", \"Ned chöne ändere\")\r\n );\r\n}\r\nexport function* watchFetchChangePasswordSaga() {\r\n yield takeLatest(AT.FETCH_CHANGE_PASSWORD, (data: any) =>\r\n fetchChangePasswordSaga(data.payload)\r\n );\r\n}\r\n\r\nexport function* fetchUpdateCurrentUserSaga(data: any) {\r\n yield watchApiCall(updateUser(data), putCurrentUser, (result: any) =>\r\n put(createResponseMessage(\"Date sind apasst\", \"Ned chöne apasse\")(result))\r\n );\r\n}\r\nexport function* watchFetchUpdateCurrentUserSaga() {\r\n yield takeLatest(AT.FETCH_CURRENTUSER_UPDATE, (data: any) =>\r\n fetchUpdateCurrentUserSaga(data.payload)\r\n );\r\n}\r\n\r\nexport default function* rootUserSaga() {\r\n yield all([\r\n watchFetchLoginSaga(),\r\n watchFetchChangePasswordSaga(),\r\n watchFetchUpdateCurrentUserSaga(),\r\n ]);\r\n}\r\n","import { User } from \"../types/types\";\nimport { fetchGet, fetchPost } from \"../util/apiUtil\";\n\nexport const loadUsers = () => fetchGet(\"players/GetAll\");\n\nexport const updateUser = (user: User) => fetchPost(\"players/Update\", user);\nexport const createUser = (user: User) => fetchPost(\"players/Create\", user);\n","import { AT } from \"../global/actionTypes\";\nimport { User } from \"../types/types\";\n\nexport const putUsers = (users: User[]) => ({\n type: AT.PUT_USERS,\n payload: users,\n});\nexport const putUserDetails = (user: User) => ({\n type: AT.PUT_USERDETAILS,\n payload: user,\n});\n\nexport const updateUser = (user: User) => ({\n type: AT.FETCH_USER_UPDATE,\n payload: user,\n});\nexport const createUser = (nickname: string) => ({\n type: AT.FETCH_USER_CREATE,\n payload: { nickname },\n});\nexport const announceNewUser = (user: User) => ({\n type: AT.ANNOUNCE_NEWUSER,\n payload: { ...user },\n});\n\nexport const fetchUsers = () => ({ type: AT.FETCH_USERS });\n","import { all, put, takeEvery, takeLatest } from \"redux-saga/effects\";\r\nimport { AT } from \"../global/actionTypes\";\r\nimport { watchApiCall } from \"../util/apiUtil\";\r\nimport { createUser, loadUsers, updateUser } from \"../api/adminApi\";\r\nimport { announceNewUser, putUsers } from \"./adminActionCreators\";\r\nimport { createResponseMessage } from \"../api/apiActionCreator\";\r\nimport { history } from \"../global/Store\";\r\n\r\nexport function* fetchUsersSaga() {\r\n yield watchApiCall(loadUsers(), putUsers);\r\n}\r\nexport function* watchFetchUsersSaga() {\r\n yield takeEvery(AT.FETCH_USERS, fetchUsersSaga);\r\n}\r\n\r\nexport function* fetchUpdateUserSaga(user: any) {\r\n yield watchApiCall(\r\n updateUser(user),\r\n createResponseMessage(\"Benutzer gespeichert.\", \"Konnte nicht speichern.\")\r\n );\r\n}\r\nexport function* watchFetchUpdateUserSaga() {\r\n yield takeEvery(AT.FETCH_USER_UPDATE, (action: any) =>\r\n fetchUpdateUserSaga(action.payload)\r\n );\r\n}\r\n\r\nexport function* fetchCreateUserSaga(user: any) {\r\n yield watchApiCall(createUser(user), announceNewUser);\r\n}\r\nexport function* watchFetchCreateUserSaga() {\r\n yield takeEvery(AT.FETCH_USER_CREATE, (action: any) =>\r\n fetchCreateUserSaga(action.payload)\r\n );\r\n}\r\n\r\nexport function* addedUser(user: any) {\r\n yield fetchUsersSaga();\r\n history.push(\"/admin/user/\" + user.userId);\r\n yield put(\r\n createResponseMessage(\r\n \"Benutzer erstellt\",\r\n \"Konnte nicht erstellt werden.\"\r\n )(user)\r\n );\r\n}\r\nexport function* watchAddedUser() {\r\n yield takeLatest(AT.ANNOUNCE_NEWUSER, (action: any) =>\r\n addedUser(action.payload)\r\n );\r\n}\r\n\r\nexport default function* rootAdminSaga() {\r\n yield all([\r\n watchFetchUsersSaga(),\r\n watchFetchUpdateUserSaga(),\r\n watchFetchCreateUserSaga(),\r\n watchAddedUser(),\r\n ]);\r\n}\r\n","import { AT } from \"../global/actionTypes\";\nimport { User } from \"../types/types\";\n\nexport interface AdminState {\n users: User[];\n}\nconst intialAdminState = { users: [] };\n\nexport const adminReducer = (\n state: AdminState = intialAdminState,\n action: any\n): AdminState => {\n switch (action.type) {\n case AT.DELETE_PERSONAL_DATA: {\n return intialAdminState;\n }\n case AT.PUT_USERS: {\n return { ...state, users: action.payload };\n }\n case AT.PUT_USERDETAILS: {\n return {\n ...state,\n users: [\n ...(state?.users?.map((u) =>\n u.userId === action.payload.userId ? action.payload : u\n ) ?? []),\n ],\n };\n }\n case AT.ANNOUNCE_NEWUSER: {\n return { ...state, users: [...state.users, action.payload] };\n }\n }\n return { ...state };\n};\n","import { AT } from \"../global/actionTypes\";\r\nimport { Club } from \"../types/types\";\r\n\r\nexport interface ClubsState {\r\n clubs?: Club[];\r\n}\r\n\r\nexport const clubsReducer = (\r\n state: ClubsState = { clubs: undefined },\r\n action: any\r\n): ClubsState => {\r\n switch (action.type) {\r\n case AT.PUT_CLUBS: {\r\n return { ...state, clubs: action.payload };\r\n }\r\n case AT.ANNOUNCE_NEWCLUB: {\r\n return { ...state };\r\n }\r\n }\r\n return { ...state };\r\n};\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { ClubDetails } from \"../types/types\";\r\n\r\nexport interface ClubdetailsState {\r\n club?: ClubDetails;\r\n}\r\nconst initialClubsState = { club: undefined };\r\n\r\nexport const clubdetailsReducer = (\r\n state: ClubdetailsState = initialClubsState,\r\n action: any\r\n): ClubdetailsState => {\r\n switch (action.type) {\r\n case AT.PUT_CLUBDETAILS: {\r\n return { ...state, club: action.payload };\r\n }\r\n case AT.ANNOUNCE_NEWCLUB: {\r\n return { ...state };\r\n }\r\n case AT.ANNOUNCE_CLUBUPDATE: {\r\n return { ...state };\r\n }\r\n }\r\n return { ...state };\r\n};\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { ClubDetails } from \"../types/types\";\r\n\r\nexport const fetchClubDetails = (shortName: string) => ({\r\n type: AT.FETCH_CLUBDETAILS,\r\n payload: { shortName },\r\n});\r\nexport const fetchCreateClub = (club: any) => ({\r\n type: AT.FETCH_CLUBDETAILS_ADD,\r\n payload: { club },\r\n});\r\nexport const putClubdetails = (club: ClubDetails) => ({\r\n type: AT.PUT_CLUBDETAILS,\r\n payload: club,\r\n});\r\nexport const fetchUpdateClubdetails = (club: ClubDetails) => ({\r\n type: AT.FETCH_CLUBDETAILS_UPDATE,\r\n payload: club,\r\n});\r\nexport const announceNewClub = (club: ClubDetails) => ({\r\n type: AT.ANNOUNCE_NEWCLUB,\r\n payload: { ...club },\r\n});\r\nexport const announceClubUpdate = (shortName: string) => ({\r\n type: AT.ANNOUNCE_CLUBUPDATE,\r\n payload: shortName,\r\n});\r\n","import { Club } from \"../types/types\";\r\nimport { fetchGet, fetchPost } from \"../util/apiUtil\";\r\n\r\nexport const loadClubdetails = (shortName: string) =>\r\n fetchGet(\"Club/GetByShortName\", shortName);\r\n\r\nexport const updateClubdetails = (club: Club) => fetchPost(\"Club/Update\", club);\r\n\r\nexport const createClub = (club: Club) => fetchPost(\"Club/Create\", club);\r\n","import { all, put, select, takeEvery, takeLatest } from \"redux-saga/effects\";\r\nimport { AT } from \"../global/actionTypes\";\r\nimport { watchApiCall } from \"../util/apiUtil\";\r\nimport { createResponseMessage } from \"../api/apiActionCreator\";\r\nimport {\r\n announceClubUpdate,\r\n putClubdetails,\r\n} from \"./clubdetailsActionCreators\";\r\nimport { loadClubdetails, updateClubdetails } from \"../api/clubdetailsApi\";\r\nimport {\r\n currentSubDomain,\r\n getSubDomainUrl,\r\n serializeObjectToQuerystring,\r\n} from \"../util/commonUtil\";\r\nimport { selectUser } from \"../user/userSelector\";\r\nimport { AuthUser } from \"../types/types\";\r\n\r\nexport function* fetchClubdetailsSaga(data: any) {\r\n yield watchApiCall(loadClubdetails(data), putClubdetails);\r\n}\r\nexport function* watchFetchClubdetailsSaga() {\r\n yield takeEvery(AT.FETCH_CLUBDETAILS, (action: any) =>\r\n fetchClubdetailsSaga(action.payload)\r\n );\r\n}\r\n\r\nexport function* fetchUpdateClubdetailsSaga(data: any) {\r\n yield watchApiCall(\r\n updateClubdetails(data),\r\n announceClubUpdate,\r\n (result: any) =>\r\n put(createResponseMessage(\"Date sind apasst\", \"Ned chöne apasse\")(result))\r\n );\r\n}\r\nexport function* watchFetchUpdateClubdetailsSaga() {\r\n yield takeEvery(AT.FETCH_CLUBDETAILS_UPDATE, (action: any) =>\r\n fetchUpdateClubdetailsSaga(action.payload)\r\n );\r\n}\r\n\r\nexport function* setClub(user: AuthUser, path: string) {\r\n const href =\r\n getSubDomainUrl(user.shortName) +\r\n path +\r\n \"?\" +\r\n serializeObjectToQuerystring(user);\r\n document.location = href;\r\n}\r\nexport function* watchNewClub() {\r\n yield takeEvery(AT.ANNOUNCE_NEWCLUB, (action: any) =>\r\n setClub(action.payload, \"/enter\")\r\n );\r\n}\r\n\r\nexport function* checkbackClub(clubShortName: string) {\r\n if (\r\n clubShortName &&\r\n currentSubDomain()?.toLowerCase() !== clubShortName?.toLowerCase()\r\n ) {\r\n const user: AuthUser = yield select(selectUser);\r\n yield setClub({ ...user, shortName: clubShortName }, \"/reenter\");\r\n }\r\n}\r\nexport function* watchClubshortnameChange() {\r\n yield takeLatest(AT.ANNOUNCE_CLUBUPDATE, (action: any) =>\r\n checkbackClub(action.payload)\r\n );\r\n}\r\n\r\nexport function* watchPutClubUpdate() {\r\n yield takeLatest(AT.ANNOUNCE_CLUBUPDATE, (action: any) =>\r\n fetchClubdetailsSaga({ shortName: action.payload })\r\n );\r\n}\r\n\r\nexport default function* rootClubdetailsSaga() {\r\n yield all([\r\n watchFetchClubdetailsSaga(),\r\n watchPutClubUpdate(),\r\n watchClubshortnameChange(),\r\n watchFetchUpdateClubdetailsSaga(),\r\n watchNewClub(),\r\n ]);\r\n}\r\n","import { fetchGet } from \"../util/apiUtil\";\r\n\r\nexport const loadClubs = () => fetchGet(\"Club/GetAll\");\r\n","import { AT } from \"../global/actionTypes\";\r\nimport { Club } from \"../types/types\";\r\n\r\nexport const putClubs = (clubs: Club[]) => ({\r\n type: AT.PUT_CLUBS,\r\n payload: clubs,\r\n});\r\n\r\nexport const fetchClubs = () => ({ type: AT.FETCH_CLUBS });\r\n","import { all, takeEvery, takeLatest } from \"redux-saga/effects\";\r\nimport { AT } from \"../global/actionTypes\";\r\nimport { watchApiCall } from \"../util/apiUtil\";\r\nimport { loadClubs } from \"../api/clubsApi\";\r\nimport { putClubs } from \"./clubsActionCreators\";\r\nimport { createClub } from \"../api/clubdetailsApi\";\r\nimport { announceNewClub } from \"../clubdetails/clubdetailsActionCreators\";\r\n\r\nexport function* fetchClubsSaga() {\r\n yield watchApiCall(loadClubs(), putClubs);\r\n}\r\nexport function* watchFetchClubsSaga() {\r\n yield takeEvery(AT.FETCH_CLUBS, fetchClubsSaga);\r\n}\r\n\r\nexport function* fetchCreateClubSaga(club: any) {\r\n yield watchApiCall(createClub(club), announceNewClub);\r\n}\r\nexport function* watchFetchCreateClubSaga() {\r\n yield takeEvery(AT.FETCH_CLUBDETAILS_ADD, (action: any) =>\r\n fetchCreateClubSaga(action.payload.club)\r\n );\r\n}\r\n\r\nexport function* setClub(authData: any) {\r\n yield fetchClubsSaga();\r\n}\r\nexport function* watchAuth() {\r\n yield takeLatest(AT.PUT_AUTH, (action: any) => setClub(action.payload));\r\n}\r\n\r\nexport default function* rootClubsSaga() {\r\n yield all([watchFetchClubsSaga(), watchFetchCreateClubSaga(), watchAuth()]);\r\n}\r\n","import { applyMiddleware, combineReducers, compose, createStore } from \"redux\";\r\nimport createSagaMiddleware from \"redux-saga\";\r\nimport { all } from \"redux-saga/effects\";\r\nimport { ApiState, apiReducer } from \"../api/apiReducer\";\r\nimport { GamesState, gamesReducer } from \"../games/gamesReducer\";\r\nimport rootGamesSaga from \"../games/gamesSagas\";\r\nimport { PlayerState, playerReducer } from \"../players/playerReducer\";\r\nimport rootPlayerSaga from \"../players/playerSagas\";\r\nimport { SeasonState, seasonReducer } from \"../seasons/seasonReducer\";\r\nimport rootSeasonSaga from \"../seasons/seasonSagas\";\r\nimport { UserState, userReducer } from \"../user/userReducer\";\r\nimport rootUserSaga from \"../user/userSaga\";\r\nimport { connectRouter, routerMiddleware } from \"connected-react-router\";\r\nimport { createBrowserHistory } from \"history\";\r\nimport rootAdminSaga from \"../admin/adminSaga\";\r\nimport { AdminState, adminReducer } from \"../admin/adminReducer\";\r\nimport { persistStore } from \"redux-persist\";\r\nimport storage from \"redux-persist/es/storage\";\r\nimport autoMergeLevel1 from \"redux-persist/es/stateReconciler/autoMergeLevel1\";\r\nimport persistReducer from \"redux-persist/lib/persistReducer\";\r\nimport { ClubsState, clubsReducer } from \"../clubs/clubsReducer\";\r\nimport {\r\n ClubdetailsState,\r\n clubdetailsReducer,\r\n} from \"../clubdetails/clubdetailsReducer\";\r\nimport rootClubdetailsSaga from \"../clubdetails/clubdetailsSaga\";\r\nimport rootClubsSaga from \"../clubs/clubsSaga\";\r\n\r\nconst persistConfig = {\r\n storage,\r\n stateReconciler: autoMergeLevel1,\r\n};\r\nconst createRootReducer = (history: any) =>\r\n combineReducers({\r\n router: connectRouter(history),\r\n seasons: persistReducer(\r\n { ...persistConfig, key: \"seasons\" },\r\n seasonReducer\r\n ),\r\n apiState: apiReducer,\r\n players: persistReducer(\r\n { ...persistConfig, key: \"players\" },\r\n playerReducer\r\n ),\r\n games: persistReducer(\r\n { ...persistConfig, key: \"games\" },\r\n gamesReducer\r\n ),\r\n user: persistReducer(\r\n { ...persistConfig, key: \"user\" },\r\n userReducer\r\n ),\r\n admin: adminReducer,\r\n clubs: clubsReducer,\r\n clubdetails: persistReducer(\r\n { ...persistConfig, key: \"clubdetails\" },\r\n clubdetailsReducer\r\n ),\r\n });\r\n\r\nconst composeEnhancers =\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n\r\nexport const history = createBrowserHistory();\r\n\r\nconst saga = createSagaMiddleware();\r\nconst router = routerMiddleware(history);\r\nconst middleWares = [saga, router];\r\n\r\nconst store = createStore(\r\n createRootReducer(history),\r\n composeEnhancers(applyMiddleware(...middleWares))\r\n);\r\n\r\nsaga.run(rootSaga);\r\n\r\nfunction* rootSaga() {\r\n yield all([\r\n rootSeasonSaga(),\r\n rootPlayerSaga(),\r\n rootGamesSaga(),\r\n rootUserSaga(),\r\n rootAdminSaga(),\r\n rootClubsSaga(),\r\n rootClubdetailsSaga(),\r\n ]);\r\n}\r\n\r\nexport type RootState = {\r\n router: any;\r\n apiState: ApiState;\r\n seasons: SeasonState;\r\n players: PlayerState;\r\n games: GamesState;\r\n user: UserState;\r\n admin: AdminState;\r\n clubs: ClubsState;\r\n clubdetails: ClubdetailsState;\r\n};\r\n\r\nexport const persistor = persistStore(store);\r\n\r\nexport default store;\r\n","import { call, put } from \"redux-saga/effects\";\r\nimport axios from \"axios\";\r\nimport {\r\n fetchFulfilled,\r\n fetchPending,\r\n fetchRejected,\r\n} from \"../api/apiActionCreator\";\r\nimport store from \"../global/Store\";\r\nimport { currentSubDomain } from \"./commonUtil\";\r\n\r\nexport interface ApiAction {\r\n action: () => any;\r\n url: string;\r\n}\r\n\r\nexport function baseUrl(): string {\r\n return process.env.NODE_ENV === \"development\"\r\n ? \"http://localhost:5000/api/v1/\"\r\n : \"/api/v1/\";\r\n}\r\n\r\nexport function createHeaders(): any {\r\n const userObject = store?.getState()?.user?.currentUser;\r\n if (userObject) {\r\n return {\r\n Authorization: \"Bearer \" + userObject.token,\r\n club: currentSubDomain() ?? \"-\",\r\n };\r\n } else {\r\n return {\r\n club: currentSubDomain() ?? \"-\",\r\n };\r\n }\r\n}\r\n\r\nexport function* watchApiCall(\r\n apiCall: ApiAction,\r\n actionCreator: (param: any) => { type: string; payload: any | any[] },\r\n callBack?: (param: any) => any\r\n): any {\r\n const requestId = `REQUEST_${new Date().getTime()}`;\r\n yield put(fetchPending(requestId, apiCall.url));\r\n try {\r\n const res = yield call(apiCall.action);\r\n //res = yield res.json();\r\n yield put(fetchFulfilled(requestId));\r\n yield put(actionCreator(res));\r\n if (callBack) {\r\n yield callBack(res);\r\n }\r\n } catch (error: any) {\r\n console.warn(error);\r\n yield put(fetchRejected(requestId));\r\n }\r\n}\r\n\r\nexport function fetchGet(url: string, queryParams?: any): ApiAction {\r\n const fullUrl = baseUrl() + url;\r\n const headers = createHeaders();\r\n return {\r\n action: () =>\r\n axios\r\n .get(fullUrl, {\r\n timeout: 10000,\r\n headers,\r\n params: { ...queryParams },\r\n })\r\n .then((response) => response.data),\r\n url: fullUrl,\r\n };\r\n}\r\n\r\nexport function fetchPost(url: string, data: any): ApiAction {\r\n const fullUrl = baseUrl() + url;\r\n const headers = createHeaders();\r\n return {\r\n action: () =>\r\n axios\r\n .post(fullUrl, data, {\r\n timeout: 10000,\r\n headers,\r\n })\r\n .then((response) => response.data),\r\n url: fullUrl,\r\n };\r\n}\r\n\r\nexport function fetchPostFile(url: string, dataUrl: any): ApiAction {\r\n const fullUrl = baseUrl() + url;\r\n const headers = createHeaders();\r\n return {\r\n action: () =>\r\n fetch(dataUrl)\r\n .then((r) => r.blob())\r\n .then(\r\n (blobFile) => new File([blobFile], \"Anhang\", { type: \"image/jpg\" })\r\n )\r\n .then((file) =>\r\n axios.post(fullUrl, file, {\r\n timeout: 20000,\r\n headers,\r\n })\r\n )\r\n .then((response) => response.data),\r\n url: fullUrl,\r\n };\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { baseUrl } from \"../../util/apiUtil\";\r\n\r\ninterface Props {\r\n guid: string;\r\n size: \"s\" | \"m\" | \"l\" | \"xl\" | \"max\";\r\n}\r\nexport const Image = React.memo(function Image(props: Props) {\r\n const url = useMemo(() => {\r\n if (props.guid) {\r\n return baseUrl() + \"media/\" + props.guid;\r\n }\r\n return props.size === \"s\"\r\n ? \"placeholder-small.png\"\r\n : props.size === \"m\"\r\n ? \"placeholder-medium.png\"\r\n : \"placeholder-large.png\";\r\n }, [props.guid, props.size]);\r\n\r\n const className = useMemo(() => \"image-\" + props.size ?? \"m\", [props.size]);\r\n\r\n return ;\r\n});\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectClubdetails } from \"../../clubdetails/clubdetailsSelector\";\r\nimport { Image } from \"../Common/Image\";\r\n\r\nimport \"./Welcome.scss\";\r\n\r\nexport function Welcome() {\r\n const club = useSelector(selectClubdetails);\r\n return (\r\n <>\r\n

    Jassclub {club?.longName}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport \"../../App.scss\";\r\n\r\ninterface Props {\r\n hidden: boolean;\r\n children: any;\r\n click: () => void;\r\n}\r\nexport function NavItems(props: Props) {\r\n const classes = useMemo(\r\n () =>\r\n \"navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse show\" +\r\n (props.hidden ? \" d-none d-sm-block\" : \"\"),\r\n [props.hidden]\r\n );\r\n\r\n return (\r\n <>\r\n
    \r\n
      \r\n {props.children}\r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport {\r\n faSignInAlt,\r\n faSignOutAlt,\r\n faUserAlt,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectUser } from \"../../user/userSelector\";\r\nimport { NavItemLink } from \"../Navigation/NavItemLink\";\r\nimport {\r\n deleteAuthData,\r\n deletePersonalData,\r\n} from \"../../user/userActionCreators\";\r\nimport { useHistory } from \"react-router\";\r\n\r\nexport function UserWidget() {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const user = useSelector(selectUser);\r\n\r\n const logout = useCallback(() => {\r\n dispatch(deleteAuthData);\r\n dispatch(deletePersonalData);\r\n history.push(\"login\");\r\n }, [dispatch, history]);\r\n\r\n return user ? (\r\n user.nickname ? (\r\n \r\n \r\n  \r\n {user.nickname}\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { SessionTeam } from \"../../games/gamesReducer\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { playerTitle, selectPlayer } from \"../../players/playerSelector\";\r\n\r\ninterface Props {\r\n team: SessionTeam;\r\n children?: any;\r\n onClick?: () => any;\r\n}\r\nexport function SchiebersTeamCell(props: Props) {\r\n const player1 = useSelector((state: RootState) =>\r\n selectPlayer(state, props?.team?.player1Id)\r\n );\r\n const player2 = useSelector((state: RootState) =>\r\n selectPlayer(state, props?.team?.player2Id)\r\n );\r\n\r\n return (\r\n \r\n \r\n {player1?.shortName}\r\n \r\n \r\n {playerTitle(player1)}\r\n \r\n \r\n {player2?.shortName}\r\n \r\n \r\n {playerTitle(player2)}\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n","import React, { useCallback, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { fetchSchiebers } from \"../../games/gamesActionCreators\";\r\nimport { SchieberSession } from \"../../games/gamesReducer\";\r\nimport { selectSchiebers } from \"../../games/gamesSelector\";\r\nimport { SchiebersTeamCell } from \"./SchiebersTeamCell\";\r\n\r\ninterface Props {\r\n schiebers: SchieberSession[];\r\n}\r\nexport function Schiebers() {\r\n const dispatch = useDispatch();\r\n\r\n const schiebers = useSelector(selectSchiebers);\r\n\r\n useEffect(() => {\r\n dispatch(fetchSchiebers());\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return schiebers ? (\r\n \r\n ) : (\r\n
    Nüt gfonde
    \r\n );\r\n}\r\n\r\nfunction SchiebersInternal(props: Props) {\r\n const history = useHistory();\r\n\r\n const gotoDetails = useCallback(\r\n (schieber: SchieberSession) =>\r\n history.push(`/schieber/${schieber.sessionId}`),\r\n [history]\r\n );\r\n\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\n \r\n {props.schiebers.map((session: SchieberSession) => (\r\n gotoDetails(session)} key={session?.sessionId}>\r\n \r\n \r\n \r\n \r\n {session?.team1Result}\r\n \r\n \r\n {session?.team2Result}\r\n \r\n \r\n ))}\r\n \r\n
    DatumBemerkigeBisTeam 1Team 2
    {session?.started}{session?.remarks}{session?.pointsGoal}
    \r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport moment from \"moment\";\r\nimport { PlayerWidget } from \"../Common/PlayerWidget\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\ninterface Props {\r\n playerId?: number;\r\n date: any;\r\n}\r\nexport function SchieberDraftApproval(props: Props) {\r\n const formattedDate = useMemo(\r\n // eslint-disable-next-line no-restricted-syntax\r\n () => moment(props.date).format(\"D.M. HH:mm\"),\r\n [props.date]\r\n );\r\n\r\n return (\r\n <>\r\n {props.date && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {formattedDate}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport moment from \"moment\";\r\nimport { SchieberDraft } from \"../../games/gamesReducer\";\r\nimport { SchieberDraftApproval } from \"./SchieberDraftApproval\";\r\nimport { PlayerWidget } from \"../Common/PlayerWidget\";\r\nimport { faSave } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\ninterface Props {\r\n draft: SchieberDraft;\r\n playerId1?: number;\r\n playerId2?: number;\r\n playerId3?: number;\r\n playerId4?: number;\r\n}\r\nexport function SchieberDraftRow(props: Props) {\r\n const formattedDate = useMemo(\r\n // eslint-disable-next-line no-restricted-syntax\r\n () => moment(props.draft.createdOn).format(\"D.M. HH:mm\"),\r\n [props.draft.createdOn]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n    \r\n \r\n \r\n \r\n {formattedDate}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { SchieberDraft, SchieberSession } from \"../../games/gamesReducer\";\r\nimport { SchieberDraftRow } from \"./SchieberDraftRow\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberDraftsTable(props: Props) {\r\n return (\r\n <>\r\n

    Verlauf

    \r\n \r\n \r\n {props.session.draft?.map((draft: SchieberDraft) => (\r\n \r\n ))}\r\n \r\n
    \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n colSpan?: number;\r\n}\r\nexport function SchieberTimelineHeader(props: Props) {\r\n return (\r\n \r\n \r\n {props.session.remarks} ({props.session.pointsGoal})\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n size?: any;\r\n}\r\nexport const Chruetz = React.memo(function Chruetz({ size = \"1em\" }) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n size?: any;\r\n}\r\nexport const Egge = React.memo(function Egge({ size = \"1em\" }) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n size?: any;\r\n}\r\nexport const Herz = React.memo(function Herz({ size = \"1em\" }) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n size?: any;\r\n}\r\nexport const Schufle = React.memo(function Schufle({ size = \"1em\" }) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import React from \"react\";\r\nimport { faArrowDown, faArrowUp } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ReactComponent as C1 } from \"./cards/ch-de/ch-de-1.svg\";\r\nimport { ReactComponent as C2 } from \"./cards/ch-de/ch-de-2.svg\";\r\nimport { ReactComponent as C3 } from \"./cards/ch-de/ch-de-3.svg\";\r\nimport { ReactComponent as C4 } from \"./cards/ch-de/ch-de-4.svg\";\r\nimport { ReactComponent as D4 } from \"./cards/de-de/Bay_gras.svg\";\r\nimport { Chruetz } from \"./Chruetz\";\r\nimport { Egge } from \"./Egge\";\r\nimport { Herz } from \"./Herz\";\r\nimport { Schufle } from \"./Schufle\";\r\nimport { Farb } from \"./Farb\";\r\n\r\nconst mapping = [\r\n { v: 1, c: },\r\n { v: 2, c: },\r\n { v: 3, c: },\r\n { v: 4, c: },\r\n { v: 5, c: },\r\n /*{\r\n v: 1,\r\n c: ,\r\n },\r\n {\r\n v: 2,\r\n c: (\r\n \r\n \r\n \r\n ),\r\n },\r\n {\r\n v: 3,\r\n c: (\r\n \r\n \r\n \r\n ),\r\n },\r\n {\r\n v: 4,\r\n c: (\r\n \r\n \r\n \r\n ),\r\n },\r\n { v: 5, c: },*/\r\n { v: 6, c: },\r\n];\r\n\r\ninterface Props {\r\n size?: any;\r\n variante?: number;\r\n}\r\nexport const VarianteIcon = React.memo(function VarianteIcon({\r\n size = \"1em\",\r\n variante = 1,\r\n}) {\r\n return <>{mapping.find((m) => m.v === variante)?.c ?? ?};\r\n});\r\n","import { useMemo } from \"react\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport { varianteToFactor, weisReducerFn } from \"../../../games/gamesSelector\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n}\r\nexport function SchieberTimelineWeis2(props: Props) {\r\n const team1Wiis = useMemo(\r\n () =>\r\n (props.hand?.team1Wiis?.reduce(weisReducerFn, 0) ?? 0) *\r\n varianteToFactor(props.hand.variante),\r\n [props.hand?.team1Wiis, props.hand.variante]\r\n );\r\n const team2Wiis = useMemo(\r\n () =>\r\n (props.hand?.team2Wiis?.reduce(weisReducerFn, 0) ?? 0) *\r\n varianteToFactor(props.hand.variante),\r\n [props.hand?.team2Wiis, props.hand.variante]\r\n );\r\n return (\r\n <>\r\n {team1Wiis + team2Wiis > 0 && (\r\n \r\n \r\n \r\n
    \r\n {props.hand.team1Wiis.map((weis, index) => (\r\n {weis.betrag} \r\n ))}\r\n {team1Wiis > 0 && team2Wiis > 0 && <> |  }\r\n {props.hand.team2Wiis.map((weis, index) => (\r\n {weis.betrag} \r\n ))}\r\n
    \r\n \r\n \r\n {team1Wiis}\r\n \r\n \r\n {team2Wiis}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { faArrowCircleRight } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport {\r\n selectPointsByHandAndUser,\r\n team1sumreducerlightFn,\r\n team2sumreducerlightFn,\r\n} from \"../../../games/gamesSelector\";\r\nimport { VarianteIcon } from \"../../Assets/VarianteIcon\";\r\nimport { PlayerWidget } from \"../../Common/PlayerWidget\";\r\n\r\nimport \"../timeline.scss\";\r\nimport { SchieberTimelineWeis2 } from \"./SchieberTimelineWeis2\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../global/Store\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n}\r\nexport function SchieberTimelineHand2(props: Props) {\r\n const points = useSelector((state: RootState) =>\r\n selectPointsByHandAndUser(state, props.hand, props.hand.playerDragsiId)\r\n );\r\n const player = useMemo(\r\n () => props.hand?.playerGschobeId ?? props.hand?.playerDragsiId,\r\n [props.hand?.playerDragsiId, props.hand?.playerGschobeId]\r\n );\r\n return (\r\n <>\r\n \r\n \r\n  \r\n {points}\r\n \r\n \r\n {props.hand?.playerGschobeId && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {team1sumreducerlightFn(0, props.hand)}\r\n \r\n \r\n {team2sumreducerlightFn(0, props.hand)}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport {\r\n team1sumreducerFn,\r\n team2sumreducerFn,\r\n} from \"../../../games/gamesSelector\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberTimelineSummary2(props: Props) {\r\n const team1Points = useMemo(\r\n () => props?.session?.hand?.reduce(team1sumreducerFn, 0),\r\n [props.session.hand]\r\n );\r\n const team2Points = useMemo(\r\n () => props?.session?.hand?.reduce(team2sumreducerFn, 0),\r\n [props.session.hand]\r\n );\r\n\r\n return (\r\n \r\n Total\r\n {team1Points}\r\n {team2Points}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { selectTeamTitle } from \"../../../players/playerSelector\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberTimelineTeams2(props: Props) {\r\n const team1 = useSelector((state: RootState) =>\r\n selectTeamTitle(state, props.session.team1)\r\n );\r\n const team2 = useSelector((state: RootState) =>\r\n selectTeamTitle(state, props.session.team2)\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n {team2}\r\n \r\n \r\n \r\n \r\n {team1}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport { SchieberTimelineHeader } from \"./SchieberTimelineHeader\";\r\n\r\nimport \"../timeline.scss\";\r\nimport { SchieberTimelineHand2 } from \"./SchieberTimelineHand2\";\r\nimport { SchieberTimelineSummary2 } from \"./SchieberTimelineSummary2\";\r\nimport { SchieberTimelineTeams2 } from \"./SchieberTimelineTeams2\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberTimeline2(props: Props) {\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\n \r\n \r\n \r\n {props?.session?.hand?.map((hand) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","export const handwrittenfont = \"Caveat, cursive\";\r\nexport const turn = \"rotate(-180deg)\";\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n size?: any;\r\n}\r\nexport const FuenferBuendel = React.memo(function FuenferBuendel({\r\n size = \"1em\",\r\n}) {\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\n );\r\n});\r\n","import React, { useMemo } from \"react\";\r\nimport { FuenferBuendel } from \"../Assets/FuenferBuendel\";\r\nimport \"./common.scss\";\r\n\r\ninterface Props {\r\n char: string;\r\n bundle: 0 | 2 | 5;\r\n count: number;\r\n}\r\nexport const JasstafelNotation = (props: Props) => {\r\n const bundles = useMemo(\r\n () =>\r\n props.bundle ? [...Array(Math.floor(props.count / props.bundle))] : [],\r\n [props]\r\n );\r\n const rest = useMemo(\r\n () => [...Array(props.bundle ? props.count % props.bundle : props.count)],\r\n [props]\r\n );\r\n\r\n return (\r\n <>\r\n {bundles.map((v, i) =>\r\n props.bundle === 2 ? \"X\" : \r\n )}\r\n {rest.map(() => props.char)}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./common.scss\";\r\n\r\ninterface Props {\r\n children: any;\r\n}\r\nexport const JasstafelZContainer = (props: Props) => (\r\n
    \r\n
    {props.children}
    \r\n
    \r\n);\r\n","import React, { useMemo } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { SchieberHand, SchieberSession, Wiis } from \"../../games/gamesReducer\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { selectPlayer } from \"../../players/playerSelector\";\r\nimport { handwrittenfont, turn } from \"../Common/consts\";\r\nimport { JasstafelNotation } from \"../Common/JasstafelNotation\";\r\nimport { JasstafelZContainer } from \"../Common/JasstafelZContainer\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\n\r\ninterface Strichlitructure {\r\n x: number;\r\n v: number;\r\n c: number;\r\n l: number;\r\n zwanzig: number;\r\n rest: number;\r\n}\r\nfunction initStructure(): Strichlitructure {\r\n return {\r\n x: 0,\r\n v: 0,\r\n c: 0,\r\n l: 0,\r\n zwanzig: 0,\r\n rest: 0,\r\n };\r\n}\r\nfunction structureResult(\r\n r: { t1: Strichlitructure; t2: Strichlitructure },\r\n hand: SchieberHand\r\n) {\r\n r.t1 = structureTeamResult(\r\n r.t1,\r\n hand.multiplikator,\r\n hand.team1Result ?? 0,\r\n hand.team1Wiis\r\n );\r\n r.t2 = structureTeamResult(\r\n r.t2,\r\n hand.multiplikator,\r\n hand.team2Result ?? 0,\r\n hand.team2Wiis\r\n );\r\n return r;\r\n}\r\nfunction structureTeamResult(\r\n t: Strichlitructure,\r\n multiplikator: number,\r\n result: number,\r\n wiis: Wiis[]\r\n) {\r\n const total =\r\n (wiis.reduce((p, c) => p + c.betrag, 0) + (result ?? 0)) * multiplikator +\r\n t.rest;\r\n if (total < 0) {\r\n t.rest = total;\r\n return t;\r\n }\r\n t.x += Math.floor(total / 1000);\r\n t.v += Math.floor((total % 1000) / 500);\r\n t.c += Math.floor(((total % 1000) % 500) / 100);\r\n t.l += Math.floor((((total % 1000) % 500) % 100) / 50);\r\n t.zwanzig += Math.floor(((((total % 1000) % 500) % 100) % 50) / 20);\r\n const rest = ((((total % 1000) % 500) % 100) % 50) % 20;\r\n if (rest > 10) {\r\n t.zwanzig++;\r\n t.rest = rest - 20;\r\n } else {\r\n t.rest = rest;\r\n }\r\n\r\n return t;\r\n}\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nfunction SchieberStrichliJassTafelInternal(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n\r\n const t1p1 = useSelector((state: RootState) =>\r\n selectPlayer(state, props.session.team1.player1Id)\r\n );\r\n const t1p2 = useSelector((state: RootState) =>\r\n selectPlayer(state, props.session.team1.player2Id)\r\n );\r\n const t2p1 = useSelector((state: RootState) =>\r\n selectPlayer(state, props.session.team2.player1Id)\r\n );\r\n const t2p2 = useSelector((state: RootState) =>\r\n selectPlayer(state, props.session.team2.player2Id)\r\n );\r\n\r\n const r = useMemo(\r\n () =>\r\n props.session.hand.reduce((p, c) => structureResult(p, c), {\r\n t1: initStructure(),\r\n t2: initStructure(),\r\n }),\r\n [props]\r\n );\r\n\r\n return (\r\n \r\n \r\n {t1p1?.shortName}+{t1p2?.shortName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {r.t1.rest === 0 ? \"\" : r.t1.rest}\r\n \r\n\r\n \r\n {t2p1?.shortName}+{t2p2?.shortName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {r.t2.rest === 0 ? \"\" : r.t2.rest}\r\n \r\n \r\n );\r\n}\r\n\r\nexport function SchieberStrichliJassTafel(props: Props) {\r\n return props?.session?.hand ? (\r\n \r\n ) : (\r\n
    -
    \r\n );\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport { Switch } from \"@material-ui/core\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { SchieberHand, SchieberSession } from \"../../games/gamesReducer\";\r\nimport {\r\n team1sumreducerFn,\r\n team2sumreducerFn,\r\n} from \"../../games/gamesSelector\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { selectPlayers, selectTeamTitle } from \"../../players/playerSelector\";\r\nimport { Player } from \"../../types/types\";\r\nimport Chart from \"react-google-charts\";\r\n\r\ninterface Props {\r\n schieber: SchieberSession;\r\n}\r\nexport function SchieberLineGraph2(props: Props) {\r\n const players = useSelector(selectPlayers);\r\n const team1 = useSelector((state: RootState) =>\r\n selectTeamTitle(state, props.schieber.team1)\r\n );\r\n const team2 = useSelector((state: RootState) =>\r\n selectTeamTitle(state, props.schieber.team2)\r\n );\r\n const [cummulative, setCummulative] = useState(true);\r\n\r\n const data = useMemo(() => {\r\n let header = [\"Spieler\", { role: \"annotation\" }, team1, team2];\r\n let data = props?.schieber?.hand?.map((hand: SchieberHand, i: number) => [\r\n players?.find((p: Player) => p.userId === hand.playerDragsiId)\r\n ?.displayName ?? \"\",\r\n \"\",\r\n cummulative\r\n ? props?.schieber?.hand\r\n ?.slice(0, i + 1)\r\n ?.reduce(\r\n (prev: number, current: SchieberHand) =>\r\n prev + team1sumreducerFn(0, current),\r\n 0\r\n )\r\n : team1sumreducerFn(0, hand),\r\n cummulative\r\n ? props?.schieber?.hand\r\n ?.slice(0, i + 1)\r\n ?.reduce(\r\n (prev: number, current: SchieberHand) =>\r\n prev + team2sumreducerFn(0, current),\r\n 0\r\n )\r\n : team2sumreducerFn(0, hand),\r\n ]);\r\n data = cummulative\r\n ? data?.map((v) => [...v, props?.schieber?.pointsGoal])\r\n : data;\r\n header = cummulative ? [...(header ?? []), \"Ziel\"] : header;\r\n return [header, ...(data ?? [])];\r\n }, [\r\n cummulative,\r\n players,\r\n props?.schieber?.hand,\r\n props?.schieber?.pointsGoal,\r\n team1,\r\n team2,\r\n ]);\r\n\r\n return (\r\n props.schieber?.hand && (\r\n <>\r\n En Momänt Geduld...}\r\n data={data}\r\n options={{\r\n annotations: {\r\n style: \"line\",\r\n },\r\n chartArea: { left: 50, top: 10, width: \"100%\", height: \"85%\" },\r\n height: 400,\r\n vAxis: { minValue: 0 },\r\n // For the legend to fit, we make the chart area smaller\r\n legend: { position: \"bottom\" },\r\n }}\r\n />\r\n
    \r\n setCummulative(!cummulative)}\r\n />\r\n \r\n )\r\n );\r\n}\r\n","import React, { useCallback, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport { fetchSchieberDetails } from \"../../games/gamesActionCreators\";\r\nimport { SchieberSession } from \"../../games/gamesReducer\";\r\nimport { selectSchieber } from \"../../games/gamesSelector\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { AdminRequired } from \"../Common/AdminRequired\";\r\nimport { SchieberDraftsTable } from \"./SchieberDraftsTable\";\r\nimport { SchieberTimeline2 } from \"./Timeline/SchieberTimeline2\";\r\nimport { SchieberStrichliJassTafel } from \"./SchieberStrichliJassTafel\";\r\nimport { Button, Paper } from \"@material-ui/core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { SchieberLineGraph2 } from \"./SchieberLineGraph2\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { Image } from \"../Common/Image\";\r\n\r\ninterface Params {\r\n id: string;\r\n}\r\nexport function SchieberDetails() {\r\n const dispatch = useDispatch();\r\n\r\n const { id } = useParams();\r\n const schieber = useSelector((state: RootState) =>\r\n selectSchieber(state, Number(id))\r\n );\r\n\r\n useEffect(() => {\r\n if (schieber?.sessionId) {\r\n dispatch(fetchSchieberDetails(schieber.sessionId));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return schieber ? (\r\n schieber?.hand?.length ? (\r\n \r\n ) : (\r\n
    Laden...
    \r\n )\r\n ) : (\r\n
    Schieber ned gfonde
    \r\n );\r\n}\r\n\r\ninterface Props {\r\n schieber: SchieberSession;\r\n}\r\nfunction SchieberDetailsInternal(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n const stateToClipboard = useCallback(() => {\r\n const json = JSON.stringify(props.schieber, undefined, 2);\r\n navigator.clipboard.writeText(json);\r\n }, [props]);\r\n\r\n return (\r\n <>\r\n \r\n }\r\n >\r\n Öbersecht\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props?.schieber?.attachment && (\r\n \r\n \r\n \r\n )}\r\n \r\n
    <>
    \r\n
    \r\n \r\n );\r\n}\r\n","import { RootState } from \"../global/Store\";\nimport { Season } from \"../seasons/seasonReducer\";\nimport { User } from \"../types/types\";\n\nexport const selectUser = (state: RootState, userId: number) =>\n state.admin?.users?.find((u: User) => u.userId === userId);\nexport const selectUsers = (state: RootState) => state.admin?.users;\nexport const selectUserByName = (state: RootState, nickname: string) =>\n state.admin?.users?.find(\n (u: User) => u.nickname?.toUpperCase() === nickname?.toUpperCase()\n );\n\nexport const selectSeason = (state: RootState, seasonId: number) =>\n state.seasons.data?.find((u: Season) => u.seasonId === seasonId);\n","import React, { useCallback, useEffect } from \"react\";\r\nimport { faCrown, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { fetchUsers } from \"../../admin/adminActionCreators\";\r\nimport { selectUsers } from \"../../admin/adminSelector\";\r\nimport { User } from \"../../types/types\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\n\r\ninterface Props {\r\n users: User[];\r\n}\r\nexport function ManageUsers() {\r\n const dispatch = useDispatch();\r\n\r\n const users = useSelector(selectUsers);\r\n\r\n useEffect(() => {\r\n dispatch(fetchUsers());\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return users ? (\r\n \r\n ) : (\r\n
    Keine Benutzer gefunden
    \r\n );\r\n}\r\n\r\nfunction ManageUsersInternal(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n const history = useHistory();\r\n\r\n const gotoDetails = useCallback(\r\n (user: User) => history.push(`/admin/user/${user.userId}`),\r\n [history]\r\n );\r\n\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 {props.users.map((user: User) => (\r\n gotoDetails(user)}\r\n key={user.userId}\r\n className={user.active ? \"active-user\" : \"inactive-user\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    SpitznameVornameNachname
    \r\n {user.admin && }\r\n {!user.active && }\r\n {user.nickname}{user.firstName}{user.lastName}
    \r\n );\r\n}\r\n","import React, { useCallback, useMemo, useState } from \"react\";\r\nimport { Button, TextField } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { createUser } from \"../../admin/adminActionCreators\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { selectUserByName } from \"../../admin/adminSelector\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\n\r\nexport function CreateUser() {\r\n const classes = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const [nickname, setNickname] = useState(\"\");\r\n const existingUser = useSelector((state: RootState) =>\r\n selectUserByName(state, nickname)\r\n );\r\n\r\n const validNickname = useMemo(\r\n () => nickname && nickname.length > 0 && !existingUser,\r\n [nickname, existingUser]\r\n );\r\n\r\n const create = useCallback(\r\n (e: any) => {\r\n dispatch(createUser(nickname));\r\n },\r\n [dispatch, nickname]\r\n );\r\n const handleChange = (e: any) => setNickname(e?.target?.value);\r\n\r\n return (\r\n <>\r\n \r\n }\r\n >\r\n Erstelle\r\n \r\n \r\n );\r\n}\r\n","import { RootState } from \"../global/Store\";\r\nimport { Season } from \"./seasonReducer\";\r\n\r\nexport const selectSeasons = (state: RootState) => state.seasons.data;\r\nexport const selectActiveSeasons = (state: RootState) =>\r\n state.seasons?.data?.filter((s: Season) => s.active);\r\nexport const selectSeason = (state: RootState, seasonName: string) =>\r\n state.seasons?.data?.find((season) => season.name === seasonName);\r\n","import React, { useCallback, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { fetchSeasons } from \"../../seasons/seasonActionCreators\";\r\nimport { Season } from \"../../seasons/seasonReducer\";\r\nimport { selectSeasons } from \"../../seasons/seasonSelector\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\n\r\ninterface Props {\r\n seasons: Season[];\r\n}\r\n\r\nexport function ManageSeasons() {\r\n const dispatch = useDispatch();\r\n\r\n const seasons = useSelector(selectSeasons);\r\n\r\n useEffect(() => {\r\n dispatch(fetchSeasons());\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return seasons ? (\r\n \r\n ) : (\r\n
    Nix gfonde
    \r\n );\r\n}\r\n\r\nfunction ManageSeasonsInternal(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n const history = useHistory();\r\n\r\n const gotoDetails = useCallback(\r\n (season: Season) => history.push(`/admin/season/${season.seasonId}`),\r\n [history]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.seasons.map((season: Season) => (\r\n gotoDetails(season)}>\r\n {season.name}\r\n {season.active ? \"aktiv\" : \"inaktiv\"}\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback, useMemo, useState } from \"react\";\r\nimport { Button, TextField } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { selectSeason } from \"../../seasons/seasonSelector\";\r\nimport { createSeason } from \"../../seasons/seasonActionCreators\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\n\r\nexport function CreateSeason() {\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const [seasonName, setSeasonName] = useState(\"\");\r\n const existingSeason = useSelector((state: RootState) =>\r\n selectSeason(state, seasonName)\r\n );\r\n\r\n const validSeasonName = useMemo(\r\n () => seasonName && seasonName.length > 0 && !existingSeason,\r\n [seasonName, existingSeason]\r\n );\r\n\r\n const handleChange = (e: any) => setSeasonName(e?.target?.value);\r\n const create = useCallback(\r\n (e: any) => {\r\n dispatch(createSeason(seasonName));\r\n },\r\n [dispatch, seasonName]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n }\r\n >\r\n Erstelle\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Developer() {\r\n const push = () =>\r\n Notification.requestPermission().then(() => new Notification(\"Hey 👋\"));\r\n const delayedPush = () => setTimeout(push, 10000);\r\n\r\n return (\r\n <>\r\n

    Technische Eckdaten

    \r\n
      \r\n
    • \r\n ASP.NET 5.0 Server Runtime von Microsoft{\" \"}\r\n - Platformunabhängig lauffähig\r\n
    • \r\n
    • \r\n MS Identity Security von Microsoft\r\n
    • \r\n
    • \r\n Entity Framework mit MS SQL. Model first\r\n Datenbank mit EF Migrations\r\n
    • \r\n
    • \r\n Single Page Web Application\r\n SPA\r\n
    • \r\n
    • \r\n React 17 SPA mit Redux, Saga\r\n
    • \r\n
    • \r\n Bootstrap Stylesheets Framework von{\" \"}\r\n Twitter\r\n
    • \r\n
    • \r\n Material Design UI Komponenten\r\n
    • \r\n
    • \r\n GIT/DevOps Sourceverwaltung in{\" \"}\r\n Azure DevOps über GIT{\" \"}\r\n
    • \r\n
    \r\n
    Push
    \r\n
    Push nach 10sec
    \r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../global/Store\";\r\n\r\nexport function ReduxVisualizer() {\r\n const state = useSelector((state: RootState) => state);\r\n\r\n const json = useMemo(() => JSON.stringify(state, undefined, 2), [state]);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n {\" \"}\r\n
    {json}
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function ReleaseNotes() {\r\n return (\r\n <>\r\n

    Release Notes 2.1.0

    \r\n
      \r\n
    • \r\n Dateigrösse des Fotoanhangs: Downscale anstatt\r\n Limitierung\r\n
    • \r\n
    • \r\n Autofokus auf Punkteeingabe nach Farbwahl\r\n
    • \r\n
    \r\n
    \r\n

    \r\n Jasserei v2.0 esch fertig!\r\n

    \r\n

    Zusammenfassung der Features:

    \r\n
      \r\n
    • \r\n Neutrale Name fürs Projekt. Jasserei\r\n
    • \r\n
    • \r\n Verein - Erstellung\r\n
    • \r\n
    • \r\n Verein - Portal\r\n
    • \r\n
    \r\n
    \r\n

    Release Notes 2.0.0

    \r\n
      \r\n
    • Neutrale Name fürs Projekt. \"Jasserei\"
    • \r\n
    • \r\n jasserei.ch - PROD\r\n
      \r\n jasserei.com - TEST\r\n
      \r\n
    • \r\n
    • \r\n Neue Entität CLUB (Verein)\r\n
    • \r\n
    • \r\n Subdomain, wenn vorhanden und gültig. leitet weiter auf{\" \"}\r\n Club-Seite,\r\n
      Ohne gültige Subdomain Hauptseite mit Portal.\r\n
    • \r\n
    • \r\n CLUB MANAGEMENT\r\n
    • \r\n
    • \r\n Profilfoto\r\n
    • \r\n
    • \r\n Initialisierung vom Admin Benutzer beim Verein erstellen\r\n
    • \r\n
    • \r\n Jasstafel-Animation als Startseite\r\n
    • \r\n
    • \r\n Medien (Profilefoto, Anhang, Clubmedien) in eigener\r\n DB Tabelle\r\n
    • \r\n
    • \r\n Individuelle Medien für Vereine, Adminscreen zum\r\n Hochladen\r\n
    • \r\n
    • \r\n Default Bilder\r\n
    • \r\n
    • \r\n Validierung der Medien beim Upload -{\" \"}\r\n Grösse und Dateiformat\r\n
    • \r\n
    \r\n
    \r\n
      \r\n
    • \r\n Server Side Service Layer\r\n
    • \r\n
    • \r\n Namespaces Durcheinander; siehe: Controllers/Dto\r\n
    • \r\n
    • \r\n MSSQL migrations\r\n
    • \r\n
    • \r\n MSSQL Seed nicht mehr benötigt\r\n
    • \r\n
    • \r\n SQL Views in Seed oder Migrations\r\n
    • \r\n
    • \r\n Audit/logs middleware\r\n
    • \r\n
    • \r\n File Logging mit SeriLog\r\n
    • \r\n
    • \r\n .NET publish direkt auf IIS Server\r\n
    • \r\n
    • \r\n Let's Encrypt Wildcard-Zertifikate mit win-acme\r\n
    • \r\n
    • \r\n API Endpoints haben prefix (api/v1/)\r\n
    • \r\n
    • \r\n Page Metadata für Search Engines etc.\r\n
    • \r\n
    • \r\n Validierung für Club-Erstellungsscreen und Erklärung\r\n
    • \r\n
    \r\n
    \r\n

    \r\n Jasserei v1.0 esch fertig!\r\n

    \r\n

    Zusammenfassung der Features:

    \r\n
      \r\n
    • \r\n Detaillierte Erfassung von Schieber-Jass\r\n
    • \r\n
    • \r\n Aus den gesammelten Daten können detaillierte{\" \"}\r\n Statistiken und\r\n Ranglisten dargestellt werden.\r\n
    • \r\n
    • \r\n Benutzerübergreifende Erfassung mit Entwürfen\r\n
    • \r\n
    • \r\n History der gespielten Jass'\r\n
    • \r\n
    • \r\n Optimiert für Mobile devices\r\n
    • \r\n
    • Benutzeradministration
    • \r\n
    \r\n
    \r\n

    Release Notes 0.9.2

    \r\n
      \r\n
    • Login mit Entertaste
    • \r\n
    • Bug: Save-Verlauf hatten invalid Date
    • \r\n
    \r\n\r\n

    Release Notes 0.9.1

    \r\n
      \r\n
    • Fehler anzeigen und ausloggen, wenn die session abgelaufen ist.
    • \r\n
    • \r\n Bei den Entwürfen, ist der Verlauf der Entwürfe \r\n ausklappbar.\r\n
    • \r\n
    • \r\n Die Richtung der Pfeile beim Spieler auswählen war\r\n falsch rum\r\n
    • \r\n
    • \r\n Beim Beginn der Erfassung die Eingabe für Punkte-goal und Bemerkungen\r\n in Schritt 2 auslagern, damit kein scrolling nötig\r\n ist\r\n
    • \r\n
    • \r\n Zurück und weiter-Button, wenn nicht in mobile. Ersatz/Ergänzung\r\n für \r\n Swiper\r\n
    • \r\n
    • \r\n Eigene Styles für den ganzen Header, damit Platz\r\n effizienter genutzt wird.\r\n
    • \r\n
    • \r\n Eigenes Button Styling anstatt material design\r\n
    • \r\n
    • \r\n Animationen \r\n
    • \r\n
    • Abschliessen der Erfassung: Keine buttons sondern Tiles
    • \r\n
    • Start der Erfassung seperat von swipe-flow.
    • \r\n
    • Eingabe des Punkteziels in Teppich integrieren
    • \r\n
    • \r\n Start-Funktion als header-tile und animiert, wenn Spielereingabe\r\n gültig ist\r\n
    • \r\n
    • \r\n Swipe Helper\r\n
    • \r\n
    • \r\n Anzeige von langen Benutzernamen abschneiden und mit\r\n mit ... versehen\r\n
    • \r\n
    • \r\n Horizontales zentrieren der Jasstafel\r\n
    • \r\n
    • Style vom ansagenden/geschobenen Spieler keine Hintergrundfarbe
    • \r\n
    • \r\n Swiping deaktivieren (sehr unsensibel) in desktop und\r\n stattdessen static-navigator prominenter machen in desktop\r\n
    • \r\n
    • \r\n Swiping auf Mobile ein bischen weniger sensibel{\" \"}\r\n (20px minimum swipe)\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.9.0

    \r\n
      \r\n
    • \r\n Inputs von Adi und Nixxen\r\n
    • \r\n
    • \r\n Wiise gemäss Adi: Dialog mit zwei Schritten. Auswahl\r\n als Kacheln\r\n
    • \r\n
    • \r\n Swipe bei der Erfassung zum Navigieren\r\n
    • \r\n
    • \r\n Auto-Save\r\n
    • \r\n
    • \r\n Erfassungs- Navigation enorm vereinfacht\r\n
    • \r\n
    • Teamname beim Punktestand
    • \r\n
    • \r\n Farben-Kacheln transparent, wenn nicht ausgewählt\r\n
    • \r\n
    • \r\n Backdrop bei kritischen, pendenten Aktionen\r\n
    • \r\n
    • \r\n Nach Login gelangt man auf die Seite, auf die man ursprünglich\r\n navigieren wollte.\r\n
    • \r\n
    • Sequenzielles Speichern der Resultat-Eingabe
    • \r\n
    • \r\n Privates Profil\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.8.0

    \r\n
      \r\n
    • \r\n Input Zulauf: Neueste Hand kann entfernt werden.\r\n
    • \r\n
    • \r\n Man wird gefragt, welches Team gewonnen hat, wenn beide{\" \"}\r\n mehr als 2500 Punkte haben\r\n
    • \r\n
    • Default Seasonselection
    • \r\n
    • \r\n Seasons können deaktiviert werden.\r\n
    • \r\n
    • \r\n Dialoge in Schwizerdütsch\r\n
    • \r\n
    • \r\n Foto als Anhang bei der Spielerfassung\r\n
    • \r\n
    • \r\n Bug: Nach Funktion \"Neu\" war die Spielerauswahl nicht\r\n mehr auswählbar\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.7.0

    \r\n
      \r\n
    • \r\n Erfassung: Spielerauswahl und Weisen verschönert\r\n
    • \r\n
    • \r\n Spielerprofil inkl Stats gemäss Nixxen Whitepaper\r\n
    • \r\n
    • \r\n Liste der persönlichen Schieber im Spielerprofil\r\n
    • \r\n
    • \r\n Erfassung kann abgebrochen werden und somit werden Entwürfe verworfen.\r\n
    • \r\n
    • \r\n Statistikwerte in der Spielerübersicht\r\n
    • \r\n
    • \r\n Liniendiagramm in Spieldetails, um den Punktverlauf\r\n zu veranschaulichen\r\n
    • \r\n
    • \r\n Match und Kontermatch können per Klick angewählt werden anstatt über\r\n Eingabe.\r\n
    • \r\n
    • \r\n Offline-Tauglichkeit: Zustand der App (alle geladenen\r\n und frisch erfassten Daten) bleiben erhalten (\"State\"). Local Storage\r\n des Browsers wird dabei verwendet.\r\n
    • \r\n
    • \r\n Spielerei: Jasstafel mit Strichli in Sessiondetails\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.6.3

    \r\n
      \r\n
    • \r\n Login und Stammdaten bleiben im{\" \"}\r\n Browserspeicher (localstorage)erhalten:{\" \"}\r\n redux-persist\r\n
    • \r\n
    • \r\n Spielerauswahl bei Erfassung angeordnet auf\r\n Jassteppich\r\n
    • \r\n
    • Prompts bei kritischen Operationen
    • \r\n
    \r\n\r\n

    Release Notes 0.6.2

    \r\n
      \r\n
    • \r\n Abgekürzter Approval Prozess: nur Bestätigung des\r\n Erstellers benötigt fürs Erste\r\n
    • \r\n
    • \r\n Password Management\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.6.1

    \r\n
      \r\n
    • \r\n Administration:\r\n Benutzerverwaltung und Saisonverwaltung mit{\" \"}\r\n Material Design\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.6.0

    \r\n
      \r\n
    • \r\n Drafts der Erfassung werden bei jedem Speichern als\r\n JSON erstellt.\r\n
    • \r\n
    • \r\n Die Erfassung kann von anderen Benutzern übernommen{\" \"}\r\n werden\r\n
    • \r\n
    • \r\n Änderungen können nachvollzogen werden\r\n
    • \r\n
    • \r\n Spielerbestätigung anhand der neuesten Version Draft\r\n
    • \r\n
    • \r\n Session wird ersterstellt, wenn alle bestätigt haben.\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.5.0

    \r\n
      \r\n
    • \r\n Kommunikation Web-API für die Synchronisierung der\r\n Erfassung umgesetzt\r\n
    • \r\n
    • \r\n Erfassung von Schieber inkl Weis ist solide\r\n
    • \r\n
    • \r\n Timeline der Schiebererfassung macht Gattung\r\n
    • \r\n
    • \r\n Navigation der Schiebererfassung macht Gattung\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.4.0

    \r\n
      \r\n
    • \r\n Redux Saga wird verwendet für{\" \"}\r\n API Einbindung\r\n
    • \r\n
    • \r\n Authentifizierung über Microsoft Entity{\" \"}\r\n mit API Token\r\n
    • \r\n
    • \r\n Clientseitige Spielerfassung inklusive Weis und\r\n Zusammenfassung\r\n
    • \r\n
    • \r\n Rudimentäre Anzeige von Spielern, Sessions und Seasons analog alter{\" \"}\r\n ng-client\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.3.0

    \r\n
      \r\n
    • \r\n REACT Neuer Client mit react/redux/saga{\" \"}\r\n anstatt angular\r\n
    • \r\n
    • \r\n ASP.NET 5.0 Upgrade von ASP.NET CORE 3.0\r\n
    • \r\n
    • \r\n Sync Redux State Management mit Saga bildet alles,\r\n insbesondere die Erfassung, ab und kann nach Bedarf\r\n gespeichert/synchronisiert werden. Somit ist die App\r\n Offline-tauglicher.\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.2.0

    \r\n
      \r\n
    • \r\n Redesign Jassvarianten trennen - Schieber erhält\r\n eigene DB Struktur\r\n
    • \r\n
    \r\n\r\n

    Release Notes 0.1.0

    \r\n
      \r\n
    • \r\n .NET SPA Template als Ausgangslage\r\n
    • \r\n
    • \r\n Aufräumen und optimieren des Templates - NSWAG, ....\r\n
    • \r\n
    • \r\n DB Setup - Datenbankstruktur. Entitäten: Season,\r\n Player, Session, Team, TeamPlayer, Game, PlayerResult, Weis\r\n
    • \r\n
    • \r\n Spielerüberblick Überblick über alle registrierten\r\n Spieler. Diese Ansicht soll später für Erstellung und Verwaltung der\r\n Mitglieder dienen.\r\n
    • \r\n
    • \r\n Spielerprofil\r\n
    • \r\n
    • \r\n Session Überblick Überblick über alle Sessions, egal\r\n von welchem Spieler, Season, und in welchem Stadium\r\n
    • \r\n
    • \r\n Matchblatt - Herzstück der App\r\n
    • \r\n
    • \r\n ASP.NET CORE 3.0 Server Runtime von{\" \"}\r\n Microsoft - Platformunabhängig lauffähig\r\n
    • \r\n
    • \r\n SQLite - File basierte Datenbank\r\n
    • \r\n
    • \r\n ng8 Single Page Web Application mit{\" \"}\r\n Google Angular 8\r\n
    • \r\n
    • \r\n Bootstrap Stylesheets Framework von{\" \"}\r\n Twitter\r\n
    • \r\n
    • \r\n GIT/DevOps Sourceverwaltung in{\" \"}\r\n Azure DevOps über GIT{\" \"}\r\n
    • \r\n
    \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport const Todo = React.memo(function Todo() {\r\n return (\r\n <>\r\n \r\n Diese Änderungen, Verbesserungen und neuen Features sind geplant\r\n \r\n
    \r\n

    Entwicklung Prio 1

    \r\n
      \r\n
    • \r\n Support für Deutsche Karten\r\n
    • \r\n
    \r\n

    Entwicklung Prio 2

    \r\n
      \r\n
    • Player Übersicht Spalte Sessions falsch
    • \r\n
    • \r\n Club-Erstellungsscreen mit captcha, evtl ip blocken\r\n gegen mehrfacherstellung\r\n
    • \r\n
    • Metadata Icons
    • \r\n
    • \r\n Swipe... beibehalten?\r\n
    • \r\n
    • \r\n Formular Validierungen: Club bearbeiten,\r\n Spielerprofil\r\n
    • \r\n
    \r\n

    Entwicklung Prio 3

    \r\n
      \r\n
    • \r\n Reset Passwort (Mail...)\r\n
    • \r\n
    • \r\n Club-Standardkartene (frz./deu.) und in Clubübersicht\r\n anzeigen\r\n
    • \r\n
    • \r\n Buttons/Tiles hover Händli-Cursor\r\n
    • \r\n
    • Drafts Table-styling verschönern
    • \r\n
    • \r\n Global Stats\r\n
    • \r\n
    • \r\n Gwünner markiere ide Details\r\n
    • \r\n
    • \r\n Statistik in Übersicht: Win/Loss\r\n
    • \r\n
    • \r\n Player Details: Match Ratio, Multiplikator Ratio\r\n (+Kuchendiagramm)\r\n
    • \r\n
    • \r\n Momentan wird zur Bestätigung der Erfassung nur 1\r\n Spieler benötigt. Dies kann auf nur 4 geändert oder konfigurierbar\r\n sein.\r\n
    • \r\n
    • \r\n Erfassung Simpel gemäss Nixxen Whitepaper (Matchblatt\r\n als Maske)\r\n
    • \r\n
    • Filters in Schieberoverview
    • \r\n
    • \r\n News Feed\r\n
    • \r\n
    • \r\n Jasserei Messenger für:
      \r\n Verbesserungsvorschläge\r\n
      \r\n Support\r\n
      \r\n Spendenbettlerei\r\n
      \r\n
    • \r\n
    \r\n

    Technische Todos Prio 1

    \r\n
      \r\n
    • \r\n Bruteforce: Mehrfachaufrufe verhindern mit middleware\r\n
    • \r\n
    • \r\n 3sec timeout request nicht aufgeben, sondern nur\r\n diskretere warnung\r\n
    • \r\n
    • Autofill, Save password issues
    • \r\n
    • \r\n .NET 6 und NUGET updates\r\n
    • \r\n
    • \r\n npm updates\r\n
    • \r\n
    • \r\n PWA\r\n
    • \r\n
    • \r\n Unittests\r\n
    • \r\n
    \r\n

    Technische Todos Prio 2

    \r\n
      \r\n
    • \r\n Fetch_schieberdetails überholt fetch_schiebers evtl, dann werden\r\n Details direkt wieder überschrieben ansatz (?): reducer für\r\n put_schiebers soll detail-felder nicht überschreiben?\r\n
    • \r\n
    • \r\n Refine Granulation of React Components\r\n
    • \r\n
    • \r\n Performance Optimization (Memoize?)\r\n
    • \r\n
    • npm build vulnerabilities
    • \r\n
    \r\n \r\n );\r\n});\r\n","import { useState } from \"react\";\r\nimport { AppBar, Tab, Tabs } from \"@material-ui/core\";\r\nimport { TabContext, TabPanel } from \"@material-ui/lab\";\r\nimport { Developer } from \"./Developer\";\r\nimport { ReduxVisualizer } from \"./ReduxVisualizer\";\r\nimport { ReleaseNotes } from \"./ReleaseNotes\";\r\nimport { Todo } from \"./Todo\";\r\n\r\nexport function Infos() {\r\n const [value, setValue] = useState(\"releasenotes\");\r\n\r\n const handleChange = (event: any, newValue: any) => {\r\n setValue(newValue);\r\n };\r\n\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\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import Resizer from \"react-image-file-resizer\";\n\nexport const imageSizeToPx = (size: \"s\" | \"m\" | \"l\" | \"xl\") =>\n size === \"s\" ? 64 : size === \"m\" ? 192 : size === \"l\" ? 256 : 1024;\n\nexport const resizeImage = (\n file: any,\n size: \"s\" | \"m\" | \"l\" | \"xl\" | \"max\",\n callback: (uri: any) => any\n) => {\n size === \"max\"\n ? callback(file)\n : Resizer.imageFileResizer(\n file,\n imageSizeToPx(size),\n imageSizeToPx(size),\n \"PNG\",\n 100,\n 0,\n callback,\n \"blob\"\n );\n};\n","import React, { useCallback, useState } from \"react\";\r\nimport { faImage } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport { useJassereiFormStyles } from \"./useJassereiFormStyles\";\r\nimport { fetchPost } from \"../../util/apiUtil\";\r\nimport { Image } from \"./Image\";\r\nimport { resizeImage } from \"./Files/resizeImage\";\r\n\r\ninterface Properties {\r\n additionalParams?: [{ key: string; value: string }];\r\n url: string;\r\n callBackFn: (guid: string) => any;\r\n disabled?: boolean;\r\n mediaGuid?: string;\r\n children?: any;\r\n size: \"s\" | \"m\" | \"l\" | \"xl\" | \"max\";\r\n}\r\nexport function UploadImage(props: Properties) {\r\n const classes = useJassereiFormStyles();\r\n const [errorMsg, setErrorMsg] = useState(undefined as string | undefined);\r\n\r\n const selectFile = useCallback(\r\n (event: any) => {\r\n setErrorMsg(undefined);\r\n const file = event.target.files[0];\r\n if (!file?.name) {\r\n setErrorMsg(\"Keis File usgwählt\");\r\n return;\r\n }\r\n resizeImage(file, props.size, (uri: any) => {\r\n console.warn(uri);\r\n const formData = new FormData();\r\n formData.append(\"File\", uri, file.name);\r\n props.additionalParams?.forEach((p) => formData.append(p.key, p.value));\r\n\r\n fetchPost(props.url, formData).action().then(props.callBackFn);\r\n });\r\n },\r\n [props.additionalParams, props.callBackFn, props.size, props.url]\r\n );\r\n\r\n return (\r\n \r\n }\r\n >\r\n {props.children}\r\n \r\n \r\n {errorMsg ? (\r\n
    {errorMsg}
    \r\n ) : (\r\n props.mediaGuid && (\r\n
    \r\n \r\n
    \r\n )\r\n )}\r\n \r\n );\r\n}\r\n","import { useCallback, useState } from \"react\";\r\nimport { Button, TextField } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSave } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { selectClubdetails } from \"../../clubdetails/clubdetailsSelector\";\r\nimport { fetchUpdateClubdetails } from \"../../clubdetails/clubdetailsActionCreators\";\r\nimport { UploadImage } from \"../Common/UploadImage\";\r\n\r\nconst url = \"club/AttachMedia\";\r\n\r\nexport function ManageClub() {\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const storeClub = useSelector(selectClubdetails);\r\n const [club, setClub] = useState(storeClub);\r\n const [saved, setSaved] = useState(true);\r\n\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n if (club) {\r\n setClub({\r\n ...club,\r\n [name]: value,\r\n });\r\n }\r\n setSaved(false);\r\n },\r\n [club]\r\n );\r\n const save = useCallback(\r\n (e: any) => {\r\n if (club) {\r\n dispatch(fetchUpdateClubdetails(club));\r\n }\r\n setSaved(true);\r\n },\r\n [club, dispatch]\r\n );\r\n\r\n return (\r\n <>\r\n

    Club bearbeite

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n }\r\n >\r\n Speichere\r\n \r\n {\r\n handleChange({ target: { name: \"thumbnail\", value: guid } });\r\n }}\r\n url={url}\r\n additionalParams={[{ key: \"type\", value: \"ClubThumbnail\" }]}\r\n mediaGuid={club?.thumbnail}\r\n size=\"l\"\r\n >\r\n Vereinssymbol hochladen\r\n \r\n \r\n handleChange({ target: { name: \"mainImage\", value: guid } })\r\n }\r\n url={url}\r\n additionalParams={[{ key: \"type\", value: \"ClubMainImage\" }]}\r\n mediaGuid={club?.mainImage}\r\n size=\"max\"\r\n >\r\n Vereinsbild hochladen\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { AppBar, Tab, Tabs } from \"@material-ui/core\";\r\nimport { TabContext, TabPanel } from \"@material-ui/lab\";\r\nimport { ManageUsers } from \"./ManageUsers\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { CreateUser } from \"./CreateUser\";\r\nimport { ManageSeasons } from \"./ManageSeasons\";\r\nimport { CreateSeason } from \"./CreateSeason\";\r\nimport { Infos } from \"./Infos\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { ManageClub } from \"./ManageClub\";\r\n\r\ninterface Params {\r\n tab: string;\r\n}\r\nexport function Admin() {\r\n const { tab } = useParams();\r\n const [value, setValue] = useState(tab ?? \"users\");\r\n\r\n const handleChange = (event: any, newValue: any) => {\r\n setValue(newValue);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n } value=\"info\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\nimport \"../../App.scss\";\n\ninterface Props {\n click: () => void;\n children: any;\n}\nexport function Body(props: Props) {\n return (\n
    \n {props.children}\n
    \n );\n}\n","import React from \"react\";\n\ninterface Props {\n toggler: () => void;\n}\nexport function NavToggler(props: Props) {\n return (\n \n \n \n );\n}\n","import React from \"react\";\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n} from \"@material-ui/core\";\r\n\r\ninterface Props {\r\n open: boolean;\r\n promptTitle?: string;\r\n promptText: string;\r\n okFn: () => any;\r\n okText?: string;\r\n thirdFn?: () => any;\r\n thirdText?: string;\r\n cancelFn?: () => any;\r\n cancelText?: string;\r\n hideCancel?: boolean;\r\n}\r\nexport const Prompter = React.memo(function Prompter(props: Props) {\r\n return (\r\n \r\n \r\n {props.promptTitle ?? \"Bestätigung\"}\r\n \r\n \r\n \r\n {props.promptText}\r\n \r\n \r\n \r\n {!props.hideCancel && (\r\n \r\n )}\r\n {props.thirdFn && (\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n});\r\n","import React, { useCallback, useMemo, useState } from \"react\";\r\n\r\nimport { Prompter } from \"./Prompter\";\r\n\r\ntype colorType = \"primary\" | \"secondary\" | \"default\" | undefined;\r\n\r\nconst mapColorToClass = (c: colorType) =>\r\n c === \"default\"\r\n ? \"mainColor\"\r\n : c === \"primary\"\r\n ? \"mainColor\"\r\n : c === \"secondary\"\r\n ? \"secondaryColor\"\r\n : \"mainColor\";\r\nconst mapBgColorToClass = (c: colorType) =>\r\n c === \"default\"\r\n ? \"mainBgColor\"\r\n : c === \"primary\"\r\n ? \"mainBgColor\"\r\n : c === \"secondary\"\r\n ? \"secondaryBgColor\"\r\n : \"mainBgColor\";\r\n\r\ninterface Props {\r\n children: any;\r\n needsPrompt?: boolean;\r\n color: colorType;\r\n className?: any;\r\n promptText?: string;\r\n okFn: () => any;\r\n okText?: string;\r\n thirdFn?: () => any;\r\n thirdText?: string;\r\n cancelText?: string;\r\n startIcon: any;\r\n disabled?: boolean;\r\n hideCancel?: boolean;\r\n}\r\nexport function PromptedButton(props: Props) {\r\n const [openPrompt, setOpenPrompt] = useState(false);\r\n\r\n const tryFn = () => (props.needsPrompt ? setOpenPrompt(true) : props.okFn());\r\n const reset = useCallback(() => {\r\n props.okFn();\r\n setOpenPrompt(false);\r\n }, [props]);\r\n\r\n const classes = useMemo(\r\n () =>\r\n \"j-button \" +\r\n mapColorToClass(props.color) +\r\n \" \" +\r\n mapBgColorToClass(props.color) +\r\n \" \" +\r\n props.className +\r\n (props.disabled ? \" j-button-disabled\" : \"\"),\r\n [props.className, props.color, props.disabled]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n {props.startIcon}\r\n {props.children}\r\n \r\n setOpenPrompt(false)}\r\n open={openPrompt}\r\n okText={props.okText}\r\n thirdFn={props.thirdFn}\r\n thirdText={props.thirdText}\r\n cancelText={props.cancelText}\r\n hideCancel={props.hideCancel}\r\n />\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { fetchSchiebers } from \"../../games/gamesActionCreators\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { PromptedButton } from \"../Common/PromptedButton\";\r\n\r\nexport function SchiebersLoader(props: any) {\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const reload = () => dispatch(fetchSchiebers());\r\n\r\n return (\r\n }\r\n needsPrompt={false}\r\n >\r\n {props.children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { fetchPlayers } from \"../../players/playerActionCreators\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { PromptedButton } from \"../Common/PromptedButton\";\r\n\r\nexport function PlayersLoader(props: any) {\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const reload = () => dispatch(fetchPlayers());\r\n\r\n return (\r\n }\r\n >\r\n {props.children}\r\n \r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport { Button, TextField, Typography } from \"@material-ui/core\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faUserLock } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { fetchChangePassword } from \"../../user/userActionCreators\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\n\r\nexport function ChangePassword() {\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const [state, setState] = useState({ oldPassword: \"\", newPassword: \"\" });\r\n\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n setState({\r\n ...state,\r\n [name]: value,\r\n });\r\n },\r\n [state]\r\n );\r\n const change = useCallback(\r\n (e: any) => {\r\n dispatch(fetchChangePassword(state));\r\n },\r\n [dispatch, state]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n Kennwort ändere\r\n \r\n
    \r\n \r\n \r\n \r\n }\r\n >\r\n Ändere\r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport { faSave, faSignOutAlt } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Button, Paper, TextField, Typography } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { User } from \"../../types/types\";\r\nimport {\r\n deleteAuthData,\r\n deletePersonalData,\r\n fetchUpdateUserDetails,\r\n putCurrentUser,\r\n} from \"../../user/userActionCreators\";\r\nimport { selectUser } from \"../../user/userSelector\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { ChangePassword } from \"./ChangePassword\";\r\nimport { UploadImage } from \"../Common/UploadImage\";\r\n\r\nexport function UserDetails() {\r\n const storeUser = useSelector(selectUser);\r\n\r\n return storeUser ? (\r\n \r\n ) : (\r\n
    Heilandsack...
    \r\n );\r\n}\r\n\r\ninterface Props {\r\n user: User;\r\n}\r\nexport function UserDetailsInternal(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const [saved, setSaved] = useState(true);\r\n const [user, setUser] = useState({ ...props.user });\r\n\r\n const handleChange = (e: any) => {\r\n const { name, value } = e.target;\r\n setUser({ ...user, [name]: value });\r\n setSaved(false);\r\n };\r\n const save = useCallback(\r\n (e: any) => {\r\n dispatch(fetchUpdateUserDetails(user));\r\n setSaved(true);\r\n },\r\n [dispatch, user]\r\n );\r\n const logout = useCallback(() => {\r\n dispatch(deleteAuthData);\r\n dispatch(deletePersonalData);\r\n history.push(\"login\");\r\n }, [dispatch, history]);\r\n\r\n const setAvatar = useCallback(\r\n (guid) => dispatch(putCurrentUser({ ...user, avatar: guid })),\r\n [dispatch, user]\r\n );\r\n\r\n return (\r\n <>\r\n }\r\n >\r\n Abmelde\r\n \r\n \r\n \r\n Profilbild\r\n \r\n \r\n Profilbild wählen\r\n \r\n \r\n \r\n \r\n Profil\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n Speichere\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\nimport \"../../App.scss\";\n\ninterface Props {\n children: any;\n}\nexport function Footer(props: Props) {\n return
    {props.children}
    ;\n}\n","import React from \"react\";\nimport \"../../App.scss\";\n\ninterface Props {\n children: any;\n}\nexport function Main(props: Props) {\n return
    {props.children}
    ;\n}\n","import React, { useCallback } from \"react\";\r\n\r\nimport \"../erfassen.scss\";\r\n\r\nconst availableElementStyle = \"nav-element\";\r\nconst disabledElementStyle = \"nav-element nav-element-disabled\";\r\nconst currentElementStyle = \"nav-element nav-element-current\";\r\nconst actionElementStyle = \"nav-element nav-element-empathize\";\r\nconst cancelElementStyle = \"nav-element nav-element-cancel\";\r\nconst swipeElementStyle = \"nav-element nav-element-swipethize\";\r\ninterface Props {\r\n perRow: number;\r\n action: () => any;\r\n disabled?: boolean;\r\n current?: boolean;\r\n children: any;\r\n empathize?: boolean;\r\n swipethize?: boolean;\r\n cancel?: boolean;\r\n}\r\n// eslint-disable-next-line sonarjs/cognitive-complexity\r\nexport function RegisterSchieberNavigatorTile(props: Props) {\r\n const action = useCallback(() => !props.disabled && props.action(), [props]);\r\n\r\n return (\r\n 12 ? 12 : props.perRow)}%` }}\r\n onClick={action}\r\n >\r\n {props.children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { faChevronRight, faEdit } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useSelector } from \"react-redux\";\r\nimport {\r\n currentStandingWidget,\r\n selectEditSchieber,\r\n} from \"../../../games/gamesSelector\";\r\nimport { RegisterSchieberNavigatorTile } from \"./Navigator/RegisterSchieberNavigatorTile\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nexport function CurrentRegisterWidget() {\r\n const history = useHistory();\r\n\r\n const currentStanding = useSelector(currentStandingWidget);\r\n const schieber = useSelector(selectEditSchieber);\r\n\r\n const goToErfassung = () => history.push(\"/erfassen\");\r\n return (\r\n
    \r\n \r\n {schieber.sessionId ? currentStanding : \"Erfassig\"}\r\n    \r\n \r\n    \r\n \r\n    \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import { RootState } from \"../global/Store\";\n\nexport const selectDrafts = (state: RootState) =>\n state.games.personalSchieberDrafts;\n","import { faLongArrowAltRight } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { useCallback, useMemo, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { putCurrentSchieber } from \"../../../games/gamesActionCreators\";\r\nimport { SchieberDraft } from \"../../../games/gamesReducer\";\r\nimport {\r\n team1sumreducerFn,\r\n team2sumreducerFn,\r\n} from \"../../../games/gamesSelector\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { playerTitle, selectPlayer } from \"../../../players/playerSelector\";\r\nimport { Prompter } from \"../../Common/Prompter\";\r\n\r\ninterface Props {\r\n draft: SchieberDraft;\r\n}\r\nexport function SchieberDraftListDraftRow(props: Props) {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const player = useSelector((state: RootState) =>\r\n selectPlayer(state, props.draft.creatorId)\r\n );\r\n const [promptOpen, setPromptOpen] = useState(false);\r\n\r\n const data = useMemo(() => JSON.parse(props.draft.data), [props.draft.data]);\r\n const stand1 = useMemo(\r\n () => data?.hand?.reduce(team1sumreducerFn, 0) ?? \"?\",\r\n [data?.hand]\r\n );\r\n const stand2 = useMemo(\r\n () => data?.hand?.reduce(team2sumreducerFn, 0) ?? \"?\",\r\n [data?.hand]\r\n );\r\n\r\n const gotoDetails = useCallback(() => {\r\n dispatch(putCurrentSchieber({ ...data }));\r\n history.push(\"/erfassen\");\r\n }, [dispatch, data, history]);\r\n\r\n return (\r\n <>\r\n setPromptOpen(true)}>\r\n \r\n \r\n \r\n \r\n \r\n {player?.shortName}\r\n \r\n \r\n {playerTitle(player)}\r\n \r\n \r\n {props.draft.createdOn}\r\n {stand1}\r\n {stand2}\r\n \r\n gotoDetails()}\r\n cancelFn={() => setPromptOpen(false)}\r\n key={props.draft?.draftId}\r\n promptText={\r\n \"Wotsch du de Entwurf lade? Ungspeichereti Resultat gönd verlore.\"\r\n }\r\n />\r\n \r\n );\r\n}\r\n","import { faStream } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { putCurrentSchieber } from \"../../../games/gamesActionCreators\";\r\nimport { SchieberDraft, SchieberSession } from \"../../../games/gamesReducer\";\r\nimport { Prompter } from \"../../Common/Prompter\";\r\nimport { SchiebersTeamCell } from \"../SchiebersTeamCell\";\r\nimport { SchieberDraftListDraftRow } from \"./SchieberDraftListDraftRow\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberDraftListRow(props: Props) {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const [expanded, setexpanded] = useState(false);\r\n\r\n const [promptOpen, setPromptOpen] = useState(false);\r\n\r\n const gotoDetails = useCallback(\r\n (schieber: SchieberSession) => {\r\n const load = schieber?.draft?.shift();\r\n\r\n if (load) {\r\n dispatch(\r\n putCurrentSchieber({\r\n ...JSON.parse(load.data),\r\n })\r\n );\r\n } else {\r\n dispatch(putCurrentSchieber(schieber));\r\n }\r\n history.push(\"/erfassen\");\r\n },\r\n [history, dispatch]\r\n );\r\n\r\n const go = () => setPromptOpen(true);\r\n\r\n const expand = () => setexpanded(!expanded);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {props.session?.started}\r\n \r\n {props.session?.remarks} ({props.session?.pointsGoal})\r\n \r\n \r\n \r\n \r\n {expanded &&\r\n props.session.draft?.map((d: SchieberDraft) => (\r\n \r\n ))}\r\n \r\n gotoDetails(props.session)}\r\n cancelFn={() => setPromptOpen(false)}\r\n key={props.session?.sessionId}\r\n promptText={\r\n \"Wotsch du de Entwurf lade? Ungspeichereti Resultat gönd verlore.\"\r\n }\r\n />\r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectDrafts } from \"../../../games/draftSelector\";\r\nimport { fetchSchieberDrafts } from \"../../../games/gamesActionCreators\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport { SchieberDraftListRow } from \"./SchieberDraftListRow\";\r\n\r\nimport \"./drafts.scss\";\r\ninterface Props {\r\n drafts: SchieberSession[];\r\n}\r\nexport function SchieberDraftList() {\r\n const dispatch = useDispatch();\r\n\r\n const drafts = useSelector(selectDrafts);\r\n\r\n useEffect(() => {\r\n dispatch(fetchSchieberDrafts());\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return drafts ? :
    -
    ;\r\n}\r\n\r\nfunction SchieberDraftListInternal(props: Props) {\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 {props.drafts.map((session: SchieberSession) => (\r\n \r\n ))}\r\n
    DatumBemerkigeTeam 1Team 2
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { fetchSchieberDrafts } from \"../../../games/gamesActionCreators\";\r\nimport { useJassereiFormStyles } from \"../../Common/useJassereiFormStyles\";\r\nimport { PromptedButton } from \"../../Common/PromptedButton\";\r\n\r\nexport function SchieberDraftsLoader(props: any) {\r\n const classes = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const reload = () => dispatch(fetchSchieberDrafts());\r\n\r\n return (\r\n }\r\n needsPrompt={false}\r\n >\r\n {props.children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { CurrentRegisterWidget } from \"../Erfassen/CurrentRegisterWidget\";\r\nimport { SchieberDraftList } from \"./SchieberDraftList\";\r\nimport { SchieberDraftsLoader } from \"./SchieberDraftsLoader\";\r\n\r\nexport function SchieberDrafting() {\r\n return (\r\n <>\r\n \r\n Neu lade\r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n selectCurrentUiIndex,\r\n selectEditSchieber,\r\n selectIsGoalReached,\r\n} from \"../../../../games/gamesSelector\";\r\nimport { SchieberHand } from \"../../../../games/gamesReducer\";\r\nimport { RegisterSchieberNavigatorTile } from \"./RegisterSchieberNavigatorTile\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faChartLine,\r\n faCheckCircle,\r\n faListUl,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { setUiIndex } from \"../../../../games/gamesActionCreators\";\r\n\r\nimport \"../erfassen.scss\";\r\n\r\nexport function RegisterSchieberPaginator() {\r\n const dispatch = useDispatch();\r\n\r\n const schieber = useSelector(selectEditSchieber);\r\n const index = useSelector(selectCurrentUiIndex);\r\n const goalReached = useSelector(selectIsGoalReached);\r\n\r\n const goToHand = useCallback(\r\n (hand: SchieberHand) => dispatch(setUiIndex(hand.no - 1)),\r\n [dispatch]\r\n );\r\n const goToSummary = useCallback(\r\n (index: number) => dispatch(setUiIndex(schieber.hand.length + index)),\r\n [dispatch, schieber.hand.length]\r\n );\r\n\r\n return (\r\n
    \r\n {schieber.hand?.map((hand) => (\r\n goToHand(hand)}\r\n key={hand.no}\r\n current={index === hand.no - 1}\r\n >\r\n {hand.no}\r\n \r\n ))}\r\n\r\n {schieber.sessionId && (\r\n <>\r\n goToSummary(0)}\r\n key={\"func\"}\r\n current={index === schieber.hand.length + 0}\r\n >\r\n \r\n \r\n goToSummary(1)}\r\n key={\"sum\"}\r\n current={index === schieber.hand.length + 1}\r\n >\r\n \r\n \r\n goToSummary(2)}\r\n key={\"z\"}\r\n current={index === schieber.hand.length + 2}\r\n >\r\n Z\r\n \r\n goToSummary(3)}\r\n key={\"chart\"}\r\n current={index === schieber.hand.length + 3}\r\n >\r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport {\r\n selectEditSchieber,\r\n selectTeam1Title,\r\n selectTeam2Title,\r\n team1totalpoints,\r\n team2totalpoints,\r\n} from \"../../../games/gamesSelector\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\nexport function RegisterSchieberStanding() {\r\n const team1points = useSelector(team1totalpoints);\r\n const team2points = useSelector(team2totalpoints);\r\n const team1name = useSelector(selectTeam1Title);\r\n const team2name = useSelector(selectTeam2Title);\r\n const schieber = useSelector(selectEditSchieber);\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n {team1name}\r\n
    \r\n
    \r\n {team2name}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {team1points}\r\n
    \r\n
    \r\n {schieber?.pointsGoal ? schieber?.pointsGoal : \"?\"}\r\n
    \r\n
    \r\n {team2points}\r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectEditSchieber } from \"../../../games/gamesSelector\";\r\nimport { RegisterSchieberPaginator } from \"./Navigator/RegisterSchieberPaginator\";\r\nimport { RegisterSchieberStanding } from \"./RegisterSchieberStanding\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\nexport function RegisterSchieberFooter() {\r\n const schieber = useSelector(selectEditSchieber);\r\n\r\n return (\r\n <>\r\n {schieber.sessionId && }\r\n \r\n \r\n );\r\n}\r\n","import { AT } from \"../global/actionTypes\";\r\n\r\n// TODO: gamesActionCreaters und diser hier sind mischmasch\r\n\r\nexport const putSchieberPlayer = (player: number, playerId: number) => ({\r\n type: AT.PUT_SCHIEBERPLAYER,\r\n payload: { player, playerId },\r\n});\r\n\r\nexport const putRegisterSchieberFormValues = (values: any) => ({\r\n type: AT.PUT_SCHIEBERFORM,\r\n payload: values,\r\n});\r\n\r\nexport const lockInput = () => ({\r\n type: AT.LOCK_SCHIEBERMETADATA,\r\n});\r\nexport const saveSession = () => ({\r\n type: AT.SAVE_SCHIEBERSESSION,\r\n});\r\nexport const addHand = () => ({\r\n type: AT.ADD_SCHIEBERHAND,\r\n});\r\nexport const removeLastHand = () => ({\r\n type: AT.REMOVE_SCHIEBERHAND,\r\n});\r\n\r\nexport const deleteSession = () => ({\r\n type: AT.DELETE_SCHIEBERSESSION,\r\n});\r\n","import React, { useCallback } from \"react\";\r\nimport { faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { putCurrentSchieber } from \"../../../games/gamesActionCreators\";\r\nimport { initialSchieberCreator } from \"../../../games/gamesReducer\";\r\nimport { deleteSession } from \"../../../games/registerGameActionCreators\";\r\nimport { PromptedButton } from \"../../Common/PromptedButton\";\r\nimport { selectUser } from \"../../../user/userSelector\";\r\n\r\nexport function CancelSchieberRegister(props: any) {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const user = useSelector(selectUser);\r\n\r\n const reset = useCallback(() => {\r\n dispatch(deleteSession());\r\n dispatch(\r\n putCurrentSchieber(initialSchieberCreator(user?.defaultKartendeck))\r\n );\r\n history.push(\"/drafts\");\r\n }, [dispatch, user?.defaultKartendeck, history]);\r\n\r\n return (\r\n }\r\n promptText={\"Wotsch de Entwurf lösche ond e neui Erfassig afange?\"}\r\n needsPrompt={true}\r\n >\r\n {props.children}\r\n \r\n );\r\n}\r\n","import React, { useCallback, useMemo, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n approveSchieberSessionTeam1,\r\n approveSchieberSessionTeam2,\r\n} from \"../../../games/gamesActionCreators\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport {\r\n selectTeam1GoalReached,\r\n selectTeam1Title,\r\n selectTeam2GoalReached,\r\n selectTeam2Title,\r\n} from \"../../../games/gamesSelector\";\r\nimport { Prompter } from \"../../Common/Prompter\";\r\n\r\ninterface Props {\r\n schieber: SchieberSession;\r\n}\r\nexport function FinishSchieberRegister(props: Props) {\r\n const [openPrompt, setOpenPrompt] = useState(0);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const okFn = useCallback(() => {\r\n if (openPrompt === 1) {\r\n dispatch(approveSchieberSessionTeam1(props.schieber.sessionId));\r\n }\r\n if (openPrompt === 2) {\r\n dispatch(approveSchieberSessionTeam2(props.schieber.sessionId));\r\n }\r\n setOpenPrompt(0);\r\n }, [dispatch, openPrompt, props.schieber.sessionId]);\r\n\r\n const team1Fn = () => (team1GoalReached ? setOpenPrompt(1) : {});\r\n const team2Fn = () => (team2GoalReached ? setOpenPrompt(2) : {});\r\n\r\n const team1GoalReached = useSelector(selectTeam1GoalReached);\r\n const team2GoalReached = useSelector(selectTeam2GoalReached);\r\n const team1 = useSelector(selectTeam1Title);\r\n const team2 = useSelector(selectTeam2Title);\r\n\r\n const classNames1 = useMemo(\r\n () => \"finissiere \" + (team1GoalReached ? \"\" : \"notfinissiert\"),\r\n [team1GoalReached]\r\n );\r\n const classNames2 = useMemo(\r\n () => \"finissiere \" + (team2GoalReached ? \"\" : \"notfinissiert\"),\r\n [team2GoalReached]\r\n );\r\n return (\r\n
    \r\n {team1GoalReached || team2GoalReached ? (\r\n

    Wer het gwonne?

    \r\n ) : (\r\n

    No niemert het s Ziel erreicht.

    \r\n )}\r\n
    \r\n {team1}\r\n
    \r\n
    \r\n {team2}\r\n
    \r\n setOpenPrompt(0)}\r\n open={openPrompt > 0}\r\n okText={\"Jawohl\"}\r\n cancelText={\"Abbreche\"}\r\n />\r\n
    \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { putAttachment } from \"../../../games/gamesActionCreators\";\r\nimport { selectEditSchieber } from \"../../../games/gamesSelector\";\r\nimport { UploadImage } from \"../../Common/UploadImage\";\r\nimport { CancelSchieberRegister } from \"./CancelSchieberRegister\";\r\nimport { FinishSchieberRegister } from \"./FinishSchieberRegister\";\r\n\r\nexport function RegisterSchieberSummary() {\r\n const dispatch = useDispatch();\r\n\r\n const session = useSelector(selectEditSchieber);\r\n\r\n const put = useCallback(\r\n (guid: string) => {\r\n dispatch(putAttachment(guid));\r\n console.warn(\"Ahang esch aghänkt\"); // TODO: richtige meldung\r\n },\r\n [dispatch]\r\n );\r\n return (\r\n <>\r\n \r\n \r\n {session?.sessionId && (\r\n \r\n Anhang hinzufügen\r\n \r\n )}\r\n\r\n Entwurf lösche\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { faCrown, faSkull } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n onInput: (asaeger: number, gegner: number) => any;\r\n isMatch?: boolean;\r\n isKonterMatch?: boolean;\r\n}\r\nexport function RegisterSchieberMatch(props: Props) {\r\n const match = () => props.onInput(257, 0);\r\n const konterMatch = () => props.onInput(0, 257);\r\n\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","import React, { useCallback, useEffect, useRef } from \"react\";\r\nimport { RegisterSchieberMatch } from \"./RegisterSchieberMatch\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n onInput: (asaeger: number, gegner: number) => any;\r\n amount: number;\r\n isMatch?: boolean;\r\n isKonterMatch?: boolean;\r\n focus?: boolean;\r\n setFocus?: (v: boolean) => any;\r\n}\r\nexport function RegisterSchieberHandAsaegeAmount(props: Props) {\r\n const inputEl = useRef(null as any);\r\n\r\n useEffect(() => {\r\n if (props.focus) {\r\n inputEl?.current?.select();\r\n }\r\n }, [props.focus]);\r\n\r\n const onPointsChanged = useCallback(\r\n (e: any) => {\r\n const val = Number(e.target.value);\r\n if (val >= 0 && val <= 157) {\r\n props.onInput(val, 157 - val);\r\n }\r\n },\r\n [props]\r\n );\r\n const onDone = useCallback(\r\n (e) => {\r\n onPointsChanged(e);\r\n props?.setFocus && props?.setFocus(false);\r\n },\r\n [onPointsChanged, props]\r\n );\r\n const onClick = (e: any) => e.target.select();\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { VarianteIcon } from \"../../Assets/VarianteIcon\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n variante: number;\r\n hand: SchieberHand;\r\n chooseVariante: (variante: number) => any;\r\n}\r\nexport function RegisterSchieberHandAsaegeFarb(props: Props) {\r\n const classNames = useMemo(\r\n () =>\r\n \"asaege asaegefarbe \" +\r\n (props.hand.variante\r\n ? props.hand.variante === props.variante\r\n ? \"asaegeselected\"\r\n : \"asaegeunselected\"\r\n : \"asaegeoption\"),\r\n [props.variante, props.hand.variante]\r\n );\r\n\r\n return (\r\n props.chooseVariante(props.variante)}\r\n >\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faRandom } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n schiebe: () => any;\r\n}\r\nexport function RegisterSchieberHandSchieber(props: Props) {\r\n const classNames =\r\n \"asaege \" + (props.hand.playerGschobeId ? \"gschobe\" : \"schiebe\");\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { selectPlayer } from \"../../../players/playerSelector\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowCircleRight } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n}\r\nexport function RegisterSchieberHandAsaeger(props: Props) {\r\n const dra = useSelector((state: RootState) =>\r\n selectPlayer(state, props.hand.playerDragsiId)\r\n );\r\n const gschobe = useSelector((state: RootState) =>\r\n selectPlayer(state, props.hand?.playerGschobeId)\r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n {dra?.nickname}\r\n
    \r\n
    \r\n \r\n   {gschobe?.nickname}\r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useCallback, useMemo, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n selectPartner,\r\n selectPointsByHandAndUser,\r\n selectTeamNo,\r\n} from \"../../../games/gamesSelector\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { selectPlayer } from \"../../../players/playerSelector\";\r\nimport {\r\n asaege,\r\n putVariante,\r\n schiebe,\r\n} from \"../../../games/gamesActionCreators\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport { RegisterSchieberHandAsaegeAmount } from \"./RegisterSchieberHandAsaegeAmount\";\r\nimport { RegisterSchieberHandAsaegeFarb } from \"./RegisterSchieberHandAsaegeFarb\";\r\nimport { RegisterSchieberHandSchieber } from \"./RegisterSchieberHandSchieber\";\r\nimport { RegisterSchieberHandAsaeger } from \"./RegisterSchieberHandAsaeger\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n}\r\nexport function RegisterSchieberHandAsaege(props: Props) {\r\n const dispatch = useDispatch();\r\n\r\n const [focusInput, setFocusInput] = useState(false);\r\n const dra = useSelector((state: RootState) =>\r\n selectPlayer(state, props.hand.playerDragsiId)\r\n );\r\n const gschobe = useSelector((state: RootState) =>\r\n selectPlayer(state, props.hand?.playerGschobeId)\r\n );\r\n const partnerId = useSelector((state: RootState) =>\r\n selectPartner(state, dra?.userId)\r\n );\r\n const points = useSelector((state: RootState) =>\r\n selectPointsByHandAndUser(state, props.hand, dra?.userId)\r\n );\r\n const teamNo = useSelector((state: RootState) =>\r\n selectTeamNo(state, dra?.userId)\r\n );\r\n\r\n const isMatch = useMemo(\r\n () =>\r\n (teamNo === 1 && props.hand.team1Result === 257) ||\r\n (teamNo === 2 && props.hand.team2Result === 257),\r\n [props.hand.team1Result, props.hand.team2Result, teamNo]\r\n );\r\n const isKonterMatch = useMemo(\r\n () =>\r\n (teamNo === 1 && props.hand.team2Result === 257) ||\r\n (teamNo === 2 && props.hand.team1Result === 257),\r\n [props.hand.team1Result, props.hand.team2Result, teamNo]\r\n );\r\n\r\n const onPointsChanged = useCallback(\r\n (asaegerPoints: number, gegnerPoints: number) => {\r\n dispatch(\r\n asaege(\r\n props.hand,\r\n teamNo === 1 ? asaegerPoints : gegnerPoints,\r\n teamNo === 1 ? gegnerPoints : asaegerPoints\r\n )\r\n );\r\n },\r\n [dispatch, props.hand, teamNo]\r\n );\r\n const schiebeFn = useCallback(() => {\r\n dispatch(schiebe(props.hand, gschobe ? undefined : partnerId));\r\n }, [dispatch, gschobe, partnerId, props.hand]);\r\n const chooseVariante = useCallback(\r\n (variante: number) => {\r\n dispatch(putVariante(props.hand, variante));\r\n setFocusInput(true);\r\n },\r\n [dispatch, props.hand]\r\n );\r\n\r\n const farbe = useMemo(\r\n () =>\r\n [1, 2, 3, 4, 5, 6].map((no: number) => (\r\n \r\n )),\r\n [props, chooseVariante]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n {farbe}\r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faDollarSign, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { selectPlayer } from \"../../../players/playerSelector\";\r\nimport { RootState } from \"../../../global/Store\";\r\n\r\nimport \"./erfassen.scss\";\r\ninterface Props {\r\n betrag: number;\r\n playerId: number;\r\n index: number;\r\n deleteAction: (index: number) => any;\r\n}\r\nexport function RegisterSchieberHandWiisListItem(props: Props) {\r\n const dispatch = useDispatch();\r\n\r\n const player = useSelector((state: RootState) =>\r\n selectPlayer(state, props.playerId)\r\n );\r\n\r\n const removeWiis = useCallback(\r\n (index: number) => {\r\n dispatch(props.deleteAction(index));\r\n },\r\n [dispatch, props]\r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    {props.betrag}
    \r\n
    {player?.nickname}
    \r\n
    removeWiis(props.index)}>\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { RegisterSchieberHandWiisListItem } from \"./RegisterSchieberHandWiisListItem\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n list: {\r\n betrag: number;\r\n playerId: number;\r\n }[];\r\n title?: string;\r\n deleteAction: (index: number) => any;\r\n}\r\nexport function RegisterSchieberHandWiisList(props: Props) {\r\n return (\r\n <>\r\n
    {props.title}
    \r\n {props.list.map((w, index) => (\r\n \r\n ))}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n removeWiisTeam1,\r\n removeWiisTeam2,\r\n} from \"../../../games/gamesActionCreators\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport { RegisterSchieberHandWiisList } from \"./RegisterSchieberHandWiisList\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n}\r\nexport function RegisterSchieberHandWiise(props: Props) {\r\n return (\r\n <>\r\n removeWiisTeam1(index, props.hand.no)}\r\n />\r\n removeWiisTeam2(index, props.hand.no)}\r\n />\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n val?: number;\r\n submit: (val?: number) => any;\r\n type?: \"list\" | \"square\";\r\n children: any;\r\n}\r\nexport function SelectKachel(props: Props) {\r\n return (\r\n props.submit(props.val)}\r\n >\r\n {props.children}\r\n \r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectEditSchieber } from \"../../../games/gamesSelector\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport { Dialog, DialogContent, DialogTitle } from \"@material-ui/core\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { selectPlayer } from \"../../../players/playerSelector\";\r\nimport { SelectKachel } from \"../../Common/SelectKachel\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\nconst initNumVal = undefined as number | undefined;\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n setWiis: (wiis: { playerId: number; amount: number; teamId: number }) => any;\r\n}\r\n\r\nexport function RegisterSchieberHandWiiser(props: Props) {\r\n const session = useSelector(selectEditSchieber);\r\n const player1 = useSelector((state: RootState) =>\r\n selectPlayer(state, session.team1.player1Id)\r\n );\r\n const player2 = useSelector((state: RootState) =>\r\n selectPlayer(state, session.team1.player2Id)\r\n );\r\n const player3 = useSelector((state: RootState) =>\r\n selectPlayer(state, session.team2.player1Id)\r\n );\r\n const player4 = useSelector((state: RootState) =>\r\n selectPlayer(state, session.team2.player2Id)\r\n );\r\n const [open, setOpen] = useState(false);\r\n const [wiiser, setWiiser] = useState(initNumVal);\r\n\r\n const handleWiis = (val?: number) => {\r\n if (val) {\r\n props.setWiis({\r\n amount: val,\r\n playerId: wiiser as number,\r\n teamId:\r\n wiiser === session.team2.player1Id ||\r\n wiiser === session.team2.player2Id\r\n ? 2\r\n : 1,\r\n });\r\n }\r\n setOpen(false);\r\n };\r\n const handleWiiser = (val?: number) => {\r\n setWiiser(val);\r\n };\r\n const handleClickOpen = () => {\r\n setWiiser(initNumVal);\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n Wiis\r\n
    \r\n \r\n \r\n
    \r\n {wiiser && <>Wieviel?}\r\n {!wiiser && <>Wer het gwiese?}\r\n
    \r\n
    \r\n \r\n {wiiser && (\r\n <>\r\n \r\n Stöck\r\n \r\n \r\n 20\r\n \r\n \r\n 50\r\n \r\n \r\n 100\r\n \r\n \r\n 150\r\n \r\n \r\n 200\r\n \r\n \r\n 250\r\n \r\n \r\n )}\r\n {!wiiser && (\r\n <>\r\n \r\n {player1?.nickname}\r\n \r\n \r\n {player2?.nickname}\r\n \r\n \r\n {player3?.nickname}\r\n \r\n \r\n {player4?.nickname}\r\n \r\n \r\n )}\r\n \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { wiise } from \"../../../games/gamesActionCreators\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport { selectSchieberHand } from \"../../../games/gamesSelector\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { RegisterSchieberHandAsaege } from \"./RegisterSchieberHandAsaege\";\r\nimport { RegisterSchieberHandWiise } from \"./RegisterSchieberHandWiise\";\r\nimport { RegisterSchieberHandWiiser } from \"./RegisterSchieberHandWiiser\";\r\n\r\nimport \"./erfassen.scss\";\r\n\r\ninterface Props {\r\n no: number;\r\n}\r\nexport function RegisterSchieberHand(props: Props) {\r\n const dispatch = useDispatch();\r\n\r\n const hand = useSelector((state: RootState) =>\r\n selectSchieberHand(state, props.no)\r\n );\r\n\r\n const addwiis = useCallback(\r\n (wiis: { playerId: number; amount: number; teamId: number }) => {\r\n if (hand) {\r\n dispatch(\r\n wiise(hand as SchieberHand, wiis.playerId, wiis.teamId, wiis.amount)\r\n );\r\n }\r\n },\r\n [dispatch, hand]\r\n );\r\n\r\n return hand ? (\r\n <>\r\n \r\n \r\n \r\n \r\n ) : (\r\n
    Nüt gfonde
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport { PlayerWidget } from \"../../Common/PlayerWidget\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n}\r\nexport function SchieberTimelineWeis(props: Props) {\r\n return (\r\n <>\r\n {props.hand.team1Wiis.map((weis, index) => (\r\n \r\n {weis.betrag}\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n ))}\r\n {props.hand.team2Wiis.map((weis, index) => (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n {weis.betrag}\r\n \r\n ))}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { faArrowCircleRight } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { SchieberHand } from \"../../../games/gamesReducer\";\r\nimport {\r\n team1sumreducerFn,\r\n team2sumreducerFn,\r\n} from \"../../../games/gamesSelector\";\r\nimport { VarianteIcon } from \"../../Assets/VarianteIcon\";\r\nimport { SchieberTimelineWeis } from \"./SchieberTimelineWeis\";\r\nimport { PlayerWidget } from \"../../Common/PlayerWidget\";\r\n\r\nimport \"../timeline.scss\";\r\n\r\ninterface Props {\r\n hand: SchieberHand;\r\n}\r\nexport function SchieberTimelineHand(props: Props) {\r\n return (\r\n <>\r\n \r\n {team1sumreducerFn(0, props.hand)}\r\n \r\n
    \r\n {props.hand.team1Result} \r\n {props.hand?.playerGschobeId ? (\r\n <>\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n ) : (\r\n <>\r\n {\" \"}\r\n \r\n \r\n )}\r\n {props.hand.team2Result}\r\n
    \r\n \r\n {team2sumreducerFn(0, props.hand)}\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport {\r\n team1sumreducerFn,\r\n team2sumreducerFn,\r\n} from \"../../../games/gamesSelector\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberTimelineSummary(props: Props) {\r\n const team1Points = useMemo(\r\n () => props?.session?.hand?.reduce(team1sumreducerFn, 0),\r\n [props.session.hand]\r\n );\r\n const team2Points = useMemo(\r\n () => props?.session?.hand?.reduce(team2sumreducerFn, 0),\r\n [props.session.hand]\r\n );\r\n\r\n return (\r\n \r\n {team1Points}\r\n Total\r\n {team2Points}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { selectTeamTitle } from \"../../../players/playerSelector\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberTimelineTeams(props: Props) {\r\n const team1 = useSelector((state: RootState) =>\r\n selectTeamTitle(state, props.session.team1)\r\n );\r\n const team2 = useSelector((state: RootState) =>\r\n selectTeamTitle(state, props.session.team2)\r\n );\r\n\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
    {team1} vs. {team2}
    \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport { SchieberTimelineHand } from \"./SchieberTimelineHand\";\r\nimport { SchieberTimelineHeader } from \"./SchieberTimelineHeader\";\r\nimport { SchieberTimelineSummary } from \"./SchieberTimelineSummary\";\r\nimport { SchieberTimelineTeams } from \"./SchieberTimelineTeams\";\r\n\r\nimport \"../timeline.scss\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function SchieberTimeline(props: Props) {\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\n \r\n {props?.session?.hand?.map((hand) => (\r\n \r\n ))}\r\n \r\n \r\n
    \r\n \r\n );\r\n}\r\n","import { Switch } from \"@material-ui/core\";\r\nimport { useState } from \"react\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\nimport { SchieberTimeline } from \"./SchieberTimeline\";\r\nimport { SchieberTimeline2 } from \"./SchieberTimeline2\";\r\n\r\ninterface Props {\r\n session: SchieberSession;\r\n}\r\nexport function Matchblatt(props: Props) {\r\n const [variante, setVariante] = useState(false);\r\n return (\r\n <>\r\n

    \r\n Matchblatt\r\n setVariante(!variante)}\r\n />\r\n

    \r\n {variante ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport {\r\n isHandValid,\r\n selectCurrentUiIndex,\r\n selectEditSchieber,\r\n selectIsGoalReached,\r\n selectLastHand,\r\n} from \"../../../games/gamesSelector\";\r\nimport { Swiper, SwiperSlide } from \"swiper/react\";\r\nimport { RegisterSchieberSummary } from \"./RegisterSchieberSummary\";\r\nimport { RegisterSchieberHand } from \"./RegisterSchieberHand\";\r\nimport {\r\n addHand,\r\n removeLastHand,\r\n} from \"../../../games/registerGameActionCreators\";\r\nimport { setUiIndex } from \"../../../games/gamesActionCreators\";\r\nimport { SchieberStrichliJassTafel } from \"../SchieberStrichliJassTafel\";\r\nimport { SchieberLineGraph2 } from \"../SchieberLineGraph2\";\r\nimport { Matchblatt } from \"../Timeline/Matchblatt\";\r\n\r\n// swiper bundle styles\r\nimport \"swiper/swiper-bundle.min.css\";\r\n// swiper core styles\r\nimport \"swiper/swiper.min.css\";\r\n\r\nexport function RegisterSchieber() {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const uiIndex = useSelector(selectCurrentUiIndex);\r\n const schieber = useSelector(selectEditSchieber);\r\n const goalReached = useSelector(selectIsGoalReached);\r\n const isLastHandValid = isHandValid(useSelector(selectLastHand));\r\n\r\n const [swiper, setSwiper] = useState(null as any);\r\n\r\n const mobile = window.matchMedia(\"(min-width: 0px) and (max-width: 768px)\");\r\n\r\n useEffect(() => {\r\n if (!schieber.sessionId) {\r\n history.push(\"/neu\");\r\n }\r\n }, [history, schieber]);\r\n\r\n useEffect(() => {\r\n swiper?.slideTo(uiIndex);\r\n }, [swiper, uiIndex]);\r\n\r\n useEffect(() => {\r\n if (isLastHandValid && !goalReached) {\r\n dispatch(addHand());\r\n }\r\n }, [dispatch, goalReached, isLastHandValid]);\r\n\r\n useEffect(() => {\r\n if (goalReached && !isLastHandValid) {\r\n dispatch(removeLastHand());\r\n }\r\n }, [dispatch, goalReached, isLastHandValid]);\r\n\r\n const onSlideChange = (swiper: any) => {\r\n dispatch(setUiIndex(swiper.activeIndex));\r\n };\r\n const onSliderMove = (swiper: any) => {};\r\n\r\n return (\r\n \r\n {schieber?.hand?.map((hand) => (\r\n \r\n \r\n \r\n ))}\r\n {schieber.sessionId && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport { Button, Checkbox, TextField } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { User } from \"../../types/types\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { selectUser } from \"../../admin/adminSelector\";\r\nimport { putUserDetails, updateUser } from \"../../admin/adminActionCreators\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faList, faSave } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\ninterface Params {\r\n id: string;\r\n}\r\nexport function ManageUser() {\r\n const { id } = useParams();\r\n const user = useSelector((state: RootState) => selectUser(state, Number(id)));\r\n\r\n return user ? (\r\n \r\n ) : (\r\n
    COULD NOT FIND
    \r\n );\r\n}\r\n\r\ninterface Props {\r\n user: User;\r\n}\r\nfunction ManageUserInternal(props: Props) {\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const [saved, setSaved] = useState(true);\r\n\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n dispatch(\r\n putUserDetails({\r\n ...props.user,\r\n [name]: value,\r\n })\r\n );\r\n setSaved(false);\r\n },\r\n [dispatch, props.user]\r\n );\r\n\r\n const handleBoolChange = useCallback(\r\n (e: any) => {\r\n const { name, checked } = e.target;\r\n dispatch(\r\n putUserDetails({\r\n ...props.user,\r\n [name]: checked,\r\n })\r\n );\r\n setSaved(false);\r\n },\r\n [dispatch, props.user]\r\n );\r\n const save = useCallback(\r\n (e: any) => {\r\n dispatch(updateUser(props.user));\r\n setSaved(true);\r\n },\r\n [dispatch, props.user]\r\n );\r\n\r\n return (\r\n <>\r\n

    Benutzer bearbeiten

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\"Aktiv\"}\r\n \r\n {\"Admin\"}\r\n
    \r\n }\r\n >\r\n Speichere\r\n \r\n \r\n }\r\n >\r\n Öbersecht\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { putCurrentSchieber } from \"../../../games/gamesActionCreators\";\r\nimport { initialSchieberCreator } from \"../../../games/gamesReducer\";\r\nimport { pendingChanges } from \"../../../games/gamesSelector\";\r\nimport { PromptedButton } from \"../../Common/PromptedButton\";\r\n\r\nexport function NewSchieberRegister(props: any) {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const hasChanges = useSelector(pendingChanges);\r\n\r\n const reset = useCallback(() => {\r\n dispatch(putCurrentSchieber(initialSchieberCreator()));\r\n history.push(\"/neu\");\r\n }, [history, dispatch]);\r\n\r\n return (\r\n <>\r\n }\r\n promptText={\r\n \"Wotsch wörkli neu afange mit Erfasse? Ned gspeichereti Änderige gönd verlore.\"\r\n }\r\n needsPrompt={hasChanges}\r\n >\r\n {props.children}\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectUser } from \"../../user/userSelector\";\r\n\r\ninterface Props {\r\n children?: any;\r\n silent?: boolean;\r\n}\r\n\r\nexport function AuthRequired(props: Props) {\r\n const user = useSelector(selectUser);\r\n\r\n return user ? (\r\n props.children\r\n ) : props.silent ? (\r\n <>\r\n ) : (\r\n
    Du hesch do nüt verlore
    \r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport { Button, Checkbox, TextField } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport { RootState } from \"../../global/Store\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { selectSeason } from \"../../admin/adminSelector\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faList, faSave } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Season } from \"../../seasons/seasonReducer\";\r\nimport { putSeason, updateSeason } from \"../../seasons/seasonActionCreators\";\r\n\r\ninterface Params {\r\n id: string;\r\n}\r\nexport function ManageSeason() {\r\n const { id } = useParams();\r\n const season = useSelector((state: RootState) =>\r\n selectSeason(state, Number(id))\r\n );\r\n\r\n return season ? (\r\n \r\n ) : (\r\n
    COULD NOT FIND
    \r\n );\r\n}\r\n\r\ninterface Props {\r\n season: Season;\r\n}\r\nfunction ManageSeasonInternal(props: Props) {\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const [saved, setSaved] = useState(true);\r\n\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n dispatch(\r\n putSeason({\r\n ...props.season,\r\n [name]: value,\r\n })\r\n );\r\n setSaved(false);\r\n },\r\n [dispatch, props.season]\r\n );\r\n const handleBoolChange = useCallback(\r\n (e: any) => {\r\n const { name, checked } = e.target;\r\n dispatch(\r\n putSeason({\r\n ...props.season,\r\n [name]: checked,\r\n })\r\n );\r\n setSaved(false);\r\n },\r\n [dispatch, props.season]\r\n );\r\n const save = useCallback(\r\n (e: any) => {\r\n dispatch(updateSeason(props.season));\r\n setSaved(true);\r\n },\r\n [dispatch, props.season]\r\n );\r\n\r\n return (\r\n <>\r\n

    Saison bearbeite

    \r\n
    \r\n \r\n \r\n {\"Aktiv\"}\r\n
    \r\n }\r\n >\r\n Speichere\r\n \r\n \r\n }\r\n >\r\n Öbersecht\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { setUiIndex } from \"../../../games/gamesActionCreators\";\r\nimport {\r\n selectCurrentUiIndex,\r\n selectEditSchieber,\r\n} from \"../../../games/gamesSelector\";\r\nimport { RegisterSchieberNavigatorTile } from \"./Navigator/RegisterSchieberNavigatorTile\";\r\n\r\nexport function RegisterSchieberStaticSwiping() {\r\n const dispatch = useDispatch();\r\n\r\n const schieber = useSelector(selectEditSchieber);\r\n\r\n const uiIndex = useSelector(selectCurrentUiIndex);\r\n\r\n return (\r\n
    \r\n dispatch(setUiIndex(uiIndex - 1))}\r\n key={\"back\"}\r\n >\r\n Zurück\r\n \r\n dispatch(setUiIndex(uiIndex + 1))}\r\n key={\"forward\"}\r\n >\r\n Weiter\r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\nimport \"../../App.scss\";\n\ninterface Props {\n children: any;\n}\nexport function Header(props: Props) {\n return
    {props.children}
    ;\n}\n","import React, { useCallback } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport {\r\n playerTitle,\r\n selectPlayer,\r\n selectPlayers,\r\n} from \"../../../players/playerSelector\";\r\nimport { Player } from \"../../../types/types\";\r\nimport { useJassereiFormStyles } from \"../../Common/useJassereiFormStyles\";\r\n\r\ninterface Props {\r\n playerId?: number;\r\n setPlayer: (playerId: number) => void;\r\n informative: boolean;\r\n}\r\nexport function PlayerSwitch(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n\r\n const player = useSelector((state: RootState) =>\r\n selectPlayer(state, props.playerId)\r\n );\r\n\r\n const players = [undefined, ...useSelector(selectPlayers)];\r\n\r\n const onPlayerChanged = useCallback(\r\n (e: any) => props.setPlayer(Number(e.target.value)),\r\n [props]\r\n );\r\n\r\n return props.informative ? (\r\n \r\n {playerTitle(player)}\r\n \r\n ) : (\r\n <>\r\n \r\n {players.map((s: Player | undefined) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","import { useJassereiFormStyles } from \"../../Common/useJassereiFormStyles\";\r\n\r\ninterface Props {\r\n value?: any;\r\n name: string;\r\n options: { value: any; label: string }[];\r\n setValue: (value: any) => void;\r\n informative: boolean;\r\n className?: any;\r\n}\r\nexport function JSelect(props: Props) {\r\n const classes = useJassereiFormStyles();\r\n\r\n return props.informative ? (\r\n \r\n {props.options.find((o) => o.value === props.value)?.label}\r\n \r\n ) : (\r\n <>\r\n \r\n {props.options.map((s) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { faLongArrowAltLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { PlayerSwitch } from \"./PlayerSwitch\";\r\n\r\nimport \"./erfassen.scss\";\r\nimport { JSelect } from \"./JSelect\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\n\r\nconst goalOptions = [\r\n { value: 2500, label: \"2500\" },\r\n { value: 1000, label: \"1000\" },\r\n { value: 1500, label: \"1500\" },\r\n { value: 2000, label: \"2000\" },\r\n { value: 5000, label: \"5000\" },\r\n];\r\n\r\ninterface Props {\r\n schieber: SchieberSession;\r\n setter: (part: any) => any;\r\n playerSetter: (playerNo: number, playerId: number) => any;\r\n}\r\nexport function RegisterSchieberPlayerComposer(props: Props) {\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n props.setter({ [name]: value });\r\n },\r\n [props]\r\n );\r\n return (\r\n
    \r\n
    \r\n
    \r\n props.playerSetter(1, Number(playerId))}\r\n informative={Boolean(props.schieber.sessionId)}\r\n key={props.schieber?.team1?.player1Id}\r\n >\r\n
    \r\n
    \r\n props.playerSetter(2, Number(playerId))}\r\n informative={Boolean(props.schieber.sessionId)}\r\n key={props.schieber?.team2?.player1Id}\r\n >\r\n
    \r\n
    \r\n props.playerSetter(3, Number(playerId))}\r\n informative={Boolean(props.schieber.sessionId)}\r\n key={props.schieber?.team1?.player2Id}\r\n >\r\n
    \r\n
    \r\n props.playerSetter(4, Number(playerId))}\r\n informative={Boolean(props.schieber.sessionId)}\r\n key={props.schieber?.team2?.player2Id}\r\n >\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { MenuItem, TextField } from \"@material-ui/core\";\r\nimport { useJassereiFormStyles } from \"../../Common/useJassereiFormStyles\";\r\nimport { Season } from \"../../../seasons/seasonReducer\";\r\nimport { SchieberSession } from \"../../../games/gamesReducer\";\r\n\r\ninterface Props {\r\n schieber: SchieberSession;\r\n setter: (part: any) => any;\r\n seasons: Season[];\r\n}\r\nexport function RegisterSchieberForm(props: Props) {\r\n const styles = useJassereiFormStyles();\r\n\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n props.setter({ [name]: value });\r\n },\r\n [props]\r\n );\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n {props.seasons?.map((season: Season) => (\r\n \r\n {season.name}\r\n \r\n ))}\r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport { RegisterSchieberPlayerComposer } from \"./RegisterSchieberPlayerComposer\";\r\nimport { RegisterSchieberForm } from \"./RegisterSchieberForm\";\r\nimport { selectEditSchieber } from \"../../../games/gamesSelector\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectActiveSeasons } from \"../../../seasons/seasonSelector\";\r\nimport {\r\n putRegisterSchieberFormValues,\r\n putSchieberPlayer,\r\n} from \"../../../games/registerGameActionCreators\";\r\nimport { fetchPlayers } from \"../../../players/playerActionCreators\";\r\n\r\nexport function RegisterSchieberInit() {\r\n const dispatch = useDispatch();\r\n const schieber = useSelector(selectEditSchieber);\r\n const seasons = useSelector(selectActiveSeasons);\r\n\r\n useEffect(() => {\r\n // set default value to latest season, if possible\r\n if (!schieber.seasonId && seasons?.length > 0) {\r\n dispatch(\r\n putRegisterSchieberFormValues({ seasonId: seasons[0]?.seasonId })\r\n );\r\n }\r\n }, [dispatch, schieber, seasons]);\r\n\r\n useEffect(() => {\r\n dispatch(fetchPlayers());\r\n }, [dispatch]);\r\n\r\n const setter = (part: any) => dispatch(putRegisterSchieberFormValues(part));\r\n const setPlayer = (player: number, playerId: number) =>\r\n dispatch(putSchieberPlayer(player, playerId));\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n selectEditSchieber,\r\n selectInitSchieberValid,\r\n} from \"../../../games/gamesSelector\";\r\nimport { lockInput } from \"../../../games/registerGameActionCreators\";\r\nimport { selectPlayerTitle } from \"../../../players/playerSelector\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { RegisterSchieberNavigatorTile } from \"./Navigator/RegisterSchieberNavigatorTile\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { useCallback } from \"react\";\r\n\r\nexport function LockSchieberRegister() {\r\n const dispatch = useDispatch();\r\n\r\n const schieber = useSelector(selectEditSchieber);\r\n const initSchieberValid = useSelector(selectInitSchieberValid);\r\n\r\n const startPlayerName = useSelector((state: RootState) =>\r\n selectPlayerTitle(state, schieber?.team1?.player1Id)\r\n );\r\n\r\n const start = useCallback(() => {\r\n dispatch(lockInput());\r\n }, [dispatch]);\r\n\r\n return (\r\n <>\r\n {!schieber?.sessionId && (\r\n
    \r\n \r\n {initSchieberValid\r\n ? schieber?.team1?.player1Id && startPlayerName + \" fangt ah.\"\r\n : \"Spieler uswähle\"}\r\n \r\n {initSchieberValid && (\r\n \r\n Guet Jass! \r\n \r\n )}\r\n
    \r\n )}\r\n \r\n );\r\n}\r\n","import {\r\n faChevronLeft,\r\n faChevronRight,\r\n faHandPointer,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { setUiIndex } from \"../../../games/gamesActionCreators\";\r\nimport {\r\n isHandValid,\r\n selectCurrentUiIndex,\r\n selectEditSchieber,\r\n selectIsGoalReached,\r\n selectSchieberHand,\r\n} from \"../../../games/gamesSelector\";\r\nimport { RootState } from \"../../../global/Store\";\r\nimport { RegisterSchieberNavigatorTile } from \"./Navigator/RegisterSchieberNavigatorTile\";\r\n\r\nexport function RegisterSchieberSwipingHelper() {\r\n const dispatch = useDispatch();\r\n const schieber = useSelector(selectEditSchieber);\r\n\r\n const uiIndex = useSelector(selectCurrentUiIndex);\r\n const hand = useSelector((state: RootState) =>\r\n selectSchieberHand(state, uiIndex + 1)\r\n );\r\n const finito = useSelector(selectIsGoalReached);\r\n const valid = isHandValid(hand);\r\n const content = useMemo(() => {\r\n if (uiIndex <= schieber.hand.length - 2) {\r\n if (valid) {\r\n return { a: \"Witerschriibe\", b: \"right\" };\r\n }\r\n return { a: \"Stäche Wiise Schriibe! \", b: \"none\" };\r\n }\r\n if (uiIndex === schieber.hand.length && !finito) {\r\n return { a: \"Zrugg zum schriibe\", b: \"left\" };\r\n }\r\n if (uiIndex > schieber.hand.length) {\r\n return { a: \"Zrugg zum schriibe\", b: \"left\" };\r\n }\r\n return undefined;\r\n }, [finito, schieber.hand.length, uiIndex, valid]);\r\n\r\n const goToCurrent = useCallback(\r\n () => dispatch(setUiIndex(schieber.hand.length - 1)),\r\n [dispatch, schieber.hand.length]\r\n );\r\n return (\r\n <>\r\n {content && (\r\n
    \r\n \r\n {content.b === \"left\" && (\r\n <>\r\n \r\n  \r\n \r\n  \r\n \r\n  \r\n \r\n )}\r\n {content.a}\r\n {content.b === \"right\" && (\r\n <>\r\n  \r\n \r\n  \r\n \r\n  \r\n \r\n \r\n )}\r\n \r\n
    \r\n )}\r\n \r\n );\r\n}\r\n","import { Admin } from \"./Admin\";\nimport { AdminRequired } from \"../Common/AdminRequired\";\n\nexport const InitClub = () => (\n <>\n

    Willkomme

    \n \n \n Do chasch din Verein fertig irichte.\n
    \n Für en Schieber bruchts schomol 4 Benutzer!\n
    \n
    \n\n \n
    \n \n);\n","import React, { useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { putAuthData } from \"../../user/userActionCreators\";\nimport { useLocation } from \"react-router-dom\";\ninterface LooseObject {\n [key: string]: any;\n}\n\ninterface Props {\n children: any;\n}\nexport const Enter = (props: Props) => {\n const dispatch = useDispatch();\n const { search } = useLocation();\n\n const auth = React.useMemo(() => {\n const result: LooseObject = {};\n const params = new URLSearchParams(search);\n const keys = params.keys();\n let key = keys.next();\n while (key.value) {\n result[key.value] = params.get(key.value);\n key = keys.next();\n }\n return result;\n }, [search]);\n\n useEffect(() => {\n dispatch(putAuthData(auth));\n }, [auth, dispatch]);\n return <>{props.children};\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { Redirect, Route, Switch } from \"react-router-dom\";\r\nimport { About } from \"./components/Public/About\";\r\nimport { ApiStatusWidget } from \"./components/Common/ApiStatusWidget\";\r\nimport { AuthWidget } from \"./components/Common/AuthWidget\";\r\nimport { LoginPage } from \"./components/Public/LoginPage\";\r\nimport { Nav } from \"./components/Navigation/Nav\";\r\nimport { NavItemLink } from \"./components/Navigation/NavItemLink\";\r\nimport { NavTitle } from \"./components/Navigation/NavTitle\";\r\nimport { PlayerDetails } from \"./components/Player/PlayerDetails\";\r\nimport { Players } from \"./components/Player/Players\";\r\nimport { PrivateRoute } from \"./components/Common/PrivateRoute\";\r\nimport { Welcome } from \"./components/Public/Welcome\";\r\nimport { NavItems } from \"./components/Navigation/NavItems\";\r\nimport { UserWidget } from \"./components/Public/UserWidget\";\r\nimport { Schiebers } from \"./components/Spiel/Schiebers\";\r\nimport { SchieberDetails } from \"./components/Spiel/SchieberDetails\";\r\nimport { Admin } from \"./components/Admin/Admin\";\r\nimport { Body } from \"./components/Common/Body\";\r\nimport { NavToggler } from \"./components/Navigation/NavToggler\";\r\nimport { SchiebersLoader } from \"./components/Spiel/SchiebersLoader\";\r\nimport { PlayersLoader } from \"./components/Player/PlayersLoader\";\r\nimport { UserDetails } from \"./components/User/UserDetails\";\r\nimport { Footer } from \"./components/Common/Footer\";\r\nimport { Main } from \"./components/Common/Main\";\r\nimport { ConnectedRouter } from \"connected-react-router\";\r\nimport { history } from \"./global/Store\";\r\nimport { SchieberDrafting } from \"./components/Spiel/Drafting/SchieberDrafting\";\r\nimport { RegisterSchieberFooter } from \"./components/Spiel/Erfassen/RegisterSchieberFooter\";\r\nimport { RegisterSchieber } from \"./components/Spiel/Erfassen/RegisterSchieber\";\r\nimport { ManageUser } from \"./components/Admin/ManageUser\";\r\nimport { AdminRequired } from \"./components/Common/AdminRequired\";\r\nimport { NewSchieberRegister } from \"./components/Spiel/Erfassen/NewSchieberRegister\";\r\nimport { AuthRequired } from \"./components/Common/AuthRequired\";\r\nimport { ManageSeason } from \"./components/Admin/ManageSeason\";\r\nimport { RegisterSchieberStaticSwiping } from \"./components/Spiel/Erfassen/RegisterSchieberStaticSwiping\";\r\nimport { Header } from \"./components/Common/Header\";\r\nimport { RegisterSchieberInit } from \"./components/Spiel/Erfassen/RegisterSchieberInit\";\r\nimport { LockSchieberRegister } from \"./components/Spiel/Erfassen/LockSchieberRegister\";\r\nimport { RegisterSchieberSwipingHelper } from \"./components/Spiel/Erfassen/RegisterSchieberSwipingHelper\";\r\nimport { currentSubDomain, getMainUrl } from \"./util/commonUtil\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faHome } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { fetchSeasons } from \"./seasons/seasonActionCreators\";\r\nimport { selectUser } from \"./user/userSelector\";\r\nimport { deleteAuthData } from \"./user/userActionCreators\";\r\nimport \"./App.scss\";\r\nimport { InitClub } from \"./components/Admin/InitClub\";\r\nimport { selectClubdetails } from \"./clubdetails/clubdetailsSelector\";\r\nimport { fetchPlayers } from \"./players/playerActionCreators\";\r\nimport { Enter } from \"./components/Admin/Enter\";\r\n\r\ninterface Props {\r\n subdomain: string;\r\n}\r\nexport function ClubApp(props: Props) {\r\n const subdomain = currentSubDomain();\r\n const user = useSelector(selectUser);\r\n const club = useSelector(selectClubdetails);\r\n\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n if (user && user?.shortName?.toLowerCase() !== subdomain?.toLowerCase()) {\r\n dispatch(deleteAuthData);\r\n }\r\n }, [dispatch, subdomain, user, user?.shortName]);\r\n\r\n useEffect(() => {\r\n dispatch(fetchSeasons());\r\n if (user) {\r\n dispatch(fetchPlayers());\r\n }\r\n }, [dispatch, user]);\r\n\r\n useEffect(() => {\r\n document.title = club?.longName ?? \"Jasserei\";\r\n }, [club?.longName]);\r\n\r\n const [hiddenMenu, setHiddenMenu] = useState(true);\r\n const toggle = useCallback(() => setHiddenMenu(!hiddenMenu), [hiddenMenu]);\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\n \r\n \r\n
    \r\n setHiddenMenu(true)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Neu lade\r\n \r\n \r\n \r\n \r\n \r\n \r\n Neu lade\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n ?9yd??Zpf???K?c?m???\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\nexport default ClubApp;\r\n","import { SchieberSession } from \"../../games/gamesReducer\";\nimport { Player } from \"../../types/types\";\n\nexport const alain: Player = {\n firstName: \"Alain\",\n shortName: \"AB\",\n displayName: \"Alain\",\n userId: 0,\n lastName: \"Berset\",\n nickname: \"Alain\",\n remarks: \"SP\",\n active: true,\n admin: false,\n avatar: \"\",\n defaultKartendeck: \"ch-fr\",\n clubId: 0,\n};\nexport const viola: Player = {\n firstName: \"Viola\",\n shortName: \"VA\",\n displayName: \"Viola\",\n userId: 1,\n lastName: \"Viola\",\n nickname: \"Viola\",\n remarks: \"Mitte\",\n active: true,\n admin: false,\n avatar: \"\",\n defaultKartendeck: \"ch-fr\",\n clubId: 0,\n};\nexport const ueli: Player = {\n firstName: \"Ueli\",\n shortName: \"UM\",\n displayName: \"Ueli\",\n userId: 2,\n lastName: \"Maurer\",\n nickname: \"Ueli\",\n remarks: \"SVP\",\n active: true,\n admin: false,\n avatar: \"\",\n defaultKartendeck: \"ch-de\",\n clubId: 0,\n};\nexport const karin: Player = {\n firstName: \"Karin\",\n shortName: \"KKS\",\n displayName: \"Karin\",\n userId: 3,\n lastName: \"Keller-Suter\",\n nickname: \"Karin\",\n remarks: \"FDP\",\n active: true,\n admin: false,\n avatar: \"\",\n defaultKartendeck: \"ch-de\",\n clubId: 0,\n};\n\nexport const previewState: SchieberSession = {\n sessionId: 8,\n kartendeck: \"ch-de\",\n hand: [\n {\n no: 1,\n multiplikator: 1,\n team1Result: 88,\n team2Result: 69,\n team1Wiis: [\n {\n playerId: 2,\n betrag: 20,\n },\n ],\n team2Wiis: [],\n playerDragsiId: 3,\n variante: 2,\n playerGschobeId: 2,\n },\n {\n no: 2,\n multiplikator: 2,\n playerDragsiId: 6,\n team1Wiis: [\n {\n playerId: 2,\n betrag: 50,\n },\n ],\n team2Wiis: [],\n variante: 3,\n team1Result: 45,\n team2Result: 112,\n },\n {\n no: 3,\n multiplikator: 3,\n playerDragsiId: 2,\n team1Wiis: [],\n team2Wiis: [],\n variante: 6,\n team1Result: 95,\n team2Result: 62,\n },\n {\n no: 4,\n multiplikator: 1,\n playerDragsiId: 5,\n team1Wiis: [],\n team2Wiis: [],\n variante: 2,\n playerGschobeId: 6,\n team1Result: 91,\n team2Result: 66,\n },\n {\n no: 5,\n multiplikator: 2,\n playerDragsiId: 3,\n team1Wiis: [\n {\n playerId: 2,\n betrag: 100,\n },\n ],\n team2Wiis: [],\n variante: 3,\n team1Result: 257,\n team2Result: 0,\n },\n {\n no: 6,\n multiplikator: 1,\n playerDragsiId: 6,\n team1Wiis: [\n {\n playerId: 2,\n betrag: 100,\n },\n ],\n team2Wiis: [],\n playerGschobeId: 5,\n variante: 2,\n team1Result: 66,\n team2Result: 91,\n },\n {\n no: 7,\n multiplikator: 2,\n playerDragsiId: 2,\n team1Wiis: [],\n team2Wiis: [],\n variante: 3,\n team1Result: 89,\n team2Result: 68,\n },\n {\n no: 8,\n multiplikator: 2,\n playerDragsiId: 5,\n team1Wiis: [],\n team2Wiis: [],\n variante: 4,\n team1Result: 69,\n team2Result: 88,\n },\n {\n no: 9,\n multiplikator: 3,\n playerDragsiId: 3,\n team1Wiis: [],\n team2Wiis: [\n {\n playerId: 6,\n betrag: 150,\n },\n ],\n variante: 6,\n playerGschobeId: 2,\n team1Result: 32,\n team2Result: 125,\n },\n {\n no: 10,\n multiplikator: 2,\n playerDragsiId: 6,\n team1Wiis: [],\n team2Wiis: [],\n variante: 4,\n team1Result: 26,\n team2Result: 131,\n playerGschobeId: 5,\n },\n {\n no: 11,\n multiplikator: 3,\n playerDragsiId: 2,\n team1Wiis: [],\n team2Wiis: [\n {\n playerId: 5,\n betrag: 50,\n },\n ],\n variante: 6,\n team1Result: 91,\n team2Result: 66,\n },\n {\n no: 12,\n multiplikator: 2,\n playerDragsiId: 5,\n team1Wiis: [],\n team2Wiis: [],\n variante: 3,\n team1Result: 145,\n team2Result: 12,\n },\n ],\n pointsGoal: 2500,\n remarks: \"Bundesratsjass vom 2. Juli 2021\",\n team1Result: 0,\n team2Result: 0,\n seasonId: 1,\n team1: { player1Id: viola.userId, player2Id: ueli.userId },\n team2: { player1Id: karin.userId, player2Id: alain.userId },\n};\n","import { useEffect, useMemo, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { Route } from \"react-router-dom\";\r\nimport {\r\n team1sumreducerFn,\r\n team2sumreducerFn,\r\n} from \"../../games/gamesSelector\";\r\nimport { putPlayers } from \"../../players/playerActionCreators\";\r\nimport { Footer } from \"../Common/Footer\";\r\nimport { SchieberStrichliJassTafel } from \"../Spiel/SchieberStrichliJassTafel\";\r\nimport { alain, karin, previewState, ueli, viola } from \"./state\";\r\n\r\nexport function PreviewZ() {\r\n const dispatch = useDispatch();\r\n\r\n const [game] = useState(previewState);\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n dispatch(putPlayers([alain, karin, ueli, viola]));\r\n }, [dispatch]);\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((index) => (index > 12 ? 0 : index + 1));\r\n }, 3000);\r\n return () => clearInterval(interval);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const current = useMemo(\r\n () => ({ ...game, hand: game.hand.slice(0, index) }),\r\n [index, game]\r\n );\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {current.hand.reduce(team1sumreducerFn, 0)}   \r\n {viola.displayName} & \r\n {ueli.displayName}\r\n \r\n {karin.displayName} & \r\n {alain.displayName}   \r\n {current.hand.reduce(team2sumreducerFn, 0)}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import {\r\n faArrowCircleRight,\r\n faPlusCircle,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nfunction ClubJoin() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Het din Verein scho en Zuegang?

    \r\n

    \r\n \r\n   Portal\r\n

    \r\n \r\n
    \r\n \r\n

    \r\n Neue Verein  \r\n \r\n

    \r\n \r\n \r\n );\r\n}\r\nexport default ClubJoin;\r\n","import { useCallback, useMemo, useState } from \"react\";\r\nimport { Button, TextField } from \"@material-ui/core\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useJassereiFormStyles } from \"../Common/useJassereiFormStyles\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSave } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { fetchCreateClub } from \"../../clubdetails/clubdetailsActionCreators\";\r\nimport { getSubDomainUrl } from \"../../util/commonUtil\";\r\n\r\nfunction ClubCreate() {\r\n const [club, setClub] = useState({\r\n shortName: \"\",\r\n longName: \"\",\r\n clubId: 0,\r\n clubName: \"\",\r\n contactAdress: \"\",\r\n contactEmail: \"\",\r\n contactLastName: \"\",\r\n contactName: \"\",\r\n userName: \"\",\r\n password: \"\",\r\n });\r\n\r\n const styles = useJassereiFormStyles();\r\n const dispatch = useDispatch();\r\n\r\n const handleChange = useCallback(\r\n (e: any) => {\r\n const { name, value } = e.target;\r\n setClub({\r\n ...club,\r\n [name]: value,\r\n });\r\n },\r\n [club]\r\n );\r\n\r\n const handleClubNameChange = useCallback(\r\n (e: any) =>\r\n setClub({\r\n ...club,\r\n clubName: e.target.value,\r\n longName:\r\n club.longName === e.target.value.substring(0, club.longName.length)\r\n ? e.target.value\r\n : club.longName,\r\n }),\r\n [club]\r\n );\r\n\r\n const save = useCallback(\r\n (e: any) => {\r\n dispatch(fetchCreateClub(club));\r\n },\r\n [dispatch, club]\r\n );\r\n\r\n const clubNameValid = useMemo(() => club.clubName?.length > 4, [club]);\r\n const longNameValid = useMemo(() => club.longName?.length > 4, [club]);\r\n const sonderzeiche = useMemo(\r\n () => (club.shortName.match(/[^a-zA-Z0-9]/) ? true : false),\r\n [club]\r\n );\r\n const shortNameValid = useMemo(\r\n () =>\r\n club.shortName?.length > 2 &&\r\n club.shortName?.length < 15 &&\r\n !sonderzeiche,\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [club]\r\n );\r\n const userNameValid = useMemo(() => club.userName?.length > 3, [club]);\r\n const passwordValid = useMemo(() => club.password?.length > 3, [club]);\r\n\r\n const valid = useMemo(\r\n () =>\r\n clubNameValid &&\r\n longNameValid &&\r\n shortNameValid &&\r\n userNameValid &&\r\n passwordValid,\r\n [clubNameValid, longNameValid, passwordValid, shortNameValid, userNameValid]\r\n );\r\n\r\n const urlPreview = useMemo(\r\n () =>\r\n sonderzeiche\r\n ? \"Kei Sonderzeiche!\"\r\n : getSubDomainUrl(club.shortName?.length > 0 ? club.shortName : \"???\"),\r\n [club.shortName, sonderzeiche]\r\n );\r\n\r\n return (\r\n <>\r\n

    Neue Verein

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n

    Administratorzuegang

    \r\n \r\n \r\n
    \r\n

    Kontaktdate

    \r\n \r\n \r\n \r\n \r\n
    \r\n }\r\n >\r\n Erstelle\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ClubCreate;\r\n","import React, { useState } from \"react\";\r\nimport { faArrowRight, faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Infos } from \"../Admin/Infos\";\r\n\r\nfunction ClubAbout() {\r\n const [visible, setVisible] = useState(false);\r\n return (\r\n <>\r\n

    Jasserei.ch

    \r\n

    Das Portal esch es Gschänk a ali statistisch interessierte Jasser

    \r\n Made by Puurle ©2021-2022\r\n
    \r\n {visible ? (\r\n \r\n ) : (\r\n <>\r\n
    setVisible(true)}>\r\n \r\n   Meh  \r\n \r\n
    \r\n \r\n )}\r\n \r\n );\r\n}\r\nexport default ClubAbout;\r\n","import { RootState } from \"../global/Store\";\r\n\r\nexport const selectClubs = (state: RootState) => state.clubs.clubs;\r\n","import React, { useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { fetchClubs } from \"../../clubs/clubsActionCreators\";\r\nimport { selectClubs } from \"../../clubs/clubsSelector\";\r\nimport { getSubDomainUrl } from \"../../util/commonUtil\";\r\nimport { Image } from \"../Common/Image\";\r\n\r\nfunction Clubs() {\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n dispatch(fetchClubs());\r\n }, [dispatch]);\r\n const clubs = useSelector(selectClubs);\r\n\r\n const navigate = (shortName: string) => {\r\n window.location.href = getSubDomainUrl(shortName);\r\n };\r\n\r\n return (\r\n <>\r\n

    Registrierti Verein

    \r\n \r\n \r\n {clubs?.map((c, i) => (\r\n navigate(c.shortName)}>\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n \r\n \r\n

    {c.shortName}

    \r\n
    {c.clubName}{c.longName}
    \r\n \r\n );\r\n}\r\nexport default Clubs;\r\n","import React from \"react\";\r\nimport { Route, Switch } from \"react-router-dom\";\r\nimport { Nav } from \"./components/Navigation/Nav\";\r\nimport { NavItemLink } from \"./components/Navigation/NavItemLink\";\r\nimport { NavTitle } from \"./components/Navigation/NavTitle\";\r\nimport { NavItems } from \"./components/Navigation/NavItems\";\r\nimport { Body } from \"./components/Common/Body\";\r\nimport { Main } from \"./components/Common/Main\";\r\nimport { ConnectedRouter } from \"connected-react-router\";\r\nimport { history } from \"./global/Store\";\r\nimport \"./App.scss\";\r\nimport { PreviewZ } from \"./components/preview/PreviewZ\";\r\nimport ClubJoin from \"./components/Portal/ClubJoin\";\r\nimport ClubCreate from \"./components/Portal/ClubCreate\";\r\nimport ClubAbout from \"./components/Portal/ClubAbout\";\r\nimport Clubs from \"./components/Portal/Clubs\";\r\nfunction PortalApp() {\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\n \r\n \r\n \r\n \r\n \r\n \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 PortalApp;\r\n","import React, { useEffect } from \"react\";\r\nimport { currentSubDomain, getMainUrl } from \"./util/commonUtil\";\r\nimport ClubApp from \"./ClubApp\";\r\nimport PortalApp from \"./PortalApp\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectClubs } from \"./clubs/clubsSelector\";\r\nimport \"./App.scss\";\r\nimport { fetchClubs } from \"./clubs/clubsActionCreators\";\r\nimport { fetchClubDetails } from \"./clubdetails/clubdetailsActionCreators\";\r\n\r\nfunction App() {\r\n const subdomain = currentSubDomain();\r\n\r\n const clubs = useSelector(selectClubs);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(fetchClubs());\r\n if (subdomain) {\r\n dispatch(fetchClubDetails(subdomain));\r\n }\r\n }, [dispatch, subdomain]);\r\n\r\n useEffect(() => {\r\n if (\r\n !subdomain || // wenn noch nicht im club\r\n !clubs || // wenn noch nicht geladen\r\n clubs.some((c) => c.shortName?.toLowerCase() === subdomain?.toLowerCase()) // wenn club existiert\r\n ) {\r\n // OK\r\n return;\r\n }\r\n // TODO: not working properly\r\n document.location = getMainUrl();\r\n }, [clubs, subdomain]);\r\n\r\n return (\r\n <>\r\n {!clubs ? (\r\n <>Bitte warte...\r\n ) : subdomain ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default App;\r\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 React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\nimport reportWebVitals from \"./reportWebVitals\";\r\nimport { Provider } from \"react-redux\";\r\nimport store, { persistor } from \"./global/Store\";\r\nimport { PersistGate } from \"redux-persist/integration/react\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport \"./index.css\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n } persistor={persistor}>\r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}