{"version":3,"sources":["/build/src/modules/betslip/components/BetslipFooter/ExpressPart/expressPart.scss","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleUpdateBetslipOddsByBet.js","/build/src/assets/svg/warning.svg","/build/src/modules/betslip/components/BetslipFooter/SystemPart/systemPart.scss","/build/src/modules/betslip/components/Combinations/combinations.scss","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleCreateBetsRequest.js","/build/src/modules/betslip/components/Tabs/Tabs.scss","/build/src/modules/betslip/components/BetslipStakeInput/betslipStakeInput.scss","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleAddBetslipBet.js","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleCreateBetsFail.js","/build/node_modules/@gin-betting/betslip/dist/index.js","/build/node_modules/@gin-betting/restrictions/dist/constants.js","/build/src/assets/svg/close-video.svg","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleAdoptUnaffectedBetslipOdds.js","/build/node_modules/@gin-betting/betslip/dist/hooks/useSuggests.js","/build/src/modules/betslip/components/BetslipHeader/UpdatesSettings/CheckListItem/checkListItem.scss","/build/src/modules/betslip/components/TotalOdd/totalOdd.scss","/build/node_modules/@gin-betting/restrictions/dist/selectors.js","/build/src/modules/betslip/components/Odd/odd.scss","/build/node_modules/@gin-betting/betslip/dist/constants.js","/build/src/modules/betslip/components/BetslipFooter/SinglePart/singlePartMob.scss","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleDeleteBetslipBet.js","/build/node_modules/@gin-betting/restrictions/dist/actions.js","/build/src/modules/betslip/components/Odd/OddIcon/oddIcon.scss","/build/src/modules/betslip/components/Error/error.scss","/build/src/modules/betslip/components/Odd/MatchDetails/matchDetails.scss","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleSetInitialBetslip.js","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleUpdateBet.js","/build/src/modules/betslip/components/BetslipFooter/BetDetails/betDetails.scss","/build/src/modules/betslip/components/BetslipFooter/TotalRow/totalRow.scss","/build/node_modules/@gin-betting/restrictions/dist/reducer.js","/build/src/modules/betslip/components/BetslipFooter/ExpressPart/expressPartMob.scss","/build/src/modules/betslip/components/BetslipFooter/betslipFooter.scss","/build/node_modules/@gin-betting/betslip/dist/reducer.js","/build/node_modules/lodash/_baseGt.js","/build/src/modules/betslip/components/BetslipFooter/SystemPart/systemPartMob.scss","/build/src/modules/betslip/components/BetslipModal/betslipModal.scss","/build/src/modules/betslip/components/Odd/OddDetails/oddDetails.scss","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleRehydrate.js","/build/node_modules/@gin-betting/restrictions/dist/utils.js","/build/node_modules/lodash/_baseLt.js","/build/src/modules/betslip/components/QuickBetslip/quickBetslip.scss","/build/node_modules/@gin-betting/restrictions/dist/index.js","/build/src/modules/betslip/async/handleBetslipModuleLoad.ts","/build/src/modules/betslip/restrictions/RestrictionsContext.ts","/build/src/modules/betslip/restrictions/useRestrictions.ts","/build/src/modules/betslip/restrictions/Restrictions.tsx","/build/src/modules/betslip/components/BetslipBetCount/useBetslipBetCount.ts","/build/src/modules/betslip/components/BetslipBetCount/BetslipBetCount.tsx","/build/src/modules/betslip/messages.js","/build/src/modules/betslip/components/BetslipModal/BetslipModal.tsx","/build/src/modules/betslip/constants.ts","/build/src/modules/betslip/components/AcceptOddsChangeModal/useAcceptOddsChangeModal.ts","/build/src/modules/betslip/components/AcceptOddsChangeModal/AcceptOddsChangeModal.tsx","/build/src/modules/betslip/components/RestrictionsComboSystem/useRestrictionsComboSystem.ts","/build/src/modules/betslip/components/RestrictionsComboSystem/RestrictionsComboSystem.tsx","/build/src/modules/betslip/hooks/useChangeStake.ts","/build/src/modules/betslip/selectors.ts","/build/src/modules/betslip/hooks/useExpressSystemErrors.ts","/build/src/modules/betslip/PlaceBetContext.ts","/build/src/modules/betslip/utils.ts","/build/src/modules/betslip/hooks/usePlaceBet.ts","/build/src/modules/betslip/hooks/useSelectBetslipBetId.ts","/build/src/modules/betslip/hooks/useSuggests.ts","/build/src/modules/betslip/hooks/useSetDefaultStake.ts","/build/src/modules/betslip/components/BetslipFooter/BetDetails/BetDetails.tsx","/build/src/modules/betslip/components/BetslipStakeInput/BetslipStakeInput.tsx","/build/src/modules/betslip/components/BetslipStakeInput/useBetslipStakeInput.ts","/build/src/modules/betslip/components/Error/Error.tsx","/build/src/modules/betslip/components/PlaceBet/PlaceBet.tsx","/build/src/modules/betslip/components/BetslipFooter/TotalRow/TotalRow.tsx","/build/src/modules/betslip/components/BetslipFooter/ExpressPart/useExpressPart.ts","/build/src/modules/betslip/components/BetslipFooter/ExpressPart/ExpressPart.tsx","/build/src/modules/betslip/components/BetslipFooter/ExpressPart/ExpressPartMob.tsx","/build/src/modules/betslip/components/BetslipFooter/SinglePart/useSinglePart.ts","/build/src/modules/betslip/components/BetslipFooter/SinglePart/SinglePart.tsx","/build/src/modules/betslip/components/BetslipFooter/SinglePart/SinglePartMob.tsx","/build/src/modules/betslip/components/Combinations/CheckListItem/CheckListItem.tsx","/build/src/modules/betslip/components/Combinations/Combinations.tsx","/build/src/modules/betslip/components/BetslipFooter/SystemPart/useSystemPart.ts","/build/src/modules/betslip/components/BetslipFooter/SystemPart/SystemPart.tsx","/build/src/modules/betslip/components/BetslipFooter/SystemPart/SystemPartMob.tsx","/build/src/modules/betslip/components/BetslipFooter/BetslipFooter.tsx","/build/src/modules/betslip/components/RestrictionsSingle/useRestrictionsSingle.ts","/build/src/modules/betslip/components/RestrictionsSingle/RestrictionsSingle.tsx","/build/src/modules/betslip/components/Odd/MatchDetails/MatchDetails.tsx","/build/src/modules/betslip/components/Odd/OddDetails/OddDetails.tsx","/build/src/modules/betslip/components/Odd/OddIcon/OddIcon.tsx","/build/src/modules/betslip/components/Odd/OddValue/OddValue.tsx","/build/src/modules/betslip/components/Odd/useOdd.ts","/build/src/modules/betslip/components/Odd/useValidOddProps.ts","/build/src/modules/betslip/components/Odd/Odd.tsx","/build/src/modules/betslip/components/Body/GroupOfOdds/GroupOfOdds.tsx","/build/src/modules/betslip/components/Body/Body.tsx","/build/src/modules/betslip/components/Tabs/Tabs.tsx","/build/src/modules/betslip/components/Betslip/useBetslip.ts","/build/src/modules/betslip/components/Betslip/useValidBetslipProps.ts","/build/src/modules/betslip/components/Betslip/Betslip.tsx","/build/src/modules/betslip/components/BetslipHeader/UpdatesSettings/CheckListItem/CheckListItem.tsx","/build/src/modules/betslip/components/BetslipHeader/UpdatesSettings/SettingsPopup.tsx","/build/src/modules/betslip/components/BetslipHeader/UpdatesSettings/useUpdatesSettings.ts","/build/src/modules/betslip/components/BetslipHeader/UpdatesSettings/UpdatesSettings.tsx","/build/src/modules/betslip/components/BetslipHeader/useBetslipHeader.ts","/build/src/assets/svg/del-basket.svg","/build/src/modules/betslip/components/BetslipHeader/BetslipHeader.tsx","/build/src/modules/betslip/components/RefillBalanceModal/useRefillBalanceModal.ts","/build/src/modules/betslip/components/RefillBalanceModal/RefillBalanceModal.tsx","/build/src/modules/betslip/components/BetslipList/useBetslipList.ts","/build/src/modules/betslip/components/BetslipList/BetslipList.tsx","/build/src/modules/betslip/components/BetslipListSubscription/useBetslipListSubscription.ts","/build/src/modules/betslip/components/BetslipListSubscription/BetslipListSubscription.tsx","/build/src/modules/betslip/components/OddButton/useOddButton.ts","/build/src/modules/betslip/components/OddButton/OddButtonContainer.tsx","/build/src/modules/betslip/components/OddButton/OddButton.tsx","/build/src/modules/betslip/components/QuickBetslip/useQuickBetslip.ts","/build/src/modules/betslip/components/QuickBetslip/useValidQuickBetslipProps.ts","/build/src/modules/betslip/components/QuickBetslip/QuickBetslip.tsx","/build/src/modules/betslip/components/RestoreBetslipFromURL/RestoreBetslipFromURL.ts","/build/src/modules/betslip/components/SynchronizeBetslipState/SynchronizeBetslipState.ts","/build/src/modules/betslip/components/TotalOdd/useTotalOdd.ts","/build/src/modules/betslip/components/TotalOdd/useValidTotalOddProps.ts","/build/src/modules/betslip/components/TotalOdd/TotalOdd.tsx","/build/src/modules/betslip/epics.ts","/build/src/modules/betslip/index.ts","/build/node_modules/@gin-betting/betslip/dist/selectors.js","/build/node_modules/lodash/max.js","/build/src/modules/betslip/components/Odd/OddValue/oddValue.scss","/build/src/assets/svg/freebet.svg","/build/node_modules/@gin-betting/betslip/dist/actions.js","/build/node_modules/@gin-betting/betslip/dist/middleware.js","/build/node_modules/@gin-betting/betslip/dist/hooks/index.js","/build/node_modules/@gin-betting/betslip/dist/utils.js","/build/src/assets/svg/autorenew.svg","/build/src/modules/betslip/components/Combinations/CheckListItem/CheckListItem.scss","/build/node_modules/@gin-betting/betslip/dist/epics.js","/build/node_modules/rxjs/observable/race.js","/build/node_modules/@gin-betting/betslip/dist/hooks/usePollingMinStake.js","/build/src/modules/betslip/components/Body/body.scss","/build/node_modules/@gin-betting/restrictions/dist/types.js","/build/node_modules/lodash/min.js","/build/node_modules/@gin-betting/restrictions/node_modules/re-reselect/dist/index.js","/build/node_modules/@gin-betting/betslip/dist/reducer-handlers/handleCreateBetsSuccess.js","/build/node_modules/lodash/_baseExtremum.js","/build/src/modules/betslip/components/PlaceBet/placeBet.scss","/build/node_modules/rxjs/add/observable/race.js","/build/src/modules/betslip/components/Body/GroupOfOdds/groupOfOdds.scss","/build/src/modules/betslip/components/BetslipHeader/UpdatesSettings/updatesSettings.scss","/build/src/assets/svg/live-label.svg","/build/node_modules/@gin-betting/betslip/dist/types.js"],"names":["module","exports","__assign","this","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__importDefault","mod","__esModule","defineProperty","value","convertStatus","default","utils","convertBetStatus","handleUpdateBetslipOddsByBet","state","action","_a","payload","betslipBetId","betslipOddIdsFromArgs","betslipOddIds","bet","nextBetslipOdds","betslipOdds","nextBetslipBets","betslipBets","betslipBet","get","nextBetslipOddIds","betId","id","status","nextStatus","forEach","betslipOddId","betslipOdd","nextBetslipOdd","singleStatus","set","delete","nextBetslipBet","symbol","__createBinding","create","o","m","k","k2","undefined","enumerable","__setModuleDefault","v","__importStar","result","core_1","joinIdPath","handleCreateBetsRequest","args","variables","odds","odd","matchId","marketId","oddId","ratio","betslipOddPath","App","BetslipStatus","PROCESSING","fixedCoef","utils_1","handleAddBetslipBet","newBetslipBet","createBetslipBet","handleCreateBetsFail","ERROR","Betslip","types","constants","actions","selectors","epics","hooks","reducer_1","middleware_1","betslip","reducer","middleware","initialState","UPDATE_RESTRICTIONS","GET_RESTRICTION_FAIL","GET_RESTRICTION_SUCCESS","GET_RESTRICTION_REQUEST","NAME","immutable_1","RestrictionsStateRecord","Record","fetchStatus","FetchStatus","INITIAL","betslipRestrictions","OrderedMap","replaceBetslipBetIdInBetslipOddId","getIdsFromBetslipOddId","handleAdoptUnaffectedBetslipOdds","unaffectedBetslipOddIds","firstUnaffectedBetslipOddId","adoptiveBetslipBet","getInitialBetslipBet","adoptiveBetslipOdds","reduce","acc","newBetslipOddId","newBetslipBetId","newBetslipOdd","subtract","nextAdoptiveBetslipBet","keySeq","toOrderedSet","deleteAll","merge","__spreadArray","to","from","il","j","react_1","lodash_1","constants_1","usePollingMinStake_1","DEFAULT_BET_VARIANTS","useSuggests","maxStake","count","skip","algorithm","minStake","_b","useState","suggests","setSuggests","maxBet","DEFAULT_MAX_STAKE","useEffect","getSuggests","then","map","toNumber","catch","err","console","error","getSortedBetVariants","useCallback","sortBy","filter","slice","isDefaultSuggests","selectLowerMaxBetBetslipBet","selectIsAnyOddHaveError","selectFilteredRestrictionsByOddId","selectRestrictionsByBetslipRestrictionsId","makeSelectRestrictionByCondition","selectRestrictionsByBetslipBet","selectBetslipRestrictions","selectBetslipRestrictionsIdFromProps","selectRestrictionsState","re_reselect_1","reselect_1","betslip_1","selectBetslipBet","selectBetslipBetIdFromProps","selectOddIdFromProps","entities","_","props","restrictionsState","betslipRestrictionsId","createSelector","mode","GQL","BetType","SINGLE","getBetslipRestrictionId","restrictions","concat","restrictionType","betslipRestriction","find","r","type","oddIdFromProps","filterRestrictionsByOddId","normalizeRestriction","simpleRestrictions","maxBetValues","maxBetRestrictionCondition","restriction","min","toString","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","_10","_11","_12","_13","_14","_15","_16","_17","_18","_19","_20","_21","_22","BETSLIP_ODD_STATUSES_TO_PLACE_BET","ODD_ACCEPT_STRATEGIES_MAPPING","BETSLIP_GAMBLER_SETTINGS","KeyPathToReducerProp","BetslipSettingKey","DEFAULT_AVAILABLE_STAKES","PARTS_OF_ERROR_CODES","errorCodes","ErrorCodes","MIN_EXPRESS_SIZE","ROUND_MAX_STAKE","delayBeforeDeleteBetslipOdd","ADD_BETSLIP_BET","ADOPT_UNAFFECTED_BETSLIP_ODDS","DELETE_BETSLIP_BET","GET_MISSING_MATCHES_SUCCESS","GET_MISSING_MATCHES_REQUEST","CREATE_BETS_FAIL","CREATE_BETS_SUCCESS","CREATE_BETS_REQUEST","UPDATE_BETSLIP_ODDS_BY_BET","SET_INITIAL_BETSLIP","TOGGLE_SYSTEM_COMBINATION","CHANGE_BETSLIP_ODD_STATUS","CHANGE_BETSLIP_BET_STAKE","CHANGE_BETSLIP_ODD_STAKE","DELETE_BETSLIP_ODD","ADD_BETSLIP_ODD","CHANGE_COEF_UPDATES","CHOSE_BETSLIP_BET_ID","DELETE_BETSLIP_ODDS","CHANGE_BET_MODE","ErrorCodesMapping","NotEnoughBalance1","NotEnoughBalance2","StakeExceedsLimit","StakeIsTooBig","TicketWasRejected","ResponseTimedOut","PlayerIp","AuthCredentialsExpired","AuthSessionUnknown","BetOnDifferentProviders","MatchLimitExceeded","ApiMatchInBetStopList","ApiMatchInBetStopList2","ApiMatchStatusWrong","ApiMatchStatusWrong2","ApiMarketStatusWrong","InvalidMarketStatus","ApiOddValueWrong","InvalidSelectionValue","InvalidOddStatus1","InvalidOddStatus2","ApiOddStatusWrong","MinimalStakeIs","MaxStakeIs","PlaceRetryLimitReached","IdenticalBetIsProcessing","BetForThisPlayerIsForbidden","PlayerLimitCrossed","PlayerLimitCrossedCps2CanGamble","PlayerLimitCrossedKycSimpleVerified","PlayerLimitCrossedKycVerified","PlayerLimitCrossedPlayerRequiredRequisites","WagerLimitReached","BetTypeIsForbidden","RestrictionsViolated","InternalError","BetRateLimitReached","MarketIsDefective1","MarketIsDefective2","FreebetAlreadyUsed","FreebetExpired","FreebetInvalidStatus","FreebetNotFound","FreebetNotApplicableContext","BETSLIP_ODD_UPDATE_STRATEGY","OddUpdateStatus","alwaysAsk","OddAcceptStrategy","DEVIATION_ALLOWED","acceptHigher","GREATER_ALLOWED","acceptAll","ALWAYS_ALLOWED","handleDeleteBetslipBet","chosenBetslipBetId","nextChosenBetslipBetId","updateRestrictions","getRestrictions","makeAction","method","meta","isApiCall","data","handleSetInitialBetslip","SUCCESS","handleUpdateBet","bets","betFromEntities","values","betIdFromEntities","currBetslipOdd","nextFixedCoef","betslipRestrictionId","has","nextBetslipRestrictions","stateRestrictions","prevMaxBetRestriction","push","nextBetslipRestriction","handleCreateBetsRequest_1","handleCreateBetsSuccess_1","handleCreateBetsFail_1","handleUpdateBet_1","handleDeleteBetslipBet_1","handleSetInitialBetslip_1","handleAdoptUnaffectedBetslipOdds_1","handleAddBetslipBet_1","handleUpdateBetslipOddsByBet_1","UPDATE_BET","async","BetslipStateRecord","oddUpdateStatus","defaultBetslipBet","clear","combinationNumber","nextSystemSize","systemSize","includes","getBetslipOddId","createBetslipOdd","add","stake","singleStake","missingMatchIds_1","missingMatchIds","odds_1","betslipOdds_1","nextBetslipOdds_1","nextBetslipBets_1","baseGt","other","handleRehydrate","rehydrationState","betslipBetsFromLocalStorage","betslipOddsFromLocalStorage","initialBetslipBetFromLocalStorage","modeFromLocalStorage","nextMode","getNextModeBySize","checkIsMaxBetError","checkIsCanGetRestrictions","getRestrictionsSelection","getExpressRestrictionsArgs","getBetSystemSizes","getBettingOptions","getIdsFromBetslipOddPath","getIdsFromOddId","oddIdPath","String","providerId","split","betType","selections","selection","systemSizes","selectionsCount","toArray","isAuthorized","API","RestrictionType","max_bet","maxBetRestriction","isCollection","toSet","ids","isString","Set","joinExistedIdPath","_i","checkIsIdsExisted","every","currOddId","sportEventId","restrictionMarketId","restrictionOddId","baseLt","Restrictions","handleBetslipModuleLoad","betslipModule","BetslipTimeManager","key","whitelist","expireAfter","stateReconciler","inboundState","reducedState","rehydratedState","rehydrateTime","Date","now","handleBet","isDebugEnabled","betOverride","localStorage","getItem","JSON","parse","moduleLocator","RestrictionsContext","dispatchRestrictions","appServiceLocator","normalizeEntity","selectBetslipOdds","betslipOddsRef","current","subscription","subscribe","onUpdateBet","newRestrictions","unsubscribe","children","restrictionsCtx","Provider","selectChosenBetslipBet","selectBetsSize","betsSize","useBetslipBetCount","attention","defaultMessage","inactive","inProcessingMobile","inProcessing","completedMobile","completed","updatesSettingsTitle","notificationSettingsTitle","updatesSettingsDescription","acceptAllQuestion","deleteAllBetslipOdds","oddsUpdates","minimize","freeBet","deleteOdd","betPerOneGroup","freeBetRow","combo","selectCombinations","combination","openCombination","totalOddExtraSmall","signInBet","placeBetError","maxButton","acceptButton","declineButton","skipButton","oddsStrategyHelpInfo","oddsChanged","coefsHaveChanged","errorMaxSystem","errorMaxStake","betslipOddsHasConflicts","limitIsExceeded","insufficientFunds","stakeExceedsMaxBet","verifiedPlayerLimitCrossed","betslipRejected","responseTimedOut","playerIpThisIsNotAValidIpAddress","authCredentialsExpired","authSessionUnknown","betOnDifferentProviders","betLimitExceeded","bettingIsSuspended","internalErrorInvalidMatchStatus","internalErrorInvalidMarketStatus","internalErrorInvalidOddStatus","internalErrorInvalidOddsStatus","stakeMinimalStakeIs","playerLimitCrossed","playerLimitCrossedDefault","internalError","placeRetryLimitReached","identicalBetIsProcessing","betIsForbidden","betTypeIsForbidden","betAmountRestrictionCrossed","betInterval","selectionValue","sportEventStatus","sportEventExistence","marketStatus","marketExistence","marketDefective","oddStatus","oddExistence","playerRequiredRequisites","gamblerBlocked","betRateLimitReached","marketIsDefective","freebetAlreadyUsed","freebetExpired","freebetInvalidStatus","freebetNotFound","freebetNotApplicableContext","deKycDeposit","refillBalanceTitle","refillBalanceMessage","refill","placeBetStake","glyph","warning","handleClick","handleSubmit","handleCancel","title","subTitle","message","cancelTextBtn","submitTextBtn","subTextBtn","iconMessage","balance","isStakeBtn","icon","onClick","DELETE_BETSLIP_ODD_DELAY","DELETE_BETSLIP_ODD_DELAY_MOB","RESTRICTION_BLACK_LIST","bet_delay","selection_value","sport_event_status","sport_event_bet_stop","market_status","odd_status","not_enough_balance","RESTRICTION_BLACKLIST_BY_BETSLIP_STATUS","ODDS_CHANGE_DECLINE_REASONS","NOT_ENOUGH_BALANCE_REASON_LIST","GROUP_OF_ODDS_CLASS","PART_OF_NOT_ENOUGH_DOCS_ERROR","INPUT_VARIANT_COUNT","DEFAULT_VARIANT_POSITION","selectBets","selectBetslipOddsByChosenBetslipBet","getStatus","selectIsOddsChangeModalShown","ui","setOddsChangeModalShown","isOddsChangeModalShown","hasOddsChangeError","some","declineReason","hasOddChangeRestriction","declineContext","declineContextItem","Boolean","isErrorBetslip","dispatch","isOpen","setOpen","handleSkip","isModalOpen","selectOdds","useDeepMemo","selectBetslipBetWithStatus","varsAndArgs","varsAndArgsMemo","isCanGetRestrictions","makeRequest","selectArgsAndVars","memo","changeBetslipOddStake","changeBetslipBetStake","useChangeStake","propsRef","betslipOddIdsToExclude","filterNot","selectBaseBetslipOddIdsToExclude","selectFirstBetslipOdd","first","selectBetByFirstBetslipOdd","makeSelectIsFreebet","freebetModule","selectBetslipFreebets","betslipFreebets","betslipFreebetId","betslipFreebet","activeFreebetId","selectBetslipBetTotals","convertViewMaxStake","getErrorMsgByResponse","betslipBetWithStatus","totals","isFreebetSelected","errorMsgs","formatMessage","finalTotalStake","isMinStakeError","isMaxStakeError","isMaxLessMinStakeError","isMobile","getInstance","isDeviceMobile","minStakeError","unshift","maxStakeError","host","window","location","createContext","validateStake","maxValue","nextValue","int","fraction","replace","test","getRestrictionMessage","descriptor","bet_type","bet_interval","timeToWait","sport_event_existence","market_existence","market_defective","odd_existence","getRestrictionBlackList","getPlaceBetMeta","features","featureFlags","entries","name","getAnalyticOddsInfo","withClear","time","timestamp","stringify","selectConflictBetslipOddIds","selectActiveBetslipOddIdsByBetslipBet","selectMinStake","_state","selectUnaffectedBetslipOddIds","activeBetslipOddIds","minBet","selectIsAnyOddHaveNotEnoughBalance","makeSelectProps","restrictionsModule","selectIsMinMaxBetError","getRestrictionsAndCheckMaxStake","makeGetRestrictionsAndCheckMaxStake","SYSTEM","EXPRESS","makeSelectIsMinMaxBetError","restrictionsBet","restrictionTypes","blacklist","makeSelectIsAnyOddHaveError","selectExtendedUnaffectedBetslipOddIds","betslipOddRestriction","blackList","makeSelectUnaffectedBetslipOddIds","conflictBetslipOddIds","isMinMaxBetError","isAnyOddHaveError","isAnyOddHaveNotEnoughBalance","activeBetslipOddIdsByBetslipBet","isFreebetActive","totalStake","placeBetCallback","selectProps","eventType","Redirect","dispatchRedirectBettingEvent","isRedirectEventAvailable","HandleNotEnoughBalance","dispatchNotEnoughBalanceBettingEvent","isNotEnoughBalanceEventAvailable","isDisabled","equals","isAllBetslipOddsUnaffected","size","checkIsDisabled","isBetNotEditable","isRefillModal","isActive","list","BetslipRefillBalanceModal","isNeedDeposit","placeBetHandler","stakeMode","StakeMode","total","href","onKeyDown","e","authHandler","destination","Login","link","shouldAddMaxBet","BetslipStakeSuggesterByCurrency","StakeSuggesterAlgorithm","BY_CURRENCY_2","BY_CURRENCY","BY_MAX_BET","bVariants","betVariants","useSetDefaultStake","isLoaded","lastBetSum","isFreebet","changeStake","isStakeGreaterThanMaxBet","hasLastBet","firstBetslipOddId","setDefaultStakeRef","lastOrMax","defaultSuggest","selectStake","TotalType","changeValue","useBetslipStakeInput","isInputFocused","setIsInputFocused","onFocus","onBlur","setStake","currValue","currentTarget","Number","stakes","onChange","idx","isSelected","messages","resultMsgs","subMsgs","className","item","msg","msgIdx","styleName","placeBtnMessage","deposit","freebet","placeBet","toFixed","debug","maxPotentialWin","getCurrency","totalPotentialWin","totalOdd","withPlus","isExceededLimits","totalWin","selectOddFormat","oddFormat","changeStakeHandler","toggleFreeBetHandler","amount","formattedTotalOdd","isProcessing","isSuccess","isSuspended","isDecimal","OddFormat","Decimal","toggleFreebetCallback","isFreebetInProcess","formatTotal","mappingMsg","totalType","suffix","Fragment","button","withPure","withPropsValidation","toggleSystemCombination","handleSelect","render","isChosen","betslipOddsSize","checked","Component","mapDispatchToProps","viewInfo","combinations","height","closeBtn","Wr","style","index","getNumberCombinations","numberCombinations","finalTotalWin","maxStakeForInput","setIsOpen","toggle","open","selectBetslipOddIdFromProps","selectBetslipOdd","varsMemo","argsMemo","selectSelection","format","startTime","isLive","convertedTitle","date","oddName","marketName","glyphMapping","autorenew","chevron","check","iconTitleMapping","clickHandler","iconGlyph","iconTitle","arrow","compareStatus","component","isStatic","Equal","isIncreased","Greater","isDecreased","Smaller","increased","decreased","selectCachedBet","checkIsBetslipOddActive","deleteBetslipOdd","selectIsBetslipOddConflict","selectRestrictions","betslipStatus","restrictionErrors","isBetslipOddConflict","getRestrictionMessages","isLast","market","match","isEditable","hasErrorStatus","disabled","betStop","isSingle","oddValue","isActiveOdd","handleDeleteBetslipOdd","clickOddIconHandler","isLocked","oddValueOrTicketCoef","getErrorMsgsAndStatus","errorMessages","hasError","getErrorsFromStakeValue","makeMatchSelector","makeMarketSelector","selectOdd","selectMarketIdFromProps","selectMatch","propsToPick","selectMarket","selectMarketId","lock","Odd","isFirst","isLiveMatch","isTicket","isShowIcon","validOdd","lastBetslipOddId","last","betslipOddIdsGroup","withCustomScrollbars","Wrapper","groupSize","groupBetslipOddIds","isLastGroup","tabs","handleChangeMode","disabledModes","systemPrefix","handleChooseTab","tab","dataset","attrTab","isSystem","data-tab","changeBetslipMode","entrySeq","groupBy","isFooterDisabled","systemSizeTitle","isOpened","join","validProps","isChecked","label","changeOddUpdateStatus","activeOddUpdateStatus","hasOpenedPopup","setHasOpenedPopup","closeEvents","Observable","fromEvent","document","togglePopup","transitionStyles","entering","opacity","entered","exiting","exited","in","timeout","enter","exit","unmountOnExit","appear","stateTransition","closeSidebar","selectOddUpdateStatus","betslipBetsSize","handlerChoseBetslipBetId","handleDeleteBetslipOdds","event","stopPropagation","changeOddUpdateStatusHandle","successTitle","choseBetslipBetId","deleteBetslipOdds","deleteTitle","betCountTitle","bettingSlipBetTitle","isEmpty","isInitial","isError","markTarget","OddsUpdates","makeSelectBetslipBet","seIsModalOpen","actualBalance","getBalance","res","OpenDeposit","dispatchBettingEvent","isEventAvailable","missingBalance","setTimeout","handleRefillBalance","currencySymbol","selectBetslipBetIds","selectBetslipBets","selectInitialBetslipBet","deleteBetslipBet","selectInitialBetslipBetId","selectOutdatedBetslipBetIds","selectActiveBetslipBetIds","betslipBetIds","outdatedBetslipBetIds","initialBetslipBetId","lastBetslipBetId","isSolo","solo","splitMarketPath","selectBetslipOddIds","selectGroupedMarketIdsByMatchId","groupedMarketIdsByMatchId","SubscribeOrigin","marketIds","mId","isTopMarkets","withMarketsCount","origin","BetSlipList","batch","selectOddsStatisticView","selectStatisticPercentsByMarket","selectStatisticPercentsByMatch","addBetslipOdd","selectOddButtonView","oddButtonView","oddsStatisticView","statisticView","show","selectStatistic","OddStatisticView","MATCH","makeStatisticSelector","statisticPercent","isEditableBetslip","recipientBetslipBetId","handleAddBetslipOdd","handleToggleOdd","isShowStatistic","OddHistory","OddContainer","makeOddContainerFor","showResult","withTitle","modifyOddTitle","showHistory","onMouseEnter","onMouseLeave","ref","toggleBetslipOdd","fRef","isPageDisabled","modifiers","enabled","placement","arrowProps","stubNode","OddButtonContainer","changeSidebarView","openSidebar","selectIsSidebarOpen","isHidden","isHiddenRef","prevCount","goToBetslip","sidebarView","bettingSlip","toggleIsOpen","initialBetslipBet","QuickBetslip","getFiltersFromLocation","splitOddPath","getHistory","idPathDivider","storeNormalizedEntities","selectActiveOddIds","activeOddIds","isRequested","setIsRequested","restFilters","history","search","hash","oddIds","replaceAll","setRestoreParams","memActiveOddIds","activeMode","memVariables","sportEventsIds","Array","marketStatuses","normalized","selectSyncBetslipVariables","betOdds","oddPaths","bId","path","TotalOdd","deleteBetslipOddDelay","getMissingMatches","selectBetslipOddIdsWithoutEntities","selectSidebarView","updateBetEpic$","actions$","store","ofType","delay","mergeMap","incomeBetId","keys","appState","getState","betslipOddIdsToDelete","warn","bBetId","betConfirmEpic$","empty","currencyCode","BetStatus","ACCEPTED","getBettingAPI","bettingEvents$","BetConfirm","currency","HandleNotEnoughDocs","addOddEpic$","AddOdd","getMissingMatches$","action$","switchMap","of","state$","incomeOddId","updateManagerOnBetslipOddAdd$","clearManagerOnBetslipOddDelete$","sendAnalyticsOnPlaceBet$","eventLabel","eventAction","PlaceBet","DeclineBet","fieldsObject","eventCategory","sendAnalyticsOnBetResult$","currentEventAction","AcceptedBet","pathname","placeUrl","category","PlaceOdd","selectBetslipBetId","pickedEpics","components","selectBetslipOddIdsWithEntities","selectConflictedMatchesIds","selectBetslipOddsWithOddRatioByBetslipBet","makeSelectCombinationView","selectBetslipOddsByBetslipBetId","makeSelectBetslipOdds","selectChosenBetslipBetId","selectCombinationFromProps","selectCombinationNumberFromProps","selectBetslip","debug_1","combine","getLetterByIndex","checkIsOddActiveByEntities","selectMatches","selectMarkets","selectOddWithAvailability","debugPath","currSelectBetslipBet","toOrderedMap","betslipOddIdsList","toList","oddValuePerCombination","letters","indexOf","getStakePerCombination","betslipOddsWithOddRatio","oddRatio","getSingleTotals","getExpressTotals","getSystemTotals","chosenBetslipBet","chosenBetslipOdds","emptyView","matches","tournament","group","SportEventType","OUTRIGHT","conflictedMatchesIds","conflictsMap","entityId","markets","hasMatch","hasMarket","hasOdd","betslipOddIdsWithEntities","OrderedSet","baseExtremum","identity","max","array","updateBetslipOddsByBet","setInitialBetslip","createBet","addBetslipBet","adoptionUnaffectedBetslipOdds","selectors_1","makeGetMissingMatches","skipBatching","inputUnaffectedBetslipOddIds","oddAcceptStrategy","unaffectedBetslipOddIds_1","isAffected","newBet","composeBet","newBets","newBets_1","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","adopt","__generator","body","f","y","g","sent","trys","ops","verb","Symbol","iterator","op","TypeError","pop","handleAction","actions_1","betsInStore","betInStore","usePollingMinStake","useSuggests_1","getMinBet","convertBetslipOddToMaxBetOddType","convertNewBetsToMaxBetOddTypes","getAvailableStakes","getErrorMsg","expireBetslip","outboundExpireBetslipTransform","inboundExpireBetslipTransform","createTransformDebug","outboundTransform","inboundTransform","redux_persist_1","handleRehydrate_1","isArgsImmutable","apiClient","prevMinBet","extractStatusFromBetslipOdd","statuses","betslipOdds_2","outboundState","oddPathId","isIncreasing","nextSize","firstBetslipOddIds","lastBetslipOddIds","createTransform","hourLater","expireAt","expirationDate","maxStakeNumber","isNaN","Math","floor","curr","predefinedBetslipOdds","findLast","singleError","errorMessageId","_msg","partOfErrorCode","text","messageId","parts","range","availableStakes","currentPart","nextStake","isOneBetslipOdd","betslipOddWithOddRatio","betslipOddsCount","combinedBetslipOddsWithOddRatio","request","response","syncSyncGamblerSettings","syncOddUpdateStrategyGamblerSettings","refetchStake","changeMode","removePlacedBetslipOdds","setEditingStatus","Observable_1","gambler_settings_1","updateBet","sentryHub","services","makeSyncGamblerSettings","changeGamblerSetting","createStructuredSelector","race","timer","take","val","withScope","scope","setTag","captureMessage","promise","input","fromPromise","__extends","d","b","__","constructor","isArray_1","ArrayObservable_1","OuterSubscriber_1","subscribeToResult_1","observables","isArray","ArrayObservable","lift","RaceOperator","subscriber","source","RaceSubscriber","_super","hasFirst","subscriptions","_next","observable","_complete","len","complete","subscribeToResult","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","remove","OuterSubscriber","Subject_1","getPollerManager","poller","counter","isFetched","subject$","Subject","getIntervalObserve","setMinStake","reselect","isStringOrNumber","FlatObjectCache","_cache","_proto","selectorFn","isValidCacheKey","cacheKey","validateCacheSize","cacheSize","Error","isInteger","FifoObjectCache","_temp","_cacheOrdering","_cacheSize","earliest","splice","LruObjectCache","_registerCacheHit","_deleteCacheHit","FlatMapCache","Map","FifoMapCache","LruMapCache","defaultCacheCreator","defaultCacheKeyValidator","createCachedSelector","_len","funcs","_key","resolver","options","recomputations","resultFunc","dependencies","resultFuncWithRecomputations","cache","cacheObject","selectorCreator","selector","cacheResponse","getMatchingSelector","removeMatchingSelector","clearCache","resetRecomputations","FlatCacheObject","FifoCacheObject","LruCacheObject","handleCreateBetsSuccess","isSymbol","iteratee","comparator","computed","race_1"],"mappings":"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","file":"betslip-module-3f074250.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"expressPart__container___3i4u7\"};","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar convertStatus = core_1.default.utils.convertBetStatus;\nfunction handleUpdateBetslipOddsByBet(state, action) {\n var _a = action.payload, betslipBetId = _a.betslipBetId, betslipOddIdsFromArgs = _a.betslipOddIds, bet = _a.bet;\n var nextBetslipOdds = state.betslipOdds, nextBetslipBets = state.betslipBets;\n var betslipBet = nextBetslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var nextBetslipOddIds = betslipBet.betslipOddIds;\n var betId = bet.id, status = bet.status;\n var nextStatus = convertStatus(status);\n betslipOddIdsFromArgs.forEach(function (betslipOddId) {\n var betslipOdd = nextBetslipOdds.get(betslipOddId);\n if (!betslipOdd) {\n nextBetslipOddIds = nextBetslipOddIds.delete(betslipOddId);\n }\n else {\n var nextBetslipOdd = __assign(__assign({}, betslipOdd), { betId: betId, singleStatus: nextStatus });\n nextBetslipOdds = nextBetslipOdds.set(nextBetslipOdd.id, nextBetslipOdd);\n }\n });\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n nextBetslipBets = nextBetslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state\n .set('betslipOdds', nextBetslipOdds)\n .set('betslipBets', nextBetslipBets);\n}\nexports.default = handleUpdateBetslipOddsByBet;\n//# sourceMappingURL=handleUpdateBetslipOddsByBet.js.map","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"warning_c76ce\",\n \"use\": \"warning_c76ce-usage\",\n \"viewBox\": \"0 0 16 16\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"systemPart__container___2T7uY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"combinations__title___2u-oZ\",\"container\":\"combinations__container___27H-M\",\"error\":\"combinations__error___1wflJ\"};","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar joinIdPath = core_1.default.utils.joinIdPath;\nfunction handleCreateBetsRequest(state, action) {\n var _a = action.payload, args = _a.args, variables = _a.variables;\n if (!args)\n return state;\n var betslipBetId = args.betslipBetId;\n var betslipBets = state.betslipBets, betslipOdds = state.betslipOdds;\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var nextBetslipOdds = betslipOdds;\n var nextBetslipOddIds = betslipBet.betslipOddIds;\n var odds = variables.odds;\n odds.forEach(function (odd) {\n var matchId = odd.matchId, marketId = odd.marketId, oddId = odd.oddId, ratio = odd.ratio;\n var betslipOddPath = joinIdPath(matchId, marketId, oddId, betslipBetId);\n var betslipOdd = betslipOdds.get(betslipOddPath);\n if (!betslipOdd) {\n nextBetslipOddIds = nextBetslipOddIds.delete(betslipOddPath);\n }\n else {\n var nextBetslipOdd = __assign(__assign({}, betslipOdd), { singleStatus: core_1.App.BetslipStatus.PROCESSING, fixedCoef: ratio });\n nextBetslipOdds = nextBetslipOdds.set(nextBetslipOdd.id, nextBetslipOdd);\n }\n });\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state\n .set('betslipBets', nextBetslipBets)\n .set('betslipOdds', nextBetslipOdds);\n}\nexports.default = handleCreateBetsRequest;\n//# sourceMappingURL=handleCreateBetsRequest.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Tabs__container___292hf\",\"item\":\"Tabs__item___1wtFU\",\"is-active\":\"Tabs__is-active___TOQUc\",\"is-disabled\":\"Tabs__is-disabled___1vPmX\",\"prefix\":\"Tabs__prefix___3oQOA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betslipStakeInput__container___2370g\",\"list\":\"betslipStakeInput__list___txQE6\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nfunction handleAddBetslipBet(state) {\n var newBetslipBet = utils_1.createBetslipBet();\n var nextBetslipBets = state.betslipBets.set(newBetslipBet.id, newBetslipBet);\n return state.set('betslipBets', nextBetslipBets);\n}\nexports.default = handleAddBetslipBet;\n//# sourceMappingURL=handleAddBetslipBet.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@gin-betting/core\");\nfunction handleCreateBetsFail(state, action) {\n var args = action.payload.args;\n if (!args) {\n return state;\n }\n var betslipBetId = args.betslipBetId, betslipOddIdsFromArgs = args.betslipOddIds;\n var nextBetslipOdds = state.betslipOdds, nextBetslipBets = state.betslipBets;\n var betslipBet = nextBetslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var nextBetslipOddIds = betslipBet.betslipOddIds;\n betslipOddIdsFromArgs.forEach(function (betslipOddId) {\n var betslipOdd = nextBetslipOdds.get(betslipOddId);\n if (!betslipOdd) {\n nextBetslipOddIds = nextBetslipOddIds.delete(betslipOddId);\n }\n else {\n var nextBetslipOdd = __assign(__assign({}, betslipOdd), { singleStatus: core_1.App.BetslipStatus.ERROR });\n nextBetslipOdds = nextBetslipOdds.set(nextBetslipOdd.id, nextBetslipOdd);\n }\n });\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n nextBetslipBets = nextBetslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state\n .set('betslipOdds', nextBetslipOdds)\n .set('betslipBets', nextBetslipBets);\n}\nexports.default = handleCreateBetsFail;\n//# sourceMappingURL=handleCreateBetsFail.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Betslip = void 0;\nvar types = __importStar(require(\"./types\"));\nexports.Betslip = types;\nvar constants = __importStar(require(\"./constants\"));\nvar actions = __importStar(require(\"./actions\"));\nvar selectors = __importStar(require(\"./selectors\"));\nvar utils = __importStar(require(\"./utils\"));\nvar epics = __importStar(require(\"./epics\"));\nvar hooks = __importStar(require(\"./hooks\"));\nvar reducer_1 = __importDefault(require(\"./reducer\"));\nvar middleware_1 = __importDefault(require(\"./middleware\"));\nvar betslip = {\n utils: utils,\n actions: actions,\n constants: constants,\n selectors: selectors,\n epics: epics,\n hooks: hooks,\n reducer: reducer_1.default,\n middleware: middleware_1.default,\n};\nexports.default = betslip;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.initialState = exports.UPDATE_RESTRICTIONS = exports.GET_RESTRICTION_FAIL = exports.GET_RESTRICTION_SUCCESS = exports.GET_RESTRICTION_REQUEST = exports.NAME = void 0;\nvar immutable_1 = require(\"immutable\");\nvar core_1 = require(\"@gin-betting/core\");\nexports.NAME = 'restrictions';\nexports.GET_RESTRICTION_REQUEST = exports.NAME + \"/GET_RESTRICTION:REQUEST\";\nexports.GET_RESTRICTION_SUCCESS = exports.NAME + \"/GET_RESTRICTION:SUCCESS\";\nexports.GET_RESTRICTION_FAIL = exports.NAME + \"/GET_RESTRICTION:FAIL\";\nexports.UPDATE_RESTRICTIONS = exports.NAME + \"/UPDATE_RESTRICTIONS\";\nvar RestrictionsStateRecord = immutable_1.Record({\n fetchStatus: core_1.App.FetchStatus.INITIAL,\n betslipRestrictions: immutable_1.OrderedMap(),\n}, 'RestrictionsState');\nexports.initialState = new RestrictionsStateRecord();\n//# sourceMappingURL=constants.js.map","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"close-video_4d6db\",\n \"use\": \"close-video_4d6db-usage\",\n \"viewBox\": \"0 0 20 20\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar immutable_1 = require(\"immutable\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar utils_1 = require(\"../utils\");\nvar _a = core_1.default.utils, replaceBetslipBetIdInBetslipOddId = _a.replaceBetslipBetIdInBetslipOddId, getIdsFromBetslipOddId = _a.getIdsFromBetslipOddId;\nfunction handleAdoptUnaffectedBetslipOdds(state, action) {\n var unaffectedBetslipOddIds = action.payload.unaffectedBetslipOddIds;\n var firstUnaffectedBetslipOddId = unaffectedBetslipOddIds[0];\n if (!firstUnaffectedBetslipOddId)\n return state;\n var betslipBetId = getIdsFromBetslipOddId(firstUnaffectedBetslipOddId).betslipBetId;\n if (!betslipBetId)\n return state;\n var nextBetslipBets = state.betslipBets, nextBetslipOdds = state.betslipOdds;\n var initialBetslipBet = utils_1.getInitialBetslipBet({\n betslipBets: nextBetslipBets.delete(betslipBetId),\n betslipOdds: nextBetslipOdds,\n });\n var adoptiveBetslipBet = initialBetslipBet || utils_1.createBetslipBet();\n var adoptiveBetslipOdds = unaffectedBetslipOddIds.reduce(function (acc, betslipOddId) {\n var betslipOdd = nextBetslipOdds.get(betslipOddId);\n if (!betslipOdd)\n return acc;\n var newBetslipOddId = replaceBetslipBetIdInBetslipOddId({\n betslipOddId: betslipOddId,\n newBetslipBetId: adoptiveBetslipBet.id,\n });\n var newBetslipOdd = __assign(__assign({}, betslipOdd), { singleStatus: core_1.App.BetslipStatus.INITIAL, id: newBetslipOddId });\n return acc.set(newBetslipOdd.id, newBetslipOdd);\n }, immutable_1.OrderedMap());\n var betslipBet = nextBetslipBets.get(betslipBetId);\n if (betslipBet) {\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: betslipBet.betslipOddIds.subtract(unaffectedBetslipOddIds) });\n nextBetslipBets = nextBetslipBets.set(nextBetslipBet.id, nextBetslipBet);\n }\n var nextAdoptiveBetslipBet = __assign(__assign({}, adoptiveBetslipBet), { betslipOddIds: adoptiveBetslipOdds.keySeq().toOrderedSet() });\n nextBetslipBets = nextBetslipBets.set(adoptiveBetslipBet.id, nextAdoptiveBetslipBet);\n nextBetslipOdds = nextBetslipOdds\n .deleteAll(unaffectedBetslipOddIds)\n .merge(adoptiveBetslipOdds);\n return state\n .set('betslipBets', nextBetslipBets)\n .set('betslipOdds', nextBetslipOdds);\n}\nexports.default = handleAdoptUnaffectedBetslipOdds;\n//# sourceMappingURL=handleAdoptUnaffectedBetslipOdds.js.map","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar lodash_1 = require(\"lodash\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar usePollingMinStake_1 = __importDefault(require(\"./usePollingMinStake\"));\nvar DEFAULT_BET_VARIANTS = [3, 5, 10, 20, 50, 100];\nfunction useSuggests(_a) {\n var maxStake = _a.maxStake, count = _a.count, skip = _a.skip, algorithm = _a.algorithm;\n var minStake = usePollingMinStake_1.default().minStake;\n var _b = react_1.useState(null), suggests = _b[0], setSuggests = _b[1];\n var maxBet = maxStake ? +maxStake : constants_1.DEFAULT_MAX_STAKE;\n react_1.useEffect(function () {\n if (skip) {\n return;\n }\n if (maxBet === constants_1.DEFAULT_MAX_STAKE) {\n setSuggests(null);\n return;\n }\n if (!minStake)\n return;\n utils_1.getSuggests({\n maxStake: \"\" + maxBet,\n minStake: \"\" + minStake,\n count: count,\n algorithm: algorithm,\n })\n .then(function (s) { return setSuggests(s.map(function (i) { return lodash_1.toNumber(i); })); })\n .catch(function (err) {\n console.error(err);\n });\n }, [maxBet, skip, minStake, algorithm, count]);\n var getSortedBetVariants = react_1.useCallback(function () {\n return __spreadArray(__spreadArray([], lodash_1.sortBy(DEFAULT_BET_VARIANTS.filter(function (i) { return i < +maxBet; })).slice(0, count - 1)), [\n +maxBet,\n ]);\n }, [maxBet, count]);\n var betVariants = suggests || getSortedBetVariants();\n return {\n suggests: betVariants,\n isDefaultSuggests: !suggests,\n };\n}\nexports.default = useSuggests;\n//# sourceMappingURL=useSuggests.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"checkListItem__container___2swk_\",\"checked\":\"checkListItem__checked___mUxuX\",\"label\":\"checkListItem__label___2HSIU\",\"radio-wrapper\":\"checkListItem__radio-wrapper___1ZLV6\",\"radio\":\"checkListItem__radio___iU__v\",\"is-active\":\"checkListItem__is-active___2RDH7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"totalOdd__container___3HsSR\"};","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.selectLowerMaxBetBetslipBet = exports.selectIsAnyOddHaveError = exports.selectFilteredRestrictionsByOddId = exports.selectRestrictionsByBetslipRestrictionsId = exports.makeSelectRestrictionByCondition = exports.selectRestrictionsByBetslipBet = exports.selectBetslipRestrictions = exports.selectBetslipRestrictionsIdFromProps = exports.selectRestrictionsState = void 0;\nvar re_reselect_1 = __importDefault(require(\"re-reselect\"));\nvar reselect_1 = require(\"reselect\");\nvar lodash_1 = require(\"lodash\");\nvar betslip_1 = __importDefault(require(\"@gin-betting/betslip\"));\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar utils_1 = require(\"./utils\");\nvar _a = betslip_1.default.selectors, selectBetslipBet = _a.selectBetslipBet, selectBetslipBetIdFromProps = _a.selectBetslipBetIdFromProps;\nvar selectOddIdFromProps = core_1.default.entities.selectors.selectOddIdFromProps;\nvar selectRestrictionsState = function (_, props) {\n return props.restrictionsState;\n};\nexports.selectRestrictionsState = selectRestrictionsState;\nvar selectBetslipRestrictionsIdFromProps = function (_, _a) {\n var betslipRestrictionsId = _a.betslipRestrictionsId;\n return betslipRestrictionsId;\n};\nexports.selectBetslipRestrictionsIdFromProps = selectBetslipRestrictionsIdFromProps;\nexports.selectBetslipRestrictions = reselect_1.createSelector(exports.selectRestrictionsState, function (props) { return props.betslipRestrictions; });\nexports.selectRestrictionsByBetslipBet = re_reselect_1.default(exports.selectBetslipRestrictions, selectBetslipBet, function (betslipRestrictions, betslipBet) {\n var _a;\n if (!betslipBet)\n return [];\n var betslipOddIds = betslipBet.betslipOddIds, mode = betslipBet.mode;\n if (mode === core_1.GQL.BetType.SINGLE) {\n return betslipOddIds.reduce(function (acc, betslipOddId) {\n var betslipRestrictionsId = utils_1.getBetslipRestrictionId(betslipOddId);\n var restrictions = betslipRestrictions.get(betslipRestrictionsId);\n if (!restrictions)\n return acc;\n return acc.concat(restrictions);\n }, []);\n }\n var betslipRestrictionsId = utils_1.getBetslipRestrictionId(betslipOddIds);\n return (_a = betslipRestrictions.get(betslipRestrictionsId)) !== null && _a !== void 0 ? _a : [];\n})(selectBetslipBetIdFromProps);\nvar makeSelectRestrictionByCondition = function (restrictionType) {\n return reselect_1.createSelector(exports.selectBetslipRestrictions, exports.selectBetslipRestrictionsIdFromProps, function (betslipRestrictions, betslipRestrictionsId) {\n var betslipRestriction = betslipRestrictions.get(betslipRestrictionsId);\n return betslipRestriction === null || betslipRestriction === void 0 ? void 0 : betslipRestriction.find(function (r) { return restrictionType === r.type; });\n });\n};\nexports.makeSelectRestrictionByCondition = makeSelectRestrictionByCondition;\nexports.selectRestrictionsByBetslipRestrictionsId = reselect_1.createSelector(exports.selectBetslipRestrictions, exports.selectBetslipRestrictionsIdFromProps, function (betslipRestrictions, betslipRestrictionsId) {\n var betslipRestriction = betslipRestrictions.get(betslipRestrictionsId);\n return betslipRestriction !== null && betslipRestriction !== void 0 ? betslipRestriction : [];\n});\nexports.selectFilteredRestrictionsByOddId = reselect_1.createSelector(exports.selectRestrictionsByBetslipRestrictionsId, selectOddIdFromProps, function (betslipRestriction, oddIdFromProps) {\n return utils_1.filterRestrictionsByOddId(betslipRestriction, oddIdFromProps);\n});\nexports.selectIsAnyOddHaveError = re_reselect_1.default(exports.selectRestrictionsByBetslipBet, function (restrictions) {\n var simpleRestrictions = utils_1.normalizeRestriction(restrictions).simpleRestrictions;\n return simpleRestrictions.length > 0;\n})(selectBetslipBetIdFromProps);\nexports.selectLowerMaxBetBetslipBet = re_reselect_1.default(exports.selectRestrictionsByBetslipBet, function (restrictions) {\n var _a, _b;\n var maxBetValues = restrictions\n .filter(utils_1.maxBetRestrictionCondition)\n .map(function (restriction) { return restriction.maxBet; });\n return (_b = (_a = lodash_1.min(maxBetValues)) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '';\n})(selectBetslipBetIdFromProps);\n//# sourceMappingURL=selectors.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"odd__container___Tc-j1\",\"body\":\"odd__body___OqDaq\",\"is-locked\":\"odd__is-locked___2ndha\",\"is-ticket\":\"odd__is-ticket___ciFkv\",\"is-error\":\"odd__is-error___Dcow2\",\"is-completed\":\"odd__is-completed___38gvO\",\"round-bottom-border\":\"odd__round-bottom-border___3G-JD\",\"icon-lock\":\"odd__icon-lock___2DUOW\",\"is-first\":\"odd__is-first___1iCKy\",\"is-last\":\"odd__is-last___3djZ2\"};","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar _a, _b;\nvar _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BETSLIP_ODD_STATUSES_TO_PLACE_BET = exports.ODD_ACCEPT_STRATEGIES_MAPPING = exports.BETSLIP_GAMBLER_SETTINGS = exports.KeyPathToReducerProp = exports.BetslipSettingKey = exports.DEFAULT_AVAILABLE_STAKES = exports.DEFAULT_MAX_STAKE = exports.PARTS_OF_ERROR_CODES = exports.errorCodes = exports.ErrorCodes = exports.MIN_EXPRESS_SIZE = exports.ROUND_MAX_STAKE = exports.delayBeforeDeleteBetslipOdd = exports.ADD_BETSLIP_BET = exports.ADOPT_UNAFFECTED_BETSLIP_ODDS = exports.DELETE_BETSLIP_BET = exports.GET_MISSING_MATCHES_SUCCESS = exports.GET_MISSING_MATCHES_REQUEST = exports.CREATE_BETS_FAIL = exports.CREATE_BETS_SUCCESS = exports.CREATE_BETS_REQUEST = exports.UPDATE_BETSLIP_ODDS_BY_BET = exports.SET_INITIAL_BETSLIP = exports.TOGGLE_SYSTEM_COMBINATION = exports.CHANGE_BETSLIP_ODD_STATUS = exports.CHANGE_BETSLIP_BET_STAKE = exports.CHANGE_BETSLIP_ODD_STAKE = exports.DELETE_BETSLIP_ODD = exports.ADD_BETSLIP_ODD = exports.CHANGE_COEF_UPDATES = exports.CHOSE_BETSLIP_BET_ID = exports.DELETE_BETSLIP_ODDS = exports.CHANGE_BET_MODE = exports.NAME = void 0;\nvar core_1 = require(\"@gin-betting/core\");\nexports.NAME = 'betslip';\nexports.CHANGE_BET_MODE = exports.NAME + \"/CHANGE_BET_MODE\";\nexports.DELETE_BETSLIP_ODDS = exports.NAME + \"/DELETE_BETSLIP_ODDS\";\nexports.CHOSE_BETSLIP_BET_ID = exports.NAME + \"/CHOSE_BETSLIP_BET_ID\";\nexports.CHANGE_COEF_UPDATES = exports.NAME + \"/CHANGE_COEF_UPDATES\";\nexports.ADD_BETSLIP_ODD = exports.NAME + \"/ADD_BETSLIP_ODD\";\nexports.DELETE_BETSLIP_ODD = exports.NAME + \"/DELETE_BETSLIP_ODD\";\nexports.CHANGE_BETSLIP_ODD_STAKE = exports.NAME + \"/CHANGE_BETSLIP_ODD_STAKE\";\nexports.CHANGE_BETSLIP_BET_STAKE = exports.NAME + \"/CHANGE_BETSLIP_BET_STAKE\";\nexports.CHANGE_BETSLIP_ODD_STATUS = exports.NAME + \"/CHANGE_BETSLIP_ODD_STATUS\";\nexports.TOGGLE_SYSTEM_COMBINATION = exports.NAME + \"/TOGGLE_SYSTEM_COMBINATION\";\nexports.SET_INITIAL_BETSLIP = exports.NAME + \"/SET_INITIAL_BETSLIP\";\nexports.UPDATE_BETSLIP_ODDS_BY_BET = exports.NAME + \"/UPDATE_BETSLIP_ODDS_BY_BET\";\nexports.CREATE_BETS_REQUEST = exports.NAME + \"/CREATE_BETS:REQUEST\";\nexports.CREATE_BETS_SUCCESS = exports.NAME + \"/CREATE_BETS:SUCCESS\";\nexports.CREATE_BETS_FAIL = exports.NAME + \"/CREATE_BETS:FAIL\";\nexports.GET_MISSING_MATCHES_REQUEST = exports.NAME + \"/GET_MISSING_MATCHES:REQUEST\";\nexports.GET_MISSING_MATCHES_SUCCESS = exports.NAME + \"/GET_MISSING_MATCHES:SUCCESS\";\nexports.DELETE_BETSLIP_BET = exports.NAME + \"/DELETE_BETSLIP_BET\";\nexports.ADOPT_UNAFFECTED_BETSLIP_ODDS = exports.NAME + \"/ADOPT_UNAFFECTED_BETSLIP_ODDS\";\nexports.ADD_BETSLIP_BET = exports.NAME + \"/ADD_BETSLIP_BET\";\nexports.delayBeforeDeleteBetslipOdd = 6000;\nexports.ROUND_MAX_STAKE = 100;\nexports.MIN_EXPRESS_SIZE = 2;\nvar ErrorCodes;\n(function (ErrorCodes) {\n ErrorCodes[\"NotEnoughBalance1\"] = \"Not enough balance\";\n ErrorCodes[\"NotEnoughBalance2\"] = \"not_enough_balance\";\n ErrorCodes[\"StakeExceedsLimit\"] = \"Stake exceeds limit\";\n ErrorCodes[\"StakeIsTooBig\"] = \"STAKE_IS_TOO_BIG\";\n ErrorCodes[\"TicketWasRejected\"] = \"Ticket was rejected\";\n ErrorCodes[\"ResponseTimedOut\"] = \"Response timed out\";\n ErrorCodes[\"PlayerIp\"] = \"[player_ip]: This is not a valid IP address.\";\n ErrorCodes[\"AuthCredentialsExpired\"] = \"auth.credentials.expired\";\n ErrorCodes[\"AuthSessionUnknown\"] = \"auth.session.unknown\";\n ErrorCodes[\"BetOnDifferentProviders\"] = \"Bet on different providers\";\n ErrorCodes[\"MatchLimitExceeded\"] = \"Match limit exceeded\";\n ErrorCodes[\"ApiMatchInBetStopList\"] = \"api_match_in_bet_stop_list\";\n ErrorCodes[\"ApiMatchInBetStopList2\"] = \"SPORT_EVENT_BET_STOPPED\";\n ErrorCodes[\"ApiMatchStatusWrong\"] = \"api_match_status_wrong\";\n ErrorCodes[\"ApiMatchStatusWrong2\"] = \"INVALID_FIXTURE_STATUS\";\n ErrorCodes[\"ApiMarketStatusWrong\"] = \"api_market_status_wrong\";\n ErrorCodes[\"InvalidMarketStatus\"] = \"INVALID_MARKET_STATUS\";\n ErrorCodes[\"ApiOddValueWrong\"] = \"api_odd_value_wrong\";\n ErrorCodes[\"InvalidSelectionValue\"] = \"INVALID_SELECTION_VALUE\";\n ErrorCodes[\"InvalidOddStatus1\"] = \"INVALID_ODD_STATUS\";\n ErrorCodes[\"InvalidOddStatus2\"] = \"oddStatus\";\n ErrorCodes[\"ApiOddStatusWrong\"] = \"api_odd_status_wrong\";\n ErrorCodes[\"MinimalStakeIs\"] = \"[stake]: Minimal stake is: \";\n ErrorCodes[\"MaxStakeIs\"] = \"[stake]: Max stake is: \";\n ErrorCodes[\"PlaceRetryLimitReached\"] = \"place_retry_limit_reached\";\n ErrorCodes[\"IdenticalBetIsProcessing\"] = \"identical_bet_is_processing\";\n ErrorCodes[\"BetForThisPlayerIsForbidden\"] = \"Bet for this player is forbidden.\";\n ErrorCodes[\"PlayerLimitCrossed\"] = \"player_limit_crossed\";\n ErrorCodes[\"PlayerLimitCrossedCps2CanGamble\"] = \"player_limit_crossed : [cps2-can-gamble]\";\n ErrorCodes[\"PlayerLimitCrossedKycSimpleVerified\"] = \"player_limit_crossed : [kyc-simple-verified]\";\n ErrorCodes[\"PlayerLimitCrossedKycVerified\"] = \"player_limit_crossed : [kyc-verified]\";\n ErrorCodes[\"PlayerLimitCrossedPlayerRequiredRequisites\"] = \"player_limit_crossed : [player-required-requisites]\";\n ErrorCodes[\"WagerLimitReached\"] = \"Wager limit you have set has been already reached\";\n ErrorCodes[\"BetTypeIsForbidden\"] = \"BET_TYPE_IS_FORBIDDEN\";\n ErrorCodes[\"RestrictionsViolated\"] = \"restrictions_violated\";\n ErrorCodes[\"InternalError\"] = \"internal_error\";\n ErrorCodes[\"BetRateLimitReached\"] = \"BET_RATE_LIMIT_REACHED\";\n ErrorCodes[\"MarketIsDefective1\"] = \"MARKET_IS_DEFECTIVE\";\n ErrorCodes[\"MarketIsDefective2\"] = \"marketDefective\";\n ErrorCodes[\"FreebetAlreadyUsed\"] = \"already_used\";\n ErrorCodes[\"FreebetExpired\"] = \"freebet_expired\";\n ErrorCodes[\"FreebetInvalidStatus\"] = \"invalid_status\";\n ErrorCodes[\"FreebetNotFound\"] = \"freebet_not_found\";\n ErrorCodes[\"FreebetNotApplicableContext\"] = \"not_applicable_context\";\n})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));\nvar ErrorCodesMapping = /** @class */ (function () {\n function ErrorCodesMapping() {\n this[_c] = 'insufficientFunds';\n this[_d] = 'insufficientFunds';\n this[_e] = 'stakeExceedsMaxBet';\n this[_f] = 'stakeExceedsMaxBet';\n this[_g] = 'betslipRejected';\n this[_h] = 'responseTimedOut';\n this[_j] = 'playerIpThisIsNotAValidIpAddress';\n this[_k] = 'authCredentialsExpired';\n this[_l] = 'authSessionUnknown';\n this[_m] = 'betOnDifferentProviders';\n this[_o] = 'betLimitExceeded';\n this[_p] = 'bettingIsSuspended';\n this[_q] = 'bettingIsSuspended';\n this[_r] = 'internalErrorInvalidMatchStatus';\n this[_s] = 'internalErrorInvalidMatchStatus';\n this[_t] = 'internalErrorInvalidMarketStatus';\n this[_u] = 'internalErrorInvalidMarketStatus';\n this[_v] = 'coefsHaveChanged';\n this[_w] = 'internalErrorInvalidOddsStatus';\n this[_x] = 'internalErrorInvalidOddsStatus';\n this[_y] = 'internalErrorInvalidOddsStatus';\n this[_z] = 'internalErrorInvalidOddsStatus';\n this[_0] = 'stakeMinimalStakeIs';\n this[_1] = 'stakeExceedsMaxBet';\n this[_2] = 'placeRetryLimitReached';\n this[_3] = 'identicalBetIsProcessing';\n this[_4] = 'betIsForbidden';\n this[_5] = 'playerLimitCrossed';\n this[_6] = 'playerLimitCrossed';\n this[_7] = 'verifiedPlayerLimitCrossed';\n this[_8] = 'verifiedPlayerLimitCrossed';\n this[_9] = 'playerRequiredRequisites';\n this[_10] = 'gamblerBlocked';\n this[_11] = 'betTypeIsForbidden';\n this[_12] = 'betAmountRestrictionCrossed';\n this[_13] = 'internalError';\n this[_14] = 'betRateLimitReached';\n this[_15] = 'marketIsDefective';\n this[_16] = 'marketIsDefective';\n this[_17] = 'freebetAlreadyUsed';\n this[_18] = 'freebetExpired';\n this[_19] = 'freebetInvalidStatus';\n this[_20] = 'freebetNotFound';\n this[_21] = 'freebetNotApplicableContext';\n }\n return ErrorCodesMapping;\n}());\n_c = ErrorCodes.NotEnoughBalance1, _d = ErrorCodes.NotEnoughBalance2, _e = ErrorCodes.StakeExceedsLimit, _f = ErrorCodes.StakeIsTooBig, _g = ErrorCodes.TicketWasRejected, _h = ErrorCodes.ResponseTimedOut, _j = ErrorCodes.PlayerIp, _k = ErrorCodes.AuthCredentialsExpired, _l = ErrorCodes.AuthSessionUnknown, _m = ErrorCodes.BetOnDifferentProviders, _o = ErrorCodes.MatchLimitExceeded, _p = ErrorCodes.ApiMatchInBetStopList, _q = ErrorCodes.ApiMatchInBetStopList2, _r = ErrorCodes.ApiMatchStatusWrong, _s = ErrorCodes.ApiMatchStatusWrong2, _t = ErrorCodes.ApiMarketStatusWrong, _u = ErrorCodes.InvalidMarketStatus, _v = ErrorCodes.ApiOddValueWrong, _w = ErrorCodes.InvalidSelectionValue, _x = ErrorCodes.InvalidOddStatus1, _y = ErrorCodes.InvalidOddStatus2, _z = ErrorCodes.ApiOddStatusWrong, _0 = ErrorCodes.MinimalStakeIs, _1 = ErrorCodes.MaxStakeIs, _2 = ErrorCodes.PlaceRetryLimitReached, _3 = ErrorCodes.IdenticalBetIsProcessing, _4 = ErrorCodes.BetForThisPlayerIsForbidden, _5 = ErrorCodes.PlayerLimitCrossed, _6 = ErrorCodes.PlayerLimitCrossedCps2CanGamble, _7 = ErrorCodes.PlayerLimitCrossedKycSimpleVerified, _8 = ErrorCodes.PlayerLimitCrossedKycVerified, _9 = ErrorCodes.PlayerLimitCrossedPlayerRequiredRequisites, _10 = ErrorCodes.WagerLimitReached, _11 = ErrorCodes.BetTypeIsForbidden, _12 = ErrorCodes.RestrictionsViolated, _13 = ErrorCodes.InternalError, _14 = ErrorCodes.BetRateLimitReached, _15 = ErrorCodes.MarketIsDefective1, _16 = ErrorCodes.MarketIsDefective2, _17 = ErrorCodes.FreebetAlreadyUsed, _18 = ErrorCodes.FreebetExpired, _19 = ErrorCodes.FreebetInvalidStatus, _20 = ErrorCodes.FreebetNotFound, _21 = ErrorCodes.FreebetNotApplicableContext;\nexports.errorCodes = new ErrorCodesMapping();\nexports.PARTS_OF_ERROR_CODES = {\n 'Internal Error': 'internalError',\n 'player_limit_crossed : [': 'playerLimitCrossedDefault',\n 'de-kyc-deposit': 'deKycDeposit',\n};\nexports.DEFAULT_MAX_STAKE = 10000;\nexports.DEFAULT_AVAILABLE_STAKES = [\n 100,\n 500,\n 1000,\n 5000,\n exports.DEFAULT_MAX_STAKE,\n];\nvar BetslipSettingKey;\n(function (BetslipSettingKey) {\n BetslipSettingKey[\"BETSLIP_ODD_UPDATE_STRATEGY\"] = \"betslipOddUpdateStrategy\";\n})(BetslipSettingKey = exports.BetslipSettingKey || (exports.BetslipSettingKey = {}));\nvar KeyPathToReducerProp = /** @class */ (function () {\n function KeyPathToReducerProp() {\n this[_22] = 'oddUpdateStatus';\n }\n return KeyPathToReducerProp;\n}());\nexports.KeyPathToReducerProp = KeyPathToReducerProp;\n_22 = BetslipSettingKey.BETSLIP_ODD_UPDATE_STRATEGY;\nexports.BETSLIP_GAMBLER_SETTINGS = (_a = {},\n _a[exports.NAME] = __assign({}, new KeyPathToReducerProp()),\n _a);\nexports.ODD_ACCEPT_STRATEGIES_MAPPING = (_b = {},\n _b[core_1.App.OddUpdateStatus.alwaysAsk] = core_1.GQL.OddAcceptStrategy.DEVIATION_ALLOWED,\n _b[core_1.App.OddUpdateStatus.acceptHigher] = core_1.GQL.OddAcceptStrategy.GREATER_ALLOWED,\n _b[core_1.App.OddUpdateStatus.acceptAll] = core_1.GQL.OddAcceptStrategy.ALWAYS_ALLOWED,\n _b);\nexports.BETSLIP_ODD_STATUSES_TO_PLACE_BET = [\n core_1.App.BetslipStatus.INITIAL,\n core_1.App.BetslipStatus.ERROR,\n];\n//# sourceMappingURL=constants.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"singlePartMob__container___1DPEF\",\"buttons\":\"singlePartMob__buttons___1mh5e\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleDeleteBetslipBet(state, action) {\n var betslipBetId = action.payload.betslipBetId;\n var betslipBets = state.betslipBets, betslipOdds = state.betslipOdds, chosenBetslipBetId = state.chosenBetslipBetId;\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var betslipOddIds = betslipBet.betslipOddIds;\n var nextBetslipOdds = betslipOdds.deleteAll(betslipOddIds);\n var nextBetslipBets = betslipBets.delete(betslipBetId);\n var nextChosenBetslipBetId = betslipBetId === chosenBetslipBetId ? null : chosenBetslipBetId;\n return state\n .set('chosenBetslipBetId', nextChosenBetslipBetId)\n .set('betslipBets', nextBetslipBets)\n .set('betslipOdds', nextBetslipOdds);\n}\nexports.default = handleDeleteBetslipBet;\n//# sourceMappingURL=handleDeleteBetslipBet.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateRestrictions = exports.getRestrictions = void 0;\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar constants_1 = require(\"./constants\");\nvar makeAction = core_1.default.utils.makeAction;\nvar getRestrictions = function (variables, args) {\n return {\n type: constants_1.GET_RESTRICTION_REQUEST,\n payload: {\n method: 'getRestrictions',\n variables: variables,\n args: args,\n },\n meta: {\n isApiCall: true,\n },\n };\n};\nexports.getRestrictions = getRestrictions;\nvar updateRestrictions = function (_a) {\n var restrictions = _a.restrictions, betslipOddIds = _a.betslipOddIds;\n return makeAction(constants_1.UPDATE_RESTRICTIONS, {\n data: { restrictions: restrictions },\n betslipOddIds: betslipOddIds,\n });\n};\nexports.updateRestrictions = updateRestrictions;\n//# sourceMappingURL=actions.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"oddIcon__container___2kp-x\",\"is-completed\":\"oddIcon__is-completed___3Zm4K\",\"is-processing\":\"oddIcon__is-processing___33soD\",\"loading\":\"oddIcon__loading___2LhDv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"error__container___1sQgh\",\"error\":\"error__error___2ewmy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"matchDetails__container___9_1HW\",\"date\":\"matchDetails__date___2jBjx\",\"icon\":\"matchDetails__icon___20xHw\",\"team\":\"matchDetails__team___3Pjta\"};","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@gin-betting/core\");\nfunction handleSetInitialBetslip(state, action) {\n var betslipBetId = action.payload.betslipBetId;\n var nextBetslipBets = state.betslipBets, nextBetslipOdds = state.betslipOdds;\n var betslipBet = nextBetslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var betslipOddIds = betslipBet.betslipOddIds;\n var nextBetslipOddIds = betslipOddIds.filter(function (betslipOddId) {\n var betslipOdd = nextBetslipOdds.get(betslipOddId);\n if (!betslipOdd)\n return false;\n var singleStatus = betslipOdd.singleStatus;\n if (singleStatus === core_1.App.BetslipStatus.SUCCESS) {\n nextBetslipOdds = nextBetslipOdds.delete(betslipOddId);\n return false;\n }\n if (singleStatus !== core_1.App.BetslipStatus.ERROR) {\n return true;\n }\n var nextBetslipOdd = __assign(__assign({}, betslipOdd), { betId: null, fixedCoef: null, singleStatus: core_1.App.BetslipStatus.INITIAL });\n nextBetslipOdds = nextBetslipOdds.set(betslipOddId, nextBetslipOdd);\n return true;\n });\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n nextBetslipBets = nextBetslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state\n .set('betslipBets', nextBetslipBets)\n .set('betslipOdds', nextBetslipOdds);\n}\nexports.default = handleSetInitialBetslip;\n//# sourceMappingURL=handleSetInitialBetslip.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar convertBetStatus = core_1.default.utils.convertBetStatus;\nfunction handleUpdateBet(state, action) {\n var bets = action.payload.entities.bets;\n var betFromEntities = lodash_1.values(bets)[0];\n if (!betFromEntities)\n return state;\n var status = betFromEntities.status, betIdFromEntities = betFromEntities.id;\n var betslipOdds = state.betslipOdds;\n var nextBetslipOdds = betslipOdds.map(function (currBetslipOdd) {\n var betId = currBetslipOdd.betId, fixedCoef = currBetslipOdd.fixedCoef;\n if (betId !== betIdFromEntities)\n return currBetslipOdd;\n var nextStatus = convertBetStatus(status);\n var isError = nextStatus === core_1.App.BetslipStatus.ERROR;\n var nextFixedCoef = isError ? null : fixedCoef;\n return __assign(__assign({}, currBetslipOdd), { singleStatus: nextStatus, fixedCoef: nextFixedCoef });\n });\n return state.set('betslipOdds', nextBetslipOdds);\n}\nexports.default = handleUpdateBet;\n//# sourceMappingURL=handleUpdateBet.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betDetails__container___94zn3\",\"total-win\":\"betDetails__total-win___1ravP\",\"total\":\"betDetails__total___3PQjc\",\"label\":\"betDetails__label___g1Dj4\",\"value\":\"betDetails__value___1Py7H\",\"error\":\"betDetails__error___3izTf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"totalRow__container___2ASSD\",\"row\":\"totalRow__row___26d6k\",\"title\":\"totalRow__title___2_dNk\",\"value\":\"totalRow__value___1Ygme\",\"total-win\":\"totalRow__total-win___3SROH\",\"is-exceeded\":\"totalRow__is-exceeded___12H4h\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\nfunction reducer(state, action) {\n var _a;\n if (state === void 0) { state = constants_1.initialState; }\n switch (action.type) {\n case constants_1.GET_RESTRICTION_REQUEST: {\n var args = action.payload.args;\n if (!args) {\n return state;\n }\n var betslipOddIds = args.betslipOddIds;\n var betslipRestrictions = state.betslipRestrictions;\n var betslipRestrictionId = utils_1.getBetslipRestrictionId(betslipOddIds);\n if (betslipRestrictions.has(betslipRestrictionId))\n return state;\n var nextBetslipRestrictions = betslipRestrictions.set(betslipRestrictionId, []);\n return state.set('betslipRestrictions', nextBetslipRestrictions);\n }\n case constants_1.UPDATE_RESTRICTIONS:\n case constants_1.GET_RESTRICTION_SUCCESS: {\n var _b = action.payload, restrictions = _b.data.restrictions, betslipOddIds = _b.betslipOddIds;\n var betslipRestrictionId = utils_1.getBetslipRestrictionId(betslipOddIds);\n var stateRestrictions = state.betslipRestrictions;\n var maxBetRestriction = restrictions.find(utils_1.maxBetRestrictionCondition);\n if (!maxBetRestriction) {\n var prevMaxBetRestriction = (_a = stateRestrictions\n .get(betslipRestrictionId)) === null || _a === void 0 ? void 0 : _a.find(utils_1.maxBetRestrictionCondition);\n if (prevMaxBetRestriction) {\n restrictions.push(prevMaxBetRestriction);\n }\n }\n var nextBetslipRestriction = stateRestrictions.set(betslipRestrictionId, restrictions);\n return state.set('betslipRestrictions', nextBetslipRestriction);\n }\n case constants_1.GET_RESTRICTION_FAIL: {\n if (!action.payload.args)\n return state;\n var betslipOddIds = action.payload.args.betslipOddIds;\n var betslipRestrictions = state.betslipRestrictions;\n var betslipRestrictionId = utils_1.getBetslipRestrictionId(betslipOddIds);\n var nextBetslipRestrictions = betslipRestrictions.delete(betslipRestrictionId);\n return state.set('betslipRestrictions', nextBetslipRestrictions);\n }\n default: {\n return state;\n }\n }\n}\nexports.default = reducer;\n//# sourceMappingURL=reducer.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"expressPartMob__container___XECwY\",\"errors\":\"expressPartMob__errors___1zXhG\",\"over-footer\":\"expressPartMob__over-footer___1bBBc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betslipFooter__container___3_6TH\",\"footer\":\"betslipFooter__footer___7npad\",\"is-disabled\":\"betslipFooter__is-disabled___fidud\"};","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar immutable_1 = require(\"immutable\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar utils_1 = require(\"./utils\");\nvar constants_1 = require(\"./constants\");\nvar handleCreateBetsRequest_1 = __importDefault(require(\"./reducer-handlers/handleCreateBetsRequest\"));\nvar handleCreateBetsSuccess_1 = __importDefault(require(\"./reducer-handlers/handleCreateBetsSuccess\"));\nvar handleCreateBetsFail_1 = __importDefault(require(\"./reducer-handlers/handleCreateBetsFail\"));\nvar handleUpdateBet_1 = __importDefault(require(\"./reducer-handlers/handleUpdateBet\"));\nvar handleDeleteBetslipBet_1 = __importDefault(require(\"./reducer-handlers/handleDeleteBetslipBet\"));\nvar handleSetInitialBetslip_1 = __importDefault(require(\"./reducer-handlers/handleSetInitialBetslip\"));\nvar handleAdoptUnaffectedBetslipOdds_1 = __importDefault(require(\"./reducer-handlers/handleAdoptUnaffectedBetslipOdds\"));\nvar handleAddBetslipBet_1 = __importDefault(require(\"./reducer-handlers/handleAddBetslipBet\"));\nvar handleUpdateBetslipOddsByBet_1 = __importDefault(require(\"./reducer-handlers/handleUpdateBetslipOddsByBet\"));\nvar UPDATE_BET = core_1.default.async.constants.UPDATE_BET, getIdsFromBetslipOddId = core_1.default.utils.getIdsFromBetslipOddId;\nvar BetslipStateRecord = immutable_1.Record({\n betslipOdds: immutable_1.OrderedMap(),\n betslipBets: immutable_1.OrderedMap(),\n oddUpdateStatus: core_1.App.OddUpdateStatus.acceptHigher,\n chosenBetslipBetId: null,\n}, 'BetslipState');\nvar defaultBetslipBet = utils_1.createBetslipBet();\nvar initialState = new BetslipStateRecord({\n betslipBets: immutable_1.OrderedMap((_a = {},\n _a[defaultBetslipBet.id] = defaultBetslipBet,\n _a)),\n});\nfunction reducer(state, action) {\n if (state === void 0) { state = initialState; }\n switch (action.type) {\n case constants_1.CHOSE_BETSLIP_BET_ID: {\n var betslipBetId = action.payload.betslipBetId;\n var chosenBetslipBetId = state.chosenBetslipBetId;\n var nextChosenBetslipBetId = betslipBetId === chosenBetslipBetId ? null : betslipBetId;\n return state.set('chosenBetslipBetId', nextChosenBetslipBetId);\n }\n case constants_1.CHANGE_BET_MODE: {\n var _a = action.payload, mode = _a.mode, betslipBetId = _a.betslipBetId;\n var betslipBets = state.betslipBets;\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var nextBetslipBet = __assign(__assign({}, betslipBet), { mode: mode });\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state.set('betslipBets', nextBetslipBets);\n }\n case constants_1.DELETE_BETSLIP_ODDS: {\n var betslipBetId = action.payload.betslipBetId;\n var betslipBets = state.betslipBets, betslipOdds = state.betslipOdds;\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var betslipOddIds = betslipBet.betslipOddIds;\n var nextBetslipOddIds = betslipOddIds.clear();\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n var nextBetslipOdds = betslipOdds.deleteAll(betslipOddIds);\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state\n .set('betslipBets', nextBetslipBets)\n .set('betslipOdds', nextBetslipOdds);\n }\n case constants_1.CHANGE_COEF_UPDATES: {\n var oddUpdateStatus = action.payload.oddUpdateStatus;\n return state.set('oddUpdateStatus', oddUpdateStatus);\n }\n case constants_1.TOGGLE_SYSTEM_COMBINATION: {\n var _b = action.payload, betslipBetId = _b.betslipBetId, combinationNumber = _b.combinationNumber;\n var betslipBets = state.betslipBets;\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var systemSize = betslipBet.systemSize;\n var nextSystemSize = systemSize.includes(combinationNumber)\n ? []\n : [combinationNumber];\n var nextBetslipBet = __assign(__assign({}, betslipBet), { systemSize: nextSystemSize });\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state.set('betslipBets', nextBetslipBets);\n }\n case constants_1.ADD_BETSLIP_ODD: {\n var _c = action.payload, betslipBetId = _c.betslipBetId, oddId = _c.oddId;\n var betslipBets = state.betslipBets, betslipOdds = state.betslipOdds;\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var newBetslipOddId = utils_1.getBetslipOddId({\n oddId: oddId,\n betslipBetId: betslipBet.id,\n });\n var newBetslipOdd = utils_1.createBetslipOdd(newBetslipOddId);\n var betslipOddIds = betslipBet.betslipOddIds;\n var nextBetslipOddIds = betslipOddIds.add(newBetslipOddId);\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n var nextBetslipOdds = betslipOdds.set(newBetslipOdd.id, newBetslipOdd);\n return state\n .set('betslipBets', nextBetslipBets)\n .set('betslipOdds', nextBetslipOdds);\n }\n case constants_1.DELETE_BETSLIP_ODD: {\n var _d = action.payload, oddId = _d.oddId, betslipBetId = _d.betslipBetId;\n var betslipBets = state.betslipBets, betslipOdds = state.betslipOdds;\n var betslipOddId = utils_1.getBetslipOddId({ oddId: oddId, betslipBetId: betslipBetId });\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var betslipOddIds = betslipBet.betslipOddIds;\n var nextBetslipOddIds = betslipOddIds.delete(betslipOddId);\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n var nextBetslipOdds = betslipOdds.delete(betslipOddId);\n return state\n .set('betslipBets', nextBetslipBets)\n .set('betslipOdds', nextBetslipOdds);\n }\n case constants_1.CHANGE_BETSLIP_ODD_STAKE: {\n var _e = action.payload, betslipOddId = _e.betslipOddId, stake = _e.stake;\n var betslipOdds = state.betslipOdds;\n var betslipOdd = betslipOdds.get(betslipOddId);\n if (!betslipOdd)\n return state;\n var nextBetslipOdd = __assign(__assign({}, betslipOdd), { singleStake: stake });\n var nextBetslipOdds = betslipOdds.set(nextBetslipOdd.id, nextBetslipOdd);\n return state.set('betslipOdds', nextBetslipOdds);\n }\n case constants_1.CHANGE_BETSLIP_BET_STAKE: {\n var _f = action.payload, betslipBetId = _f.betslipBetId, stake = _f.stake;\n var betslipBets = state.betslipBets;\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var nextBetslipBet = __assign(__assign({}, betslipBet), { stake: stake });\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state.set('betslipBets', nextBetslipBets);\n }\n case constants_1.GET_MISSING_MATCHES_SUCCESS: {\n var _g = action.payload, entities = _g.entities, missingMatchIds_1 = _g.missingMatchIds;\n var odds_1 = entities.odds;\n var betslipBets = state.betslipBets, betslipOdds_1 = state.betslipOdds;\n var nextBetslipOdds_1 = betslipOdds_1;\n var nextBetslipBets_1 = betslipBets.map(function (betslipBet) {\n var betslipOddIds = betslipBet.betslipOddIds;\n var nextBetslipOddIds = betslipOddIds.filter(function (betslipOddId) {\n var betslipOdd = betslipOdds_1.get(betslipOddId);\n if (!betslipOdd)\n return false;\n var _a = getIdsFromBetslipOddId(betslipOddId), oddId = _a.oddId, matchId = _a.matchId;\n if (missingMatchIds_1.includes(matchId) &&\n (!odds_1 || !odds_1[oddId])) {\n nextBetslipOdds_1 = nextBetslipOdds_1.delete(betslipOddId);\n return false;\n }\n return true;\n });\n return __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n });\n // --start addition check\n nextBetslipOdds_1 = nextBetslipOdds_1.filter(function (betslipOdd) {\n var betslipOddId = betslipOdd.id;\n var betslipBetId = getIdsFromBetslipOddId(betslipOddId).betslipBetId;\n if (!nextBetslipBets_1.has(betslipBetId)) {\n return false;\n }\n return true;\n });\n // --end addition check\n return state\n .set('betslipOdds', nextBetslipOdds_1)\n .set('betslipBets', nextBetslipBets_1);\n }\n case constants_1.CREATE_BETS_REQUEST: {\n return handleCreateBetsRequest_1.default(state, action);\n }\n case constants_1.CREATE_BETS_SUCCESS: {\n return handleCreateBetsSuccess_1.default(state, action);\n }\n case constants_1.CREATE_BETS_FAIL: {\n return handleCreateBetsFail_1.default(state, action);\n }\n case constants_1.UPDATE_BETSLIP_ODDS_BY_BET: {\n return handleUpdateBetslipOddsByBet_1.default(state, action);\n }\n case UPDATE_BET: {\n return handleUpdateBet_1.default(state, action);\n }\n case constants_1.DELETE_BETSLIP_BET: {\n return handleDeleteBetslipBet_1.default(state, action);\n }\n case constants_1.SET_INITIAL_BETSLIP: {\n return handleSetInitialBetslip_1.default(state, action);\n }\n case constants_1.ADOPT_UNAFFECTED_BETSLIP_ODDS: {\n return handleAdoptUnaffectedBetslipOdds_1.default(state, action);\n }\n case constants_1.ADD_BETSLIP_BET: {\n return handleAddBetslipBet_1.default(state);\n }\n default:\n return state;\n }\n}\nexports.default = reducer;\n//# sourceMappingURL=reducer.js.map","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"systemPartMob__container___2DhXZ\",\"combinations\":\"systemPartMob__combinations___2_V1p\",\"wr-icon\":\"systemPartMob__wr-icon___gJTtm\",\"close-icon\":\"systemPartMob__close-icon___3HvKI\",\"icon\":\"systemPartMob__icon___3zK5L\",\"open\":\"systemPartMob__open___1sFEd\",\"errors\":\"systemPartMob__errors___2RC_r\",\"over-footer\":\"systemPartMob__over-footer___1K8gi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"betslipModal__wrapper___3s5Aq\",\"container\":\"betslipModal__container___3plwv\",\"header\":\"betslipModal__header___1TeEA\",\"is-invisible\":\"betslipModal__is-invisible___3CnAe\",\"title\":\"betslipModal__title___2aWZ5\",\"sub-title\":\"betslipModal__sub-title___3GwnB\",\"message\":\"betslipModal__message___1wG0j\",\"message-icon\":\"betslipModal__message-icon___31eWT\",\"buttons\":\"betslipModal__buttons___2C4He\",\"cancel\":\"betslipModal__cancel___2k2S9\",\"submit\":\"betslipModal__submit___3IlWK\",\"sub-button\":\"betslipModal__sub-button___1k_Jn\",\"footer\":\"betslipModal__footer___15dnk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"oddDetails__container___u7lNc\",\"team\":\"oddDetails__team___2I5wB\",\"market\":\"oddDetails__market___1QDW4\"};","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar immutable_1 = require(\"immutable\");\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar utils_1 = require(\"../utils\");\nvar replaceBetslipBetIdInBetslipOddId = core_1.default.utils.replaceBetslipBetIdInBetslipOddId;\nfunction handleRehydrate(state, rehydrationState) {\n if (!rehydrationState)\n return state;\n var betslipBetsFromLocalStorage = rehydrationState.betslipBets, betslipOddsFromLocalStorage = rehydrationState.betslipOdds;\n var initialBetslipBetFromLocalStorage = utils_1.getInitialBetslipBet({\n betslipBets: betslipBetsFromLocalStorage,\n betslipOdds: betslipOddsFromLocalStorage,\n });\n if (!initialBetslipBetFromLocalStorage)\n return state;\n var betslipOdds = state.betslipOdds, betslipBets = state.betslipBets;\n var initialBetslipBet = utils_1.getInitialBetslipBet({\n betslipBets: betslipBets,\n betslipOdds: betslipOdds,\n });\n var adoptiveBetslipBet = initialBetslipBet || utils_1.createBetslipBet();\n var betslipOddIds = adoptiveBetslipBet.betslipOddIds;\n var modeFromLocalStorage = initialBetslipBetFromLocalStorage.mode, betslipOddIdsFromLocalStorage = initialBetslipBetFromLocalStorage.betslipOddIds;\n var adoptiveBetslipOdds = betslipOddIdsFromLocalStorage.reduce(function (acc, betslipOddId) {\n var betslipOdd = betslipOddsFromLocalStorage[betslipOddId];\n if (!betslipOdd)\n return acc;\n var newBetslipOddId = replaceBetslipBetIdInBetslipOddId({\n betslipOddId: betslipOddId,\n newBetslipBetId: adoptiveBetslipBet.id,\n });\n if (betslipOddIds.has(newBetslipOddId))\n return acc;\n var newBetslipOdd = __assign(__assign({}, betslipOdd), { id: newBetslipOddId });\n return acc.set(newBetslipOdd.id, newBetslipOdd);\n }, immutable_1.OrderedMap());\n var nextBetslipOddIds = betslipOddIds.merge(adoptiveBetslipOdds.keySeq());\n var nextMode = utils_1.getNextModeBySize({\n mode: modeFromLocalStorage,\n nextBetslipOddIds: nextBetslipOddIds,\n });\n var nextBetslipBet = __assign(__assign({}, initialBetslipBetFromLocalStorage), { id: adoptiveBetslipBet.id, betslipOddIds: nextBetslipOddIds, mode: nextMode });\n var nextBetslipBets = betslipBets.set(nextBetslipBet.id, nextBetslipBet);\n var nextBetslipOdds = betslipOdds.merge(adoptiveBetslipOdds);\n return state\n .set('betslipOdds', nextBetslipOdds)\n .set('betslipBets', nextBetslipBets);\n}\nexports.default = handleRehydrate;\n//# sourceMappingURL=handleRehydrate.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterRestrictionsByOddId = exports.getBetslipRestrictionId = exports.checkIsMaxBetError = exports.normalizeRestriction = exports.maxBetRestrictionCondition = exports.checkIsCanGetRestrictions = exports.getRestrictionsSelection = exports.getExpressRestrictionsArgs = void 0;\nvar immutable_1 = require(\"immutable\");\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar betslip_1 = __importDefault(require(\"@gin-betting/betslip\"));\nvar getBetSystemSizes = betslip_1.default.utils.getBetSystemSizes;\nvar _a = core_1.default.utils, getIdsFromBetslipOddId = _a.getIdsFromBetslipOddId, getBettingOptions = _a.getBettingOptions, getIdsFromBetslipOddPath = _a.getIdsFromBetslipOddPath, getIdsFromOddId = _a.getIdsFromOddId, joinIdPath = _a.joinIdPath;\nvar getExpressRestrictionsArgs = function (_a) {\n var id = _a.id, betType = _a.betType, odds = _a.odds, betslipOddIds = _a.betslipOddIds, systemSize = _a.systemSize;\n var selections = [];\n betslipOddIds.forEach(function (betslipOddId) {\n var selection = getRestrictionsSelection(betslipOddId, odds);\n if (selection) {\n selections.push(selection);\n }\n });\n return {\n variables: {\n selections: selections,\n betType: betType,\n systemSizes: getBetSystemSizes({\n betType: betType,\n selectionsCount: selections.length,\n systemSize: systemSize,\n }),\n },\n args: {\n betslipBetId: id,\n betType: betType,\n betslipOddIds: betslipOddIds.toArray(),\n },\n };\n};\nexports.getExpressRestrictionsArgs = getExpressRestrictionsArgs;\nfunction getRestrictionsSelection(betslipOddId, odds) {\n var oddIdPath = getIdsFromBetslipOddId(betslipOddId).oddId;\n var _a = getIdsFromBetslipOddPath(betslipOddId), matchId = _a.matchId, marketId = _a.marketId, oddId = _a.oddId;\n var odd = odds.get(oddIdPath);\n if (!odd)\n return null;\n return {\n matchId: matchId,\n marketId: marketId,\n oddId: oddId,\n ratio: String(odd.value),\n providerId: matchId.split(':')[0],\n };\n}\nexports.getRestrictionsSelection = getRestrictionsSelection;\nfunction checkIsCanGetRestrictions(status) {\n var isAuthorized = getBettingOptions().isAuthorized;\n return isAuthorized && core_1.App.BetslipStatus.INITIAL === status;\n}\nexports.checkIsCanGetRestrictions = checkIsCanGetRestrictions;\nvar maxBetRestrictionCondition = function (restriction) {\n return restriction.type === core_1.API.RestrictionType.max_bet;\n};\nexports.maxBetRestrictionCondition = maxBetRestrictionCondition;\nvar normalizeRestriction = function (restrictions) {\n var maxBetRestriction;\n var simpleRestrictions = restrictions.filter(function (restriction) {\n if (exports.maxBetRestrictionCondition(restriction)) {\n maxBetRestriction = restriction;\n return false;\n }\n return true;\n });\n return { simpleRestrictions: simpleRestrictions, maxBetRestriction: maxBetRestriction };\n};\nexports.normalizeRestriction = normalizeRestriction;\nvar checkIsMaxBetError = function (betslipRestriction, stake) {\n var maxBetRestriction = betslipRestriction.find(exports.maxBetRestrictionCondition);\n if (!maxBetRestriction)\n return false;\n var maxBet = maxBetRestriction.maxBet;\n return +stake > maxBet;\n};\nexports.checkIsMaxBetError = checkIsMaxBetError;\nvar getBetslipRestrictionId = function (betslipOddIds) {\n if (immutable_1.isCollection(betslipOddIds))\n return betslipOddIds.toSet();\n var ids = lodash_1.isString(betslipOddIds) ? [betslipOddIds] : betslipOddIds;\n return immutable_1.Set(ids);\n};\nexports.getBetslipRestrictionId = getBetslipRestrictionId;\nvar filterRestrictionsByOddId = function (restrictions, currOddId) {\n return restrictions.filter(function (restriction) {\n var sportEventId = restriction.sportEventId, marketId = restriction.marketId, oddId = restriction.oddId;\n var ids = getIdsFromOddId(currOddId);\n if (!ids)\n return false;\n if (!sportEventId)\n return true;\n var restrictionMarketId = joinExistedIdPath(sportEventId, marketId);\n var restrictionOddId = joinExistedIdPath(restrictionMarketId, oddId);\n if (restrictionOddId)\n return restrictionOddId === ids.oddId;\n if (restrictionMarketId) {\n return restrictionMarketId === ids.marketId;\n }\n return sportEventId === ids.matchId;\n });\n};\nexports.filterRestrictionsByOddId = filterRestrictionsByOddId;\nfunction checkIsIdsExisted(ids) {\n return ids.every(function (id) { return typeof id === 'string'; });\n}\nfunction joinExistedIdPath() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!checkIsIdsExisted(args))\n return null;\n return joinIdPath.apply(void 0, args);\n}\n//# sourceMappingURL=utils.js.map","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"quickBetslip__container___13JVY\",\"is-open\":\"quickBetslip__is-open___1SGr2\",\"toggler\":\"quickBetslip__toggler___nMVgP\",\"icon\":\"quickBetslip__icon___1aAfm\",\"content\":\"quickBetslip__content___AkT4f\",\"button\":\"quickBetslip__button___3ckLv\",\"odd-wr\":\"quickBetslip__odd-wr___2HH46\"};","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Restrictions = void 0;\nvar actions = __importStar(require(\"./actions\"));\nvar reducer_1 = __importDefault(require(\"./reducer\"));\nvar selectors = __importStar(require(\"./selectors\"));\nvar types = __importStar(require(\"./types\"));\nexports.Restrictions = types;\nvar constants = __importStar(require(\"./constants\"));\nvar utils = __importStar(require(\"./utils\"));\nexports.default = {\n actions: actions,\n reducer: reducer_1.default,\n selectors: selectors,\n types: types,\n utils: utils,\n constants: constants,\n};\n//# sourceMappingURL=index.js.map","import core from '@gin-betting/core';\nimport { persistReducer } from '@gin-betting/persist';\nimport { noop } from 'lodash';\n\nimport moduleLocator from 'moduleLocator';\nimport type { Betslip, BetslipModule } from 'modules/betslip';\n\nfunction handleBetslipModuleLoad(betslipModule: BetslipModule): BetslipModule {\n const {\n reducer,\n utils: { handleRehydrate },\n middleware,\n constants: { BetslipTimeManager },\n } = betslipModule;\n\n // eslint-disable-next-line no-param-reassign\n betslipModule.reducer = persistReducer(\n {\n key: 'betslip',\n whitelist: ['betslipBets', 'betslipOdds', 'oddUpdateStatus'],\n expireAfter: 1 * 60 * 60 * 1000,\n stateReconciler: (inboundState, _, reducedState) => {\n const rehydratedState = handleRehydrate(\n reducedState,\n inboundState\n );\n\n const rehydrateTime = Date.now();\n\n rehydratedState.betslipOdds.forEach(({ id }) => {\n BetslipTimeManager[id] = rehydrateTime;\n });\n\n return rehydratedState.set(\n 'oddUpdateStatus',\n inboundState.oddUpdateStatus\n );\n },\n },\n reducer\n );\n\n // TODO hardcode, rewrite binding bettingAPI\n betslipModule.middleware = () =>\n middleware({\n handleBet: core.utils.isDebugEnabled()\n ? bet => {\n const betOverride = localStorage.getItem('bet-override');\n\n if (betOverride) {\n Object.assign(bet, JSON.parse(betOverride));\n }\n }\n : noop,\n });\n\n moduleLocator.set('betslip', { default: betslipModule });\n\n return betslipModule;\n}\n\nexport default handleBetslipModuleLoad;\n","import { createContext } from 'react';\nimport restrictions from '@gin-betting/restrictions';\nimport { noop } from 'lodash';\n\nimport { RestrictionsCtx } from './useRestrictions';\n\nconst {\n constants: { initialState },\n} = restrictions;\n\nexport const RestrictionsContext = createContext({\n state: initialState,\n dispatchRestrictions: noop,\n});\n","import { useEffect, useReducer, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core, { Async, GQL, View } from '@gin-betting/core';\nimport restrictions, { Restrictions } from '@gin-betting/restrictions';\nimport { keys } from 'lodash';\nimport type { Arg2 } from 'tsargs';\n\nconst {\n actions: { updateRestrictions },\n reducer,\n constants: { initialState },\n} = restrictions;\nconst {\n appServiceLocator,\n entities: { normalizeEntity },\n} = core;\nconst {\n selectors: { selectBetslipOdds },\n} = betslip;\n\nexport interface RestrictionsCtx {\n state: Restrictions.RestrictionsState;\n dispatchRestrictions: (action: Arg2) => void;\n}\n\nconst useRestrictions = (): RestrictionsCtx => {\n const [state, dispatchRestrictions] = useReducer(reducer, initialState);\n const betslipOdds = useSelector(selectBetslipOdds);\n\n const betslipOddsRef = useRef(betslipOdds);\n betslipOddsRef.current = betslipOdds;\n\n useEffect(() => {\n const apiClient = appServiceLocator.get('apiClient');\n const subscription = apiClient\n .subscribe({ method: 'onUpdateBet', variables: {} })\n .subscribe(({ data: { onUpdateBet } }) => {\n if (!betslipOddsRef.current.count()) return;\n\n const {\n entities: { bets },\n } = normalizeEntity({\n bets: [onUpdateBet],\n }) as Async.BetNormalized;\n\n const betId = keys(bets)[0];\n\n if (!betId) return;\n\n const bet = bets[betId];\n\n if (!bet) return;\n\n const { declineContext } = bet;\n\n const error = declineContext[0];\n\n if (!error) return;\n\n const {\n restrictions: newRestrictions,\n } = error as GQL.BetDeclineContextRestrictions;\n\n const betslipOddIds = betslipOddsRef.current\n .filter(betslipOdd => betslipOdd.betId === betId)\n .keySeq()\n .toSet();\n\n return dispatchRestrictions(\n updateRestrictions({\n restrictions: newRestrictions as View.Restriction[],\n betslipOddIds,\n })\n );\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [dispatchRestrictions]);\n\n return {\n state,\n dispatchRestrictions,\n };\n};\n\nexport default useRestrictions;\n","import React from 'react';\n\nimport { RestrictionsContext } from './RestrictionsContext';\nimport useRestrictions from './useRestrictions';\n\nconst Restrictions: React.FC = ({ children }) => {\n const restrictionsCtx = useRestrictions();\n\n return (\n \n {children}\n \n );\n};\n\nexport default Restrictions;\n","import { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport { createSelector } from 'reselect';\n\nimport { State } from 'types';\n\nconst {\n selectors: { selectChosenBetslipBet },\n} = betslip;\n\ninterface Output {\n betsSize: number | null;\n}\n\nconst selectBetsSize = createSelector(selectChosenBetslipBet, betslipBet => {\n if (!betslipBet) return null;\n\n const { betslipOddIds } = betslipBet;\n\n return betslipOddIds.count();\n});\n\nconst useBetCount = (): Output => {\n const betsSize = useSelector((s: State) => selectBetsSize(s));\n\n return { betsSize };\n};\n\nexport default useBetCount;\n","import React from 'react';\n\nimport { BetCount } from 'components';\nimport useBetslipBetCount from './useBetslipBetCount';\n\nconst BetslipBetCount: React.FC = () => {\n const { betsSize } = useBetslipBetCount();\n\n return ;\n};\n\nexport default BetslipBetCount;\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n attention: {\n defaultMessage: 'attention',\n id: 'betslip.Error.attention',\n },\n\n inactive: {\n defaultMessage: 'Inactive',\n id: 'betslip.BetslipHeader.inactive',\n },\n inProcessingMobile: {\n defaultMessage: 'processing',\n id: 'betslip.BetslipHeader.inProcessingMobile',\n },\n inProcessing: {\n defaultMessage: 'Processing...',\n id: 'betslip.BetslipHeader.inProcessing',\n },\n completedMobile: {\n defaultMessage: 'completed',\n id: 'betslip.BetslipHeader.completedMobile',\n },\n completed: {\n defaultMessage: 'completed/success',\n id: 'betslip.BetslipHeader.completed',\n },\n\n // EXPRESS: {\n // defaultMessage: 'EXPRESS',\n // id: 'betslip.EXPRESS',\n // },\n // SINGLE: {\n // defaultMessage: 'SINGLE',\n // id: 'betslip.SINGLE',\n // },\n // SYSTEM: {\n // defaultMessage: 'SYSTEM',\n // id: 'betslip.SYSTEM',\n // },\n updatesSettingsTitle: {\n defaultMessage: 'Accept changes automatically?',\n id: 'betslip.UpdatesSettings.updatesSettingsTitle',\n },\n notificationSettingsTitle: {\n defaultMessage: 'Betslip notification settings',\n id: 'betslip.UpdatesSettings.notificationSettingsTitle',\n },\n updatesSettingsDescription: {\n defaultMessage:\n 'Choose a betting strategy that is more convenient for you:',\n id: 'betslip.UpdatesSettings.updatesSettingsDescription',\n },\n acceptAll: {\n defaultMessage: 'Accept any odds changes',\n id: 'betslip.UpdatesSettings.acceptAll',\n },\n acceptAllQuestion: {\n defaultMessage: 'Accept any odds changes?',\n id: 'betslip.AcceptOddsChangeModal.acceptAllQuestion',\n },\n acceptHigher: {\n defaultMessage: 'Accept better odds only',\n id: 'betslip.UpdatesSettings.acceptHigher',\n },\n alwaysAsk: {\n defaultMessage: 'Always ask',\n id: 'betslip.UpdatesSettings.alwaysAsk',\n },\n deleteAllBetslipOdds: {\n defaultMessage: 'Delete All',\n id: 'betslip.BetslipHeader.deleteAllBetslipOdds',\n },\n oddsUpdates: {\n defaultMessage: 'Odds Updates',\n id: 'betslip.BetslipHeader.oddsUpdates',\n },\n minimize: {\n defaultMessage: 'Minimize',\n id: 'betslip.BetslipHeader.minimize',\n },\n freeBet: {\n defaultMessage: 'Free Bet',\n id: 'betslip.Odd.OddDetails.freeBet',\n },\n deleteOdd: {\n defaultMessage: 'Delete Odds',\n id: 'betslip.Odd.deleteOdd',\n },\n betPerOneGroup: {\n defaultMessage: 'Stake per bet',\n id: 'betslip.BetslipFooter.StakeRow.betPerOneGroup',\n },\n freeBetRow: {\n defaultMessage: 'FREEBET ON',\n id: 'betslip.BetslipFooter.FreeBetRow.freeBetRow',\n },\n combo: {\n defaultMessage: 'COMBO BONUS ACCUMULATOR',\n id: 'betslip.BetslipFooter.ExpressPart.ComboBonusRow.combo',\n },\n selectCombinations: {\n defaultMessage: 'Select Combinations',\n id: 'betslip.BetslipFooter.SystemPart.Combinations.selectCombinations',\n },\n combination: {\n defaultMessage: 'Combination',\n id: 'betslip.BetslipFooter.SystemPart.CombinationRow.combination',\n },\n openCombination: {\n defaultMessage: 'Open Combination',\n id: 'betslip.BetslipFooter.SystemPart.CombinationRow.openCombination',\n },\n totalOddExtraSmall: {\n defaultMessage: 'Total Odds',\n id: 'betslip.BetslipFooter.TotalRow.totalOddExtraSmall',\n },\n signInBet: {\n defaultMessage: 'Sign In & Bet',\n id: 'betslip.BetslipFooter.TotalRow.signInBet',\n },\n placeBetError: {\n defaultMessage: 'Bet place error.',\n id: 'betslip.Odd.Error',\n },\n maxButton: {\n defaultMessage: 'MAX',\n id: 'betslip.BetslipFooter.TotalRow.maxButton',\n },\n acceptButton: {\n defaultMessage: 'Accept',\n id: 'betslip.AcceptNewCoefModal.acceptButton',\n },\n declineButton: {\n defaultMessage: 'No',\n id: 'betslip.AcceptNewCoefModal.declineButton',\n },\n skipButton: {\n defaultMessage: 'Skip',\n id: 'betslip.AcceptOddsChangeModal.skipButton',\n },\n oddsStrategyHelpInfo: {\n defaultMessage:\n 'You can always change the parameters set by the notice. To do this, click on the \"{icon}\" button and choose any other method convenient for you.',\n id: 'betslip.AcceptOddsChangeModal.oddsStrategyHelpInfo',\n },\n oddsChanged: {\n defaultMessage: 'Odds changed',\n id: 'betslip.AcceptOddsChangeModal.oddsChanged',\n },\n coefsHaveChanged: {\n defaultMessage: 'Coefficients or statuses have changed!',\n id: 'betslip.AcceptNewCoefModal.coefsChangedText',\n },\n errorMaxSystem: {\n defaultMessage: 'Maximum quantity of odds in system bet is 10.',\n id: 'betslip.Combinations.errorMaxExpress',\n },\n errorMaxStake: {\n defaultMessage: 'Max bet up to',\n id: 'betslip.Dropdown.error.maxStake',\n },\n betslipOddsHasConflicts: {\n id: 'betslip.GroupOfOdds.betslipOddsHasConflicts',\n defaultMessage: 'Restrictions apply to highlighted selections!',\n },\n limitIsExceeded: {\n id: 'betslip.BetslipFooter.TotalRow.limitIsExceeded',\n defaultMessage: 'Limit is exceeded',\n },\n insufficientFunds: {\n defaultMessage: 'Insufficient funds to place bet',\n id: 'betslip.Odd.Error.insufficientFunds',\n },\n stakeExceedsMaxBet: {\n defaultMessage: 'Stake is too big, try to decrease',\n id: 'betslip.Odd.Error.stakeExceedsMaxBet',\n },\n verifiedPlayerLimitCrossed: {\n defaultMessage: 'Verification request during processing. Please wait.',\n id: 'betslip.Odd.Error.verifiedPlayerLimitCrossed',\n },\n betslipRejected: {\n defaultMessage: 'Betslip rejected',\n id: 'betslip.Odd.Error.betslipRejected',\n },\n responseTimedOut: {\n defaultMessage: 'Internal error: response timed out',\n id: 'betslip.Odd.Error.responseTimedOut',\n },\n playerIpThisIsNotAValidIpAddress: {\n defaultMessage: 'This is not a valid IP address',\n id: 'betslip.Odd.Error.playerIpThisIsNotAValidIpAddress',\n },\n authCredentialsExpired: {\n defaultMessage: 'Your login credentials have expired, please re-login',\n id: 'betslip.Odd.Error.authCredentialsExpired',\n },\n authSessionUnknown: {\n defaultMessage: 'Session authentication failed, please try again',\n id: 'betslip.Odd.Error.authSessionUnknown',\n },\n betOnDifferentProviders: {\n defaultMessage:\n 'This combination of selections is invalid. Please correct and try again',\n id: 'betslip.Odd.Error.betOnDifferentProviders',\n },\n betLimitExceeded: {\n defaultMessage: 'Bet limit exceeded',\n id: 'betslip.Odd.Error.betLimitExceeded',\n },\n bettingIsSuspended: {\n defaultMessage: 'Bets has been suspended on this event',\n id: 'betslip.Odd.Error.bettingIsSuspended',\n },\n internalErrorInvalidMatchStatus: {\n defaultMessage: 'Something went wrong with the match',\n id: 'betslip.Odd.Error.internalErrorInvalidMatchStatus',\n },\n internalErrorInvalidMarketStatus: {\n defaultMessage: 'Invalid market status',\n id: 'betslip.Odd.Error.internalErrorInvalidMarketStatus',\n },\n internalErrorInvalidOddStatus: {\n defaultMessage: 'Internal error: invalid price',\n id: 'betslip.Odd.Error.internalErrorInvalidOddStatus',\n },\n internalErrorInvalidOddsStatus: {\n defaultMessage: 'Selected outcome unavailable',\n id: 'betslip.Odd.Error.internalErrorInvalidOddsStatus',\n },\n stakeMinimalStakeIs: {\n defaultMessage: 'Minimal stake is:',\n id: 'betslip.Odd.Error.stakeMinimalStakeIs',\n },\n playerLimitCrossed: {\n defaultMessage: 'Wager limit you have set has been already reached',\n id: 'betslip.Odd.Error.playerLimitCrossed',\n },\n playerLimitCrossedDefault: {\n defaultMessage:\n 'The action is prohibited due to the current restrictions for the player!',\n id: 'betslip.Odd.Error.playerLimitCrossedDefault',\n },\n internalError: {\n defaultMessage: 'An error occurred. Please try again later!',\n id: 'betslip.Odd.Error.internalError',\n },\n placeRetryLimitReached: {\n defaultMessage: 'Connection error. Please try again.',\n id: 'betslip.Odd.Error.placeRetryLimitReached',\n },\n identicalBetIsProcessing: {\n defaultMessage: 'Your bet on this outcome is processing at the moment',\n id: 'betslip.Odd.Error.identicalBetIsProcessing',\n },\n betIsForbidden: {\n defaultMessage: 'Bet is forbidden',\n id: 'betslip.Odd.Error.betIsForbidden',\n },\n betTypeIsForbidden: {\n defaultMessage: 'Bets of this type are forbidden at this moment',\n id: 'betslip.Odd.Error.betTypeIsForbidden',\n },\n betAmountRestrictionCrossed: {\n defaultMessage: 'bet amount restriction crossed',\n id: 'betslip.Odd.Error.betAmountRestrictionCrossed',\n },\n betType: {\n defaultMessage:\n 'This type of bet is not permitted. Delete this selection',\n id: 'betslip.OddContainer.betType',\n },\n maxBet: {\n defaultMessage: 'Match limit exceeded. Try betting on other matches',\n id: 'betslip.OddContainer.maxBet',\n },\n betInterval: {\n defaultMessage:\n 'Bet declined. Please try again in {timeToWait} seconds',\n id: 'betslip.OddContainer.betInterval',\n },\n\n selectionValue: {\n defaultMessage: 'Odd has changed. Please try again.',\n id: 'betslip.OddContainer.selectionValue',\n },\n\n sportEventStatus: {\n defaultMessage: 'Selected event is not available',\n id: 'betslip.OddContainer.sportEventStatus',\n },\n\n sportEventExistence: {\n defaultMessage: 'Selected event is not found',\n id: 'betslip.OddContainer.sportEventExistence',\n },\n\n marketStatus: {\n defaultMessage: 'Selected market is not available in the moment',\n id: 'betslip.OddContainer.marketStatus',\n },\n\n marketExistence: {\n defaultMessage: 'Selected market is not found',\n id: 'betslip.OddContainer.marketExistence',\n },\n\n marketDefective: {\n defaultMessage: 'Selected market is incorrect',\n id: 'betslip.OddContainer.marketDefective',\n },\n\n oddStatus: {\n defaultMessage: 'Odd status is not available',\n id: 'betslip.OddContainer.oddStatus',\n },\n\n oddExistence: {\n defaultMessage: 'Odd status is not found',\n id: 'betslip.OddContainer.oddExistence',\n },\n error: {\n defaultMessage: 'Error',\n id: 'betslip.BetslipHeader.error',\n },\n playerRequiredRequisites: {\n defaultMessage:\n 'Please enter your personal information in your profile',\n id: 'betslip.Odd.Error.playerRequiredRequisites',\n },\n gamblerBlocked: {\n defaultMessage: 'Wager limit you have set has been already reached',\n id: 'betslip.Odd.Error.gamblerBlocked',\n },\n betRateLimitReached: {\n defaultMessage: 'Too many bets, wait a bit',\n id: 'betslip.Odd.Error.betRateLimitReached',\n },\n marketIsDefective: {\n defaultMessage: 'Group of outcomes is unavailable',\n id: 'betslip.Odd.Error.marketIsDefective',\n },\n freebetAlreadyUsed: {\n defaultMessage: 'Freebet has already been used in another bet',\n id: 'betslip.Odd.Error.freebetAlreadyUsed',\n },\n freebetExpired: {\n defaultMessage: 'This freebet has expired =(',\n id: 'betslip.Odd.Error.freebetExpired',\n },\n freebetInvalidStatus: {\n defaultMessage: 'Something is wrong with this freebet. Contact support',\n id: 'betslip.Odd.Error.freebetInvalidStatus',\n },\n freebetNotFound: {\n defaultMessage: 'Freebet not found',\n id: 'betslip.Odd.Error.freebetNotFound',\n },\n freebetNotApplicableContext: {\n defaultMessage:\n 'Outcomes in this coupon do not qualify for the freebet. Try other outcomes described in the freebet rules.',\n id: 'betslip.Odd.Error.freebetNotApplicableContext',\n },\n deKycDeposit: {\n defaultMessage:\n 'Please undergo the verification procedure so you can continue to place bets.',\n id: 'betslip.Odd.Error.deKycDeposit',\n },\n refillBalanceTitle: {\n defaultMessage: 'Пополни счет для этой ставки',\n id: 'betslip.RefillBalanceModal.refillBalanceTitle',\n },\n refillBalanceMessage: {\n defaultMessage:\n 'Не хватает денег на счету. Для ставки на эту сумму пополнись на {balance}',\n id: 'betslip.RefillBalanceModal.refillBalanceMessage',\n },\n refill: {\n defaultMessage: 'Пополниться',\n id: 'betslip.RefillBalanceModal.refil',\n },\n placeBetStake: {\n defaultMessage: 'Поставить {stake}',\n id: 'betslip.RefillBalanceModal.placeBetStake',\n },\n});\n","import React from 'react';\nimport { FormattedMessage, MessageDescriptor } from 'react-intl';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\n\nimport warningGlyph from 'assets/svg/warning.svg';\nimport './betslipModal.scss';\n\ninterface Props {\n handleClick: VoidFn;\n handleCancel: VoidFn;\n handleSubmit: VoidFn;\n title: MessageDescriptor;\n subTitle?: MessageDescriptor;\n message: MessageDescriptor;\n cancelTextBtn: MessageDescriptor;\n submitTextBtn: MessageDescriptor;\n subTextBtn: MessageDescriptor;\n iconMessage?:\n | {\n id: string;\n content: string;\n viewBox: string;\n }\n | undefined;\n balance?: string;\n stake?: string;\n isStakeBtn?: boolean;\n}\n\nconst BetslipModal: React.FC = ({\n handleClick,\n handleSubmit,\n handleCancel,\n title,\n subTitle,\n message,\n cancelTextBtn,\n submitTextBtn,\n subTextBtn,\n iconMessage,\n balance,\n stake,\n isStakeBtn,\n}) => {\n return (\n
\n
\n \n
\n \n \n
\n {subTitle && (\n
\n \n
\n )}\n
\n\n
\n \n ),\n balance,\n }}\n />\n
\n\n
\n
\n
\n \n
\n
\n \n
\n
\n {isStakeBtn && (\n
\n \n
\n )}\n
\n
\n \n );\n};\n\nexport default BetslipModal;\n","import betslip from '@gin-betting/betslip';\nimport { API, App } from '@gin-betting/core';\n\nimport type { IBetslipTimeManager } from './types';\n\nconst {\n constants: { ErrorCodes },\n} = betslip;\n\nexport const DELETE_BETSLIP_ODD_DELAY = 2000;\nexport const DELETE_BETSLIP_ODD_DELAY_MOB = 5000;\n\nexport const RESTRICTION_BLACK_LIST = [\n API.RestrictionType.bet_delay,\n API.RestrictionType.selection_value,\n API.RestrictionType.sport_event_status,\n API.RestrictionType.sport_event_bet_stop,\n API.RestrictionType.market_status,\n API.RestrictionType.odd_status,\n API.RestrictionType.not_enough_balance,\n] as const;\n\nexport const RESTRICTION_BLACKLIST_BY_BETSLIP_STATUS = {\n [App.BetslipStatus.ERROR]: [\n API.RestrictionType.max_bet,\n API.RestrictionType.bet_delay,\n API.RestrictionType.not_enough_balance,\n ],\n};\n\nexport const ODDS_CHANGE_DECLINE_REASONS = [\n ErrorCodes.ApiOddValueWrong,\n ErrorCodes.InvalidSelectionValue,\n] as const;\n\nexport const NOT_ENOUGH_BALANCE_REASON_LIST = [\n ErrorCodes.NotEnoughBalance1,\n ErrorCodes.NotEnoughBalance2,\n] as const;\n\nexport const GROUP_OF_ODDS_CLASS = '__app-GroupOfOdds-container' as const;\n\nexport const BetslipTimeManager: IBetslipTimeManager = {};\n\nexport const PART_OF_NOT_ENOUGH_DOCS_ERROR = 'de-kyc-deposit' as const;\n\nexport const INPUT_VARIANT_COUNT = 5 as const;\nexport const DEFAULT_VARIANT_POSITION = 2 as const;\n","import { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core, { App, GQL, View } from '@gin-betting/core';\nimport { first, includes } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\nimport ui from 'modules/ui';\nimport { ODDS_CHANGE_DECLINE_REASONS } from '../../constants';\n\nconst {\n entities: {\n selectors: { selectBets },\n },\n} = core;\n\nconst {\n selectors: { selectChosenBetslipBet, selectBetslipOddsByChosenBetslipBet },\n actions: { changeOddUpdateStatus },\n utils: { getStatus },\n} = betslip;\n\nconst {\n selectors: { selectIsOddsChangeModalShown },\n actions: { setOddsChangeModalShown },\n} = ui;\n\ninterface Output {\n handleSkip: VoidFn;\n handleCancel: VoidFn;\n handleSubmit: VoidFn;\n isModalOpen: boolean;\n}\n\nconst useAcceptOddsChangeModal = (): Output => {\n const dispatch = useDispatch();\n\n const [isOpen, setOpen] = useState(false);\n\n const { hasOddsChangeError, isErrorBetslip } = useMemoSelector(selectProps);\n\n const handleSkip = () => setOpen(false);\n const handleSubmit = () => {\n dispatch(\n changeOddUpdateStatus({\n oddUpdateStatus: App.OddUpdateStatus.acceptAll,\n })\n );\n dispatch(setOddsChangeModalShown());\n setOpen(false);\n };\n\n const handleCancel = () => {\n dispatch(setOddsChangeModalShown());\n setOpen(false);\n };\n\n useEffect(() => {\n setOpen(!!isErrorBetslip && hasOddsChangeError);\n }, [hasOddsChangeError, isErrorBetslip]);\n\n return {\n handleSkip,\n handleCancel,\n handleSubmit,\n isModalOpen: isOpen,\n };\n};\n\nconst selectProps = createSelector(\n selectChosenBetslipBet,\n selectBetslipOddsByChosenBetslipBet,\n selectIsOddsChangeModalShown,\n selectBets,\n (betslipBet, betslipOdds, isOddsChangeModalShown, bets) => {\n let hasOddsChangeError = false;\n\n if (\n isOddsChangeModalShown ||\n !betslipBet ||\n betslipOdds.count() === 0\n ) {\n return {\n hasOddsChangeError,\n };\n }\n\n hasOddsChangeError = betslipOdds.some(({ betId }) => {\n if (!betId) return false;\n\n const bet = bets.get(betId);\n\n if (!bet) return false;\n\n return (\n includes(ODDS_CHANGE_DECLINE_REASONS, bet.declineReason) ||\n hasOddChangeRestriction(bet)\n );\n });\n\n const isErrorBetslip =\n getStatus({\n betslipOddIds: betslipBet.betslipOddIds,\n betslipOdds,\n }) === App.BetslipStatus.ERROR;\n\n return {\n isErrorBetslip,\n hasOddsChangeError,\n betslipBetId: betslipBet.id,\n };\n }\n);\n\nfunction hasOddChangeRestriction(bet: View.Bet): boolean {\n if (bet.declineContext.length === 0) return false;\n\n const declineContextItem = first(\n bet.declineContext\n ) as GQL.BetDeclineContextRestrictions;\n\n return Boolean(\n declineContextItem.restrictions.find(\n r => r.type === GQL.RestrictionType.selection_value\n )\n );\n}\n\nexport default useAcceptOddsChangeModal;\n","import React from 'react';\n\nimport messages from '../../messages';\nimport BetslipModal from '../BetslipModal';\nimport useAcceptOddsChangeModal from './useAcceptOddsChangeModal';\n\nimport settingsGlyph from 'assets/svg/setting-betslip.svg';\n\nconst AcceptOddsChangeModal: React.FC = () => {\n const {\n handleCancel,\n handleSkip,\n handleSubmit,\n isModalOpen,\n } = useAcceptOddsChangeModal();\n\n if (!isModalOpen) return null;\n\n return (\n \n );\n};\n\nexport default AcceptOddsChangeModal;\n","import { useContext, useEffect, useMemo } from 'react';\nimport betslip, { Betslip } from '@gin-betting/betslip';\nimport core, { View } from '@gin-betting/core';\nimport restrictions from '@gin-betting/restrictions';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { usePureSelector } from 'hooks';\nimport type { State } from 'types';\nimport { RestrictionsContext } from '../../restrictions';\n\nconst {\n entities: {\n selectors: { selectOdds },\n },\n hooks: { useDeepMemo },\n appServiceLocator,\n} = core;\n\nconst {\n utils: { getExpressRestrictionsArgs, checkIsCanGetRestrictions },\n actions: { getRestrictions },\n constants: { GET_RESTRICTION_SUCCESS, GET_RESTRICTION_FAIL },\n} = restrictions;\n\nconst {\n selectors: { selectBetslipBetWithStatus },\n} = betslip;\n\ninterface Input {\n betslipBetId: string;\n}\n\nconst useRestrictionsComboSystem = ({ betslipBetId }: Input): void => {\n const { dispatchRestrictions, state: restrictionsState } = useContext(\n RestrictionsContext\n );\n\n const { betslipBet, varsAndArgs } = usePureSelector((s: State) =>\n selectProps(s, { betslipBetId, restrictionsState })\n );\n\n const varsAndArgsMemo = useDeepMemo(varsAndArgs);\n\n const { status } =\n betslipBet ?? ({} as Partial);\n\n const isCanGetRestrictions = useMemo(() => {\n if (!status) return;\n\n return checkIsCanGetRestrictions(status);\n }, [status]);\n\n useEffect(() => {\n if (!varsAndArgsMemo || !isCanGetRestrictions) return;\n const { variables, args } = varsAndArgsMemo;\n\n dispatchRestrictions(getRestrictions(variables, args));\n\n appServiceLocator\n .get('apiClient')\n .makeRequest({\n method: 'getRestrictions',\n variables: { ...variables, ...args },\n })\n .then(({ data }) => {\n dispatchRestrictions({\n type: GET_RESTRICTION_SUCCESS,\n payload: {\n data: {\n restrictions: data.restrictions as View.Restriction[],\n },\n ...args,\n },\n });\n })\n .catch(error => {\n dispatchRestrictions({\n type: GET_RESTRICTION_FAIL,\n payload: {\n args,\n error,\n },\n });\n });\n }, [dispatchRestrictions, varsAndArgsMemo, isCanGetRestrictions]);\n};\n\nexport default useRestrictionsComboSystem;\n\nconst selectArgsAndVars = createSelector(\n selectOdds,\n selectBetslipBetWithStatus,\n (odds, betslipBet) => {\n if (!betslipBet) return;\n const { betslipOddIds, systemSize, mode, id } = betslipBet;\n\n return getExpressRestrictionsArgs({\n id,\n betType: mode,\n odds,\n betslipOddIds,\n systemSize,\n });\n }\n);\n\nconst selectProps = createStructuredSelector({\n betslipBet: selectBetslipBetWithStatus,\n varsAndArgs: selectArgsAndVars,\n});\n","import React from 'react';\n\nimport useRestrictionsComboSystem from './useRestrictionsComboSystem';\n\ninterface Props {\n betslipBetId: string;\n}\n\nconst RestrictionsComboSystem: React.FC = ({ betslipBetId }) => {\n useRestrictionsComboSystem({ betslipBetId });\n\n return null;\n};\n\nexport default React.memo(RestrictionsComboSystem);\n","import { useCallback, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport { Set } from 'immutable';\nimport { includes } from 'lodash';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport type { State } from 'types';\n\nconst {\n actions: { changeBetslipOddStake, changeBetslipBetStake },\n selectors: { selectBetslipBet, selectBetslipOdds },\n constants: { BETSLIP_ODD_STATUSES_TO_PLACE_BET },\n} = betslip;\n\ninterface Input {\n betslipBetId: string;\n}\n\ntype Output = (stake: string) => void;\n\nexport default function useChangeStake({ betslipBetId }: Input): Output {\n const dispatch = useDispatch();\n const props = useSelector((s: State) => selectProps(s, { betslipBetId }));\n\n const propsRef = useRef(props);\n propsRef.current = props;\n\n const changeStake = useCallback(\n (stake: string) => {\n const { betslipBet, betslipOddIdsToExclude } = propsRef.current;\n\n if (!betslipBet) return;\n\n const { betslipOddIds, id } = betslipBet;\n\n betslipOddIds\n .filterNot(betslipOddId =>\n betslipOddIdsToExclude.has(betslipOddId)\n )\n .forEach(betslipOddId => {\n dispatch(changeBetslipOddStake({ betslipOddId, stake }));\n });\n\n dispatch(changeBetslipBetStake({ betslipBetId: id, stake }));\n },\n [dispatch]\n );\n\n return changeStake;\n}\n\nconst selectBaseBetslipOddIdsToExclude = createSelector(\n selectBetslipBet,\n selectBetslipOdds,\n (betslipBet, betslipOdds) => {\n if (!betslipBet) return Set();\n\n return betslipBet.betslipOddIds.filter(betslipOddId => {\n const betslipOdd = betslipOdds.get(betslipOddId);\n\n if (!betslipOdd) return true;\n\n const { singleStatus } = betslipOdd;\n\n return !includes(BETSLIP_ODD_STATUSES_TO_PLACE_BET, singleStatus);\n });\n }\n);\n\nconst selectProps = createStructuredSelector({\n betslipBet: selectBetslipBet,\n betslipOddIdsToExclude: selectBaseBetslipOddIdsToExclude,\n});\n","import betslip from '@gin-betting/betslip';\nimport core, { GQL, View } from '@gin-betting/core';\nimport { Set } from 'immutable';\nimport { createSelector } from 'reselect';\n\nimport { SELECTOR_STUB } from 'app-constants';\nimport type { Modules } from 'async-modules';\n\nconst {\n selectors: { selectBetslipBet, selectBetslipOdds },\n} = betslip;\nconst {\n entities: {\n selectors: { selectBets },\n },\n} = core;\n\nexport const selectFirstBetslipOdd = createSelector(\n selectBetslipBet,\n selectBetslipOdds,\n (betslipBet, betslipOdds) => {\n if (!betslipBet) return;\n\n const betslipOddId = betslipBet.betslipOddIds.first();\n\n if (!betslipOddId) return;\n\n return betslipOdds.get(betslipOddId);\n }\n);\n\nexport const selectBetByFirstBetslipOdd = createSelector(\n selectFirstBetslipOdd,\n selectBets,\n (betslipOdd, bets): undefined | View.Bet => {\n if (!betslipOdd) return;\n\n const { betId } = betslipOdd;\n\n if (!betId) return;\n\n return bets.get(betId);\n }\n);\n\nexport const makeSelectIsFreebet = (\n freebetModule: Modules['freebet']['default'] | null\n) => {\n const selectBetslipFreebets =\n freebetModule?.selectors.selectBetslipFreebets ?? SELECTOR_STUB;\n\n return createSelector(\n selectBetslipBet,\n selectBetslipFreebets,\n (betslipBet, betslipFreebets): boolean => {\n if (!betslipBet || !betslipFreebets) return false;\n\n const { mode, betslipOddIds } = betslipBet;\n\n if (mode === GQL.BetType.SINGLE) {\n return betslipOddIds.some(betslipOddId => {\n const betslipFreebetId = Set([betslipOddId]);\n\n const betslipFreebet = betslipFreebets.get(\n betslipFreebetId\n );\n\n return !!betslipFreebet?.activeFreebetId;\n });\n }\n\n const betslipFreebet = betslipFreebets.get(betslipOddIds.toSet());\n\n return !!betslipFreebet?.activeFreebetId;\n }\n );\n};\n","import { useContext } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport betslip, { Betslip } from '@gin-betting/betslip';\nimport { App } from '@gin-betting/core';\nimport restrictions from '@gin-betting/restrictions';\nimport { createStructuredSelector } from 'reselect';\nimport type { Arg3 } from 'tsargs';\n\nimport { usePollingMinStake } from 'hooks';\nimport UserDevice from 'services/user-device';\nimport type { State } from 'types';\nimport { bindTrailingArgs } from 'utils';\nimport messages from '../messages';\nimport { RestrictionsContext } from '../restrictions';\nimport { selectBetByFirstBetslipOdd } from '../selectors';\n\nconst {\n selectors: { selectBetslipBetWithStatus, selectBetslipBetTotals },\n utils: { convertViewMaxStake, getErrorMsg: getErrorMsgByResponse },\n} = betslip;\n\nconst {\n selectors: { selectLowerMaxBetBetslipBet },\n} = restrictions;\n\ntype Output = {\n errorMsgs: Array;\n};\n\ninterface Input {\n betslipBetId: string;\n isFreebetSelected: boolean;\n}\n\nconst useExpressSystemErrors = ({\n betslipBetId,\n isFreebetSelected,\n}: Input): Output => {\n const errorMsgs: Array = [];\n const { state: restrictionsState } = useContext(RestrictionsContext);\n\n const { formatMessage } = useIntl();\n\n const { betslipBetWithStatus, maxBet, bet } = useSelector((state: State) =>\n selectProps(state, { betslipBetId, restrictionsState })\n );\n\n const { minStake } = usePollingMinStake();\n\n if (!betslipBetWithStatus) return { errorMsgs };\n\n const { status, stake } = betslipBetWithStatus;\n\n const maxStake = isFreebetSelected || !maxBet ? '' : maxBet;\n\n const finalTotalStake = +stake;\n\n const isMinStakeError =\n !isFreebetSelected &&\n !!finalTotalStake &&\n !!minStake &&\n finalTotalStake < minStake;\n const isMaxStakeError =\n !isFreebetSelected && maxStake !== '' && finalTotalStake > +maxStake;\n\n const isMaxLessMinStakeError =\n !isFreebetSelected && !!minStake && !!maxStake && +maxStake < minStake;\n\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n if (isMaxLessMinStakeError) {\n errorMsgs.push([\n `${formatMessage(messages.attention)}!`,\n formatMessage(messages.betslipOddsHasConflicts),\n ]);\n } else {\n if (isMinStakeError) {\n const minStakeError: string[] = [\n `${formatMessage(messages.stakeMinimalStakeIs)} ${minStake}`,\n ];\n\n if (!isMobile) {\n minStakeError.unshift(`${formatMessage(messages.attention)}!`);\n }\n\n errorMsgs.push(minStakeError);\n }\n\n if (isMaxStakeError) {\n const maxStakeError: string[] = [\n `${formatMessage(messages.errorMaxStake)} ${convertViewMaxStake(\n maxStake\n )}`,\n ];\n\n if (!isMobile) {\n maxStakeError.unshift(`${formatMessage(messages.attention)}!`);\n }\n\n errorMsgs.push(maxStakeError);\n }\n }\n\n if (status === App.BetslipStatus.ERROR) {\n errorMsgs.push([\n `${formatMessage(messages.attention)}!`,\n getErrorMsgByResponse(\n bet?.declineReason as Betslip.ErrorCodes | undefined,\n bindTrailingArgs(formatMessage, {\n host: window.location.host,\n }),\n messages as Arg3\n ),\n ]);\n }\n\n return {\n errorMsgs,\n };\n};\n\nconst selectProps = createStructuredSelector({\n betslipBetWithStatus: selectBetslipBetWithStatus,\n totals: selectBetslipBetTotals,\n maxBet: selectLowerMaxBetBetslipBet,\n bet: selectBetByFirstBetslipOdd,\n});\n\nexport default useExpressSystemErrors;\n","import React from 'react';\nimport { noop } from 'lodash';\n\nconst PlaceBetContext = React.createContext(noop);\n\nexport default PlaceBetContext;\n","import betslip from '@gin-betting/betslip';\nimport core, { API, App, GQL, View } from '@gin-betting/core';\nimport { OrderedSet } from 'immutable';\nimport { keys } from 'lodash';\n\nimport type { IntlMessageArgs } from 'types';\nimport { getByKey } from 'utils';\nimport {\n BetslipTimeManager,\n RESTRICTION_BLACK_LIST,\n RESTRICTION_BLACKLIST_BY_BETSLIP_STATUS,\n} from './constants';\nimport messages from './messages';\nimport type { IBetslipTimeManager } from './types';\n\nconst {\n utils: { getBettingOptions, getIdsFromBetslipOddId },\n} = core;\n\nconst {\n utils: { convertViewMaxStake },\n} = betslip;\n\ninterface ValidateStake {\n value: string;\n maxValue: number;\n}\n\nexport const validateStake = ({\n value,\n maxValue,\n}: ValidateStake): string | null => {\n let nextValue: string = value;\n const [int = '', fraction = ''] = value.split('.');\n\n nextValue = nextValue.replace(/,/g, '.');\n\n if (+nextValue > maxValue) {\n nextValue = convertViewMaxStake(`${maxValue}`);\n }\n\n if (fraction.length > 2) {\n nextValue = `${+int}.${fraction.slice(0, 2)}`;\n }\n\n if (+nextValue < 0) {\n return null;\n }\n\n if (!/^-?\\d+\\.?\\d*$/.test(nextValue) && nextValue !== '') {\n return null;\n }\n\n return nextValue;\n};\n\nexport const getRestrictionMessage = (\n restriction: View.Restriction\n): IntlMessageArgs => {\n switch (restriction.type) {\n // case (API.RestrictionType.max_bet):\n\n // return ({\n // type: API.RestrictionType.max_bet,\n // error: `max_bet error maxBet: ${restriction.maxBet}`,\n // };\n\n // case API.RestrictionType.bet_delay: {\n // return getSingleErrors(\n // restriction,\n // restrictionId,\n // `error delay: ${restriction.delay}`\n // );\n // }\n case API.RestrictionType.max_bet: {\n if (restriction.maxBet === 0) {\n return { descriptor: messages.maxBet };\n }\n\n return { descriptor: messages.error };\n }\n\n case API.RestrictionType.bet_type: {\n return {\n descriptor: messages.betType,\n };\n }\n\n case API.RestrictionType.bet_interval: {\n const { timeToWait } = restriction;\n\n return {\n descriptor: messages.betInterval,\n values: { timeToWait },\n };\n }\n\n case API.RestrictionType.selection_value: {\n return {\n descriptor: messages.selectionValue,\n };\n }\n\n case API.RestrictionType.sport_event_status: {\n return {\n descriptor: messages.sportEventStatus,\n };\n }\n\n case API.RestrictionType.sport_event_bet_stop: {\n return {\n descriptor: messages.bettingIsSuspended,\n };\n }\n\n case API.RestrictionType.sport_event_existence: {\n return {\n descriptor: messages.sportEventExistence,\n };\n }\n\n case API.RestrictionType.market_status: {\n return {\n descriptor: messages.marketStatus,\n };\n }\n\n case API.RestrictionType.market_existence: {\n return {\n descriptor: messages.marketExistence,\n };\n }\n\n case API.RestrictionType.market_defective: {\n return {\n descriptor: messages.marketDefective,\n };\n }\n\n case API.RestrictionType.odd_status: {\n return {\n descriptor: messages.oddStatus,\n };\n }\n\n case API.RestrictionType.odd_existence: {\n return {\n descriptor: messages.oddExistence,\n };\n }\n\n default: {\n return {\n descriptor: messages.error,\n };\n }\n }\n};\n\nexport const getRestrictionBlackList = (status: App.BetslipStatus) =>\n getByKey(RESTRICTION_BLACKLIST_BY_BETSLIP_STATUS, status) ??\n RESTRICTION_BLACK_LIST;\n\nexport const getPlaceBetMeta = (): GQL.PlaceBetMeta => {\n const { features } = getBettingOptions();\n\n if (typeof features !== 'object') return {};\n\n const featureFlags = Object.entries(features).map(([name, value]) => ({\n name,\n value: value.toString(),\n }));\n\n return {\n featureFlags,\n };\n};\n\nexport const getAnalyticOddsInfo = ({\n betslipOddIds,\n withClear,\n betId,\n}: {\n betslipOddIds: OrderedSet;\n withClear?: boolean;\n betId?: string;\n}): string | null => {\n const payload = betslipOddIds.reduce(\n (acc, betslipOddId) => {\n const time = BetslipTimeManager[betslipOddId];\n\n if (withClear) {\n delete BetslipTimeManager[betslipOddId];\n }\n\n if (typeof time === 'undefined') return acc;\n\n const { oddId } = getIdsFromBetslipOddId(betslipOddId);\n\n acc[oddId] = time;\n\n return acc;\n },\n {}\n );\n\n if (keys(payload).length === 0) return null;\n\n const result: {\n payload: IBetslipTimeManager;\n timestamp: number;\n betId?: string;\n } = { payload, timestamp: Date.now() };\n\n if (betId) {\n result.betId = betId;\n }\n\n return JSON.stringify(result);\n};\n","import { useCallback, useContext } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core, { API, App, GQL } from '@gin-betting/core';\nimport restrictions, { Restrictions } from '@gin-betting/restrictions';\nimport { difference, includes, isEmpty } from 'lodash';\nimport createCachedSelector from 're-reselect';\nimport { createSelector, createStructuredSelector } from 'reselect';\nimport type { Arg1 } from 'tsargs';\n\nimport {\n Destination,\n ENABLE_PLACE_BET_LOCALSTORAGE_KEY,\n EventType,\n SELECTOR_STUB,\n} from 'app-constants';\nimport { Modules, useAsyncModule } from 'async-modules';\nimport { useEventHandler, usePollingMinStake } from 'hooks';\nimport features from 'services/feature-manager';\nimport type { State } from 'types';\nimport { NOT_ENOUGH_BALANCE_REASON_LIST } from '../constants';\nimport PlaceBetContext from '../PlaceBetContext';\nimport { RestrictionsContext } from '../restrictions';\nimport { makeSelectIsFreebet } from '../selectors';\nimport { getPlaceBetMeta, getRestrictionBlackList } from '../utils';\n\ntype RestrictionsModule = typeof restrictions;\n\nconst {\n entities: {\n selectors: { selectBets },\n },\n utils: { getBettingOptions },\n} = core;\nconst {\n constants: { BETSLIP_ODD_STATUSES_TO_PLACE_BET },\n actions: { placeBet },\n selectors: {\n selectConflictBetslipOddIds,\n selectBetslipBet,\n selectBetslipOddsByChosenBetslipBet,\n selectBetslipBetIdFromProps,\n selectChosenBetslipBet,\n selectBetslipBetWithStatus,\n selectActiveBetslipOddIdsByBetslipBet,\n },\n} = betslip;\n\ninterface Input {\n betslipBetId: string;\n totalStake: number;\n}\n\nconst { isAuthorized } = getBettingOptions();\n\nconst selectMinStake = (_state: State, props: { minStake: number }): number =>\n props.minStake;\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst makeSelectIsAnyOddHaveError = ({\n selectors: { selectRestrictionsByBetslipBet },\n utils: { normalizeRestriction },\n}: RestrictionsModule) =>\n createCachedSelector(\n selectRestrictionsByBetslipBet,\n selectBetslipBetWithStatus,\n (restrictionsBet, betslipBet): boolean => {\n if (!betslipBet) return false;\n\n const { simpleRestrictions } = normalizeRestriction(\n restrictionsBet\n );\n\n const restrictionTypes = simpleRestrictions.map(r => r.type);\n const blacklist = getRestrictionBlackList(betslipBet.status);\n\n return difference(restrictionTypes, blacklist).length > 0;\n }\n )(selectBetslipBetIdFromProps);\n\nconst selectUnaffectedBetslipOddIds = createCachedSelector(\n selectChosenBetslipBet,\n selectBetslipOddsByChosenBetslipBet,\n selectActiveBetslipOddIdsByBetslipBet,\n selectMinStake,\n (betslipBet, betslipOdds, activeBetslipOddIds, minBet): string[] => {\n if (betslipBet?.mode !== GQL.BetType.SINGLE) {\n return [];\n }\n\n const unaffectedBetslipOddIds = betslipOdds.filter(\n ({ singleStake, singleStatus, id }) => {\n return (\n !activeBetslipOddIds.includes(id) ||\n +singleStake < minBet ||\n !includes(BETSLIP_ODD_STATUSES_TO_PLACE_BET, singleStatus)\n );\n }\n );\n\n return unaffectedBetslipOddIds.keySeq().toArray();\n }\n)(selectBetslipBetIdFromProps);\n\nconst selectIsAnyOddHaveNotEnoughBalance = createCachedSelector(\n selectBetslipOddsByChosenBetslipBet,\n selectBets,\n (betslipOdds, bets): boolean =>\n betslipOdds.some(({ betId }) => {\n if (!betId) return false;\n\n const bet = bets.get(betId);\n\n if (!bet) return false;\n\n return includes(NOT_ENOUGH_BALANCE_REASON_LIST, bet.declineReason);\n })\n)(selectBetslipBetIdFromProps);\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst makeSelectUnaffectedBetslipOddIds = ({\n selectors: { selectBetslipRestrictions },\n utils: { normalizeRestriction, getBetslipRestrictionId },\n}: RestrictionsModule) =>\n createCachedSelector(\n selectBetslipBetWithStatus,\n selectBetslipOddsByChosenBetslipBet,\n selectBetslipRestrictions,\n selectUnaffectedBetslipOddIds,\n (\n betslipBet,\n betslipOdds,\n betslipRestrictions,\n unaffectedBetslipOddIds\n ): string[] => {\n if (betslipBet?.mode !== GQL.BetType.SINGLE) {\n return [];\n }\n\n const extendedUnaffectedBetslipOdds = betslipOdds.filter(\n ({ singleStake, id: betslipOddId }) => {\n if (unaffectedBetslipOddIds.includes(betslipOddId)) {\n return true;\n }\n\n const betslipRestrictionsId = getBetslipRestrictionId(\n betslipOddId\n );\n\n const betslipOddRestriction = betslipRestrictions.get(\n betslipRestrictionsId\n );\n\n if (!betslipOddRestriction) return false;\n\n const {\n maxBetRestriction,\n simpleRestrictions,\n } = normalizeRestriction(betslipOddRestriction);\n\n const blackList = getRestrictionBlackList(\n betslipBet.status\n );\n\n const restrictionErrors = simpleRestrictions.filter(\n ({ type }) =>\n !includes(\n [\n ...blackList,\n API.RestrictionType.selection_value,\n ],\n type\n )\n );\n\n if (restrictionErrors.length > 0) {\n return true;\n }\n\n return (\n maxBetRestriction &&\n +singleStake > maxBetRestriction.maxBet\n );\n }\n );\n\n return extendedUnaffectedBetslipOdds.keySeq().toArray();\n }\n )(selectBetslipBetIdFromProps);\n\ninterface Output {\n placeBetHandler: VoidFn;\n isDisabled: boolean;\n isAuthorized: boolean;\n isNeedDeposit: boolean;\n authHandler: VoidFn;\n onKeyDown: (e: React.KeyboardEvent) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst makeSelectIsMinMaxBetError = (restrictionsModule: RestrictionsModule) => {\n const {\n selectors: { selectBetslipRestrictions },\n } = restrictionsModule;\n\n const getRestrictionsAndCheckMaxStake = makeGetRestrictionsAndCheckMaxStake(\n restrictionsModule\n );\n\n return createSelector(\n selectBetslipBet,\n selectBetslipOddsByChosenBetslipBet,\n selectBetslipRestrictions,\n selectMinStake,\n (betslipBet, betslipOdds, betslipRestrictions, minStake): boolean => {\n if (!betslipBet) return false;\n\n const { mode, stake, betslipOddIds } = betslipBet;\n\n if ([GQL.BetType.SYSTEM, GQL.BetType.EXPRESS].includes(mode)) {\n return (\n getRestrictionsAndCheckMaxStake(\n betslipRestrictions,\n betslipOddIds,\n stake\n ) ||\n (!isEmpty(stake) && +stake < minStake)\n );\n }\n\n if (mode === GQL.BetType.SINGLE) {\n return betslipOdds.every(\n ({ singleStake, id }) =>\n getRestrictionsAndCheckMaxStake(\n betslipRestrictions,\n id,\n singleStake\n ) ||\n (!isEmpty(singleStake) && +singleStake < minStake)\n );\n }\n\n return false;\n }\n );\n};\n\nconst makeSelectProps = ({\n restrictionsModule,\n freebetModule,\n}: {\n restrictionsModule: RestrictionsModule | null;\n freebetModule: Modules['freebet']['default'] | null;\n}) => {\n const selectIsMinMaxBetError = restrictionsModule\n ? makeSelectIsMinMaxBetError(restrictionsModule)\n : SELECTOR_STUB;\n const selectIsAnyOddHaveError = restrictionsModule\n ? makeSelectIsAnyOddHaveError(restrictionsModule)\n : SELECTOR_STUB;\n\n const selectExtendedUnaffectedBetslipOddIds = restrictionsModule\n ? makeSelectUnaffectedBetslipOddIds(restrictionsModule)\n : selectUnaffectedBetslipOddIds;\n\n return createStructuredSelector({\n betslipBet: selectBetslipBetWithStatus,\n conflictBetslipOddIds: selectConflictBetslipOddIds,\n unaffectedBetslipOddIds: selectExtendedUnaffectedBetslipOddIds,\n isMinMaxBetError: selectIsMinMaxBetError,\n isAnyOddHaveError: selectIsAnyOddHaveError,\n isAnyOddHaveNotEnoughBalance: selectIsAnyOddHaveNotEnoughBalance,\n activeBetslipOddIdsByBetslipBet: selectActiveBetslipOddIdsByBetslipBet,\n isFreebetActive: makeSelectIsFreebet(freebetModule),\n });\n};\n\nconst usePlaceBet = ({ totalStake, betslipBetId }: Input): Output => {\n const dispatch = useDispatch();\n const placeBetCallback = useContext(PlaceBetContext);\n const { state: restrictionsState } = useContext(RestrictionsContext);\n const { minStake } = usePollingMinStake();\n const freebetModule = useAsyncModule('freebet');\n\n const selectProps = makeSelectProps({\n restrictionsModule: restrictions,\n freebetModule,\n });\n\n const {\n dispatchBettingEvent: dispatchRedirectBettingEvent,\n isEventAvailable: isRedirectEventAvailable,\n } = useEventHandler({\n eventType: EventType.Redirect,\n });\n\n const {\n dispatchBettingEvent: dispatchNotEnoughBalanceBettingEvent,\n isEventAvailable: isNotEnoughBalanceEventAvailable,\n } = useEventHandler({\n eventType: EventType.HandleNotEnoughBalance,\n });\n\n const {\n betslipBet,\n conflictBetslipOddIds,\n unaffectedBetslipOddIds,\n isMinMaxBetError,\n isAnyOddHaveError,\n isAnyOddHaveNotEnoughBalance,\n activeBetslipOddIdsByBetslipBet,\n isFreebetActive,\n } = useSelector((state: State) =>\n selectProps(state, { betslipBetId, restrictionsState, minStake })\n );\n\n const checkIsDisabled = (): boolean => {\n if (\n localStorage.getItem(ENABLE_PLACE_BET_LOCALSTORAGE_KEY) ||\n isFreebetActive\n ) {\n return false;\n }\n\n if (!isAuthorized || !betslipBet) return false;\n\n const { betslipOddIds, mode, systemSize, status } = betslipBet;\n\n if (\n [GQL.BetType.SYSTEM, GQL.BetType.EXPRESS].includes(mode) &&\n (status === App.BetslipStatus.SUCCESS ||\n conflictBetslipOddIds.length > 0 ||\n isAnyOddHaveError ||\n !betslipOddIds.equals(activeBetslipOddIdsByBetslipBet))\n ) {\n return true;\n }\n\n const isAllBetslipOddsUnaffected =\n betslipOddIds.size === unaffectedBetslipOddIds.length;\n\n if (\n betslipOddIds.size === 0 ||\n isMinMaxBetError ||\n totalStake <= 0 ||\n isAllBetslipOddsUnaffected\n ) {\n return true;\n }\n\n if (mode === GQL.BetType.SYSTEM) {\n return systemSize.length === 0;\n }\n\n return false;\n };\n\n const isDisabled = checkIsDisabled();\n\n const isBetNotEditable =\n !!betslipBet &&\n !includes(BETSLIP_ODD_STATUSES_TO_PLACE_BET, betslipBet.status);\n\n const isRefillModal = features.isActive(\n features.list.BetslipRefillBalanceModal\n );\n\n const isNeedDeposit =\n isAnyOddHaveNotEnoughBalance && isBetNotEditable && isDisabled;\n\n const placeBetHandler = useCallback(() => {\n if (isNeedDeposit && !isRefillModal) {\n if (isNotEnoughBalanceEventAvailable) {\n dispatchNotEnoughBalanceBettingEvent({});\n } else {\n // fallback\n window.location.href = '#!/player/profile-deposit';\n }\n\n return;\n }\n\n if (isDisabled) return;\n\n dispatch(\n placeBet({\n unaffectedBetslipOddIds:\n localStorage.getItem(ENABLE_PLACE_BET_LOCALSTORAGE_KEY) ||\n isFreebetActive\n ? []\n : unaffectedBetslipOddIds,\n stakeMode: GQL.StakeMode.total,\n meta: getPlaceBetMeta(),\n })\n );\n placeBetCallback();\n }, [\n isDisabled,\n dispatch,\n isFreebetActive,\n unaffectedBetslipOddIds,\n placeBetCallback,\n ]);\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n placeBetHandler();\n }\n },\n [placeBetHandler]\n );\n\n const authHandler = useCallback(() => {\n if (isRedirectEventAvailable) {\n dispatchRedirectBettingEvent({\n destination: Destination.Login,\n link: '',\n });\n } else {\n // fallback\n window.location.href = '#!/auth/signin?popup';\n }\n }, [isRedirectEventAvailable, dispatchRedirectBettingEvent]);\n\n return {\n placeBetHandler,\n isDisabled,\n isAuthorized,\n isNeedDeposit,\n authHandler,\n onKeyDown,\n };\n};\n\nexport default usePlaceBet;\n\nfunction makeGetRestrictionsAndCheckMaxStake({\n utils: { getBetslipRestrictionId, checkIsMaxBetError },\n}: RestrictionsModule) {\n return (\n betslipRestrictions: Restrictions.RestrictionsState['betslipRestrictions'],\n betslipOddIds: Arg1,\n stake: string\n ) => {\n const betslipRestrictionId = getBetslipRestrictionId(betslipOddIds);\n const betslipRestriction = betslipRestrictions.get(\n betslipRestrictionId\n );\n\n if (!betslipRestriction) return false;\n\n return checkIsMaxBetError(betslipRestriction, stake);\n };\n}\n","import { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\n\nimport { State } from 'types';\n\nconst {\n selectors: { selectChosenBetslipBetId },\n} = betslip;\n\ninterface Output {\n betslipBetId: string | null;\n}\n\nconst useSelectBetslipBetId = (): Output => {\n const betslipBetId = useSelector((s: State) => selectChosenBetslipBetId(s));\n\n return { betslipBetId };\n};\n\nexport default useSelectBetslipBetId;\n","import { useCallback, useEffect, useState } from 'react';\nimport betslip from '@gin-betting/betslip';\nimport { GQL } from '@gin-betting/core';\nimport { sortBy, toNumber } from 'lodash';\n\nimport { DEFAULT_MAX_STAKE } from 'app-constants';\nimport { usePollingMinStake } from 'hooks';\nimport features from 'services/feature-manager';\nimport UserDevice from 'services/user-device';\nimport { getCurrency } from 'utils';\nimport { INPUT_VARIANT_COUNT } from '../constants';\n\nconst {\n utils: { getSuggests },\n} = betslip;\n\ninterface Input {\n maxStake: string;\n skip?: boolean;\n}\n\ninterface Output {\n suggests: number[];\n isDefaultSuggests: boolean;\n}\n\nconst shouldAddMaxBet = features.isActive(\n features.list.BetslipStakeSuggesterByCurrency\n);\n\nexport default function useSuggests({ maxStake, skip }: Input): Output {\n const { minStake } = usePollingMinStake();\n const [suggests, setSuggests] = useState(null);\n const maxBet = maxStake ? +maxStake : DEFAULT_MAX_STAKE;\n\n useEffect(() => {\n if (skip) {\n return;\n }\n\n if (maxBet === DEFAULT_MAX_STAKE) {\n setSuggests(null);\n\n return;\n }\n\n if (!minStake) return;\n\n const algorithm = shouldAddMaxBet\n ? GQL.StakeSuggesterAlgorithm.BY_CURRENCY_2\n : UserDevice.getInstance()?.isDeviceMobile()\n ? GQL.StakeSuggesterAlgorithm.BY_CURRENCY\n : GQL.StakeSuggesterAlgorithm.BY_MAX_BET;\n\n getSuggests({\n maxStake: `${maxBet}`,\n minStake: `${minStake}`,\n count: INPUT_VARIANT_COUNT,\n algorithm,\n })\n .then(s => setSuggests(s.map(i => toNumber(i))))\n .catch(err => {\n console.error(err);\n });\n }, [maxBet, skip, minStake]);\n\n const getSortedBetVariants = useCallback(() => {\n const { betVariants: bVariants } = getCurrency();\n\n return [\n ...sortBy(bVariants.filter(i => i < +maxBet)).slice(\n 0,\n INPUT_VARIANT_COUNT - 1\n ),\n +maxBet,\n ];\n }, [maxBet]);\n\n const betVariants = suggests || getSortedBetVariants();\n\n const suggestsWithMaxStake: typeof suggests =\n maxStake && shouldAddMaxBet ? [...betVariants, maxBet] : betVariants;\n\n return {\n suggests: suggestsWithMaxStake,\n isDefaultSuggests: !suggests,\n };\n}\n","import { useContext, useEffect, useMemo, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core, { GQL } from '@gin-betting/core';\nimport restrictions from '@gin-betting/restrictions';\nimport { last, max, min, noop } from 'lodash';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { Modules, useAsyncModule } from 'async-modules';\nimport { useDidUpdate, useLastBetSum, usePollingMinStake } from 'hooks';\nimport type { State } from 'types';\nimport { DEFAULT_VARIANT_POSITION } from '../constants';\nimport { RestrictionsContext } from '../restrictions';\nimport { makeSelectIsFreebet, selectFirstBetslipOdd } from '../selectors';\nimport useChangeStake from './useChangeStake';\nimport useSuggests from './useSuggests';\n\nconst {\n selectors: { selectLowerMaxBetBetslipBet },\n} = restrictions;\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nconst {\n selectors: { selectBetslipBet },\n} = betslip;\n\ninterface Input {\n betslipBetId: string;\n}\n\nexport default function useSetDefaultStake({ betslipBetId }: Input): void {\n const { state: restrictionsState } = useContext(RestrictionsContext);\n\n const { isLoaded, lastBetSum } = useLastBetSum();\n const { minStake: minBet } = usePollingMinStake();\n const freebetModule = useAsyncModule('freebet');\n\n const selectProps = useMemo(() => makeSelectProps(freebetModule), [\n freebetModule,\n ]);\n\n const {\n maxBet,\n stake,\n betslipBet,\n isFreebet,\n } = useSelector((state: State) =>\n selectProps(state, { betslipBetId, restrictionsState })\n );\n const { suggests, isDefaultSuggests } = useSuggests({\n maxStake: `${maxBet}`,\n });\n\n const changeStake = useChangeStake({ betslipBetId });\n\n const isStakeGreaterThanMaxBet = !!maxBet && +stake > +maxBet;\n\n const hasLastBet = !isLoaded || !!lastBetSum;\n const firstBetslipOddId = betslipBet?.betslipOddIds.first();\n\n const setDefaultStakeRef = useRef(noop);\n setDefaultStakeRef.current = () => {\n if (!firstBetslipOddId || isFreebet) return;\n\n if (isStakeGreaterThanMaxBet) {\n changeStake(maxBet);\n\n return;\n }\n\n if (stake) return;\n\n if (lastBetSum) {\n const lastOrMax = maxBet ? min([lastBetSum, +maxBet]) : lastBetSum;\n\n changeStake(`${max([lastOrMax, minBet])}`);\n\n return;\n }\n\n const { isAuthorized } = getBettingOptions();\n\n if (isAuthorized && isDefaultSuggests) return;\n\n const defaultSuggest =\n suggests[DEFAULT_VARIANT_POSITION] || last(suggests);\n\n if (defaultSuggest === undefined) return;\n\n changeStake(`${defaultSuggest}`);\n };\n\n useEffect(() => {\n if (!firstBetslipOddId) return;\n\n setDefaultStakeRef.current();\n }, [firstBetslipOddId]);\n\n useDidUpdate(() => {\n if (!hasLastBet || !isLoaded) return;\n\n setDefaultStakeRef.current();\n }, [isLoaded, hasLastBet]);\n\n useDidUpdate(() => {\n if (hasLastBet) return;\n\n setDefaultStakeRef.current();\n }, [isDefaultSuggests, hasLastBet]);\n\n useDidUpdate(() => {\n if (!isStakeGreaterThanMaxBet) return;\n\n setDefaultStakeRef.current();\n }, [isStakeGreaterThanMaxBet]);\n}\n\nconst selectStake = createSelector(\n selectBetslipBet,\n selectFirstBetslipOdd,\n (betslipBet, betslipOdd) => {\n if (!betslipBet) return '';\n\n const { stake, mode } = betslipBet;\n\n if ([GQL.BetType.EXPRESS, GQL.BetType.SYSTEM].includes(mode)) {\n return stake;\n }\n\n return betslipOdd?.singleStake || '';\n }\n);\n\nconst makeSelectProps = (freebetModule: Modules['freebet']['default'] | null) =>\n createStructuredSelector({\n maxBet: selectLowerMaxBetBetslipBet,\n stake: selectStake,\n betslipBet: selectBetslipBet,\n isFreebet: makeSelectIsFreebet(freebetModule),\n });\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { floor } from 'lodash';\n\nimport { Currency } from 'components';\nimport globalMessages from 'messages';\n\nimport './betDetails.scss';\n\nexport enum TotalType {\n stake = 'stake',\n odd = 'odd',\n}\n\ninterface Props {\n total: number | string | JSX.Element;\n totalType: TotalType;\n totalWin: number;\n error?: string[];\n}\n\nfunction formatTotal(v: number | string | JSX.Element) {\n if (typeof v !== 'number') return v;\n\n return floor(v, 2);\n}\n\nconst mappingMsg = {\n [TotalType.stake]: globalMessages.totalStake,\n [TotalType.odd]: globalMessages.totalOdd,\n};\n\nconst BetDetails: React.FC = ({ total, totalType, totalWin, error }) => {\n const { formatMessage } = useIntl();\n const suffix = totalType === TotalType.stake && ;\n\n return (\n
\n {error ? (\n
{error}
\n ) : (\n
\n
\n {formatMessage(mappingMsg[totalType])}\n
\n
\n {formatTotal(total)}\n {suffix}\n
\n
\n )}\n
\n
\n {formatMessage(globalMessages.totalWin)}\n
\n
\n {formatTotal(totalWin)}\n \n
\n
\n
\n );\n};\n\nexport default BetDetails;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { Amount, Input } from 'ui-lib';\nimport messages from '../../messages';\nimport useBetslipStakeInput from './useBetslipStakeInput';\n\nimport './betslipStakeInput.scss';\n\ninterface Props {\n value: string;\n changeValue: (stake: string) => void;\n isDisabled?: boolean;\n maxStake: string;\n onKeyDown?: InputEl['onKeyDown'];\n}\n\nconst BetslipStakeInput: React.FC = ({\n maxStake,\n changeValue,\n value,\n isDisabled,\n onKeyDown,\n}) => {\n const {\n setStake,\n stakes,\n onBlur,\n onFocus,\n isInputFocused,\n } = useBetslipStakeInput({\n maxStake,\n changeValue,\n value,\n });\n\n const { formatMessage } = useIntl();\n\n return (\n
\n \n
\n {stakes.map((stake, idx) => {\n const isSelected = value === `${stake}`;\n\n return (\n \n isSelected\n ? changeValue('')\n : changeValue(`${stake}`)\n }\n >\n {stake === +maxStake\n ? formatMessage(messages.maxButton)\n : stake}\n \n );\n })}\n
\n
\n );\n};\n\nexport default BetslipStakeInput;\n","import { useCallback, useState } from 'react';\nimport { last } from 'lodash';\n\nimport { useSuggests } from '../../hooks';\nimport { validateStake } from '../../utils';\n\ninterface Input {\n value: string;\n changeValue: (stake: string) => void;\n maxStake: string;\n}\n\ninterface Output {\n setStake: InputEl['onChange'];\n stakes: number[];\n onFocus: VoidFn;\n onBlur: InputEl['onBlur'];\n isInputFocused: boolean;\n}\n\nexport default function useBetslipStakeInput({\n value,\n changeValue,\n maxStake,\n}: Input): Output {\n const { suggests } = useSuggests({\n maxStake,\n });\n\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n const onFocus = useCallback(() => {\n setIsInputFocused(true);\n changeValue('');\n }, [changeValue]);\n\n const onBlur = useCallback(() => {\n setIsInputFocused(false);\n }, []);\n\n const maxValue = last(suggests);\n\n const setStake: InputEl['onChange'] = useCallback(\n e => {\n const { value: currValue } = e.currentTarget;\n\n const nextValue = validateStake({\n value: currValue,\n maxValue: Number(maxValue),\n });\n\n if (nextValue == null || value === nextValue) return;\n\n changeValue(nextValue);\n },\n [maxValue, value, changeValue]\n );\n\n return {\n setStake,\n stakes: suggests,\n isInputFocused,\n onFocus,\n onBlur,\n };\n}\n","import React from 'react';\nimport { isArray } from 'lodash';\n\nimport './error.scss';\n\ninterface Props {\n messages: string | Array | React.ReactNode[];\n}\n\nconst Error: React.FC = ({ messages }) => {\n const msgs = isArray(messages) ? messages : [messages];\n\n const resultMsgs = msgs.map(subMsgs =>\n isArray(subMsgs) ? subMsgs : [subMsgs]\n );\n\n return (\n
\n {resultMsgs.map((item, idx) => (\n
\n {item.map((msg, msgIdx) => (\n {`${msg} `}\n ))}\n
\n ))}\n
\n );\n};\n\nexport default React.memo(Error);\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport cn from 'classnames';\n\nimport { Currency, Icon } from 'components';\nimport globalMsgs from 'messages';\nimport UserDevice from 'services/user-device';\nimport { usePlaceBet } from '../../hooks';\nimport messages from '../../messages';\n\nimport freeBetIcon from 'assets/svg/freebet.svg';\nimport './placeBet.scss';\n\ninterface Props {\n betslipBetId: string;\n totalStake: number;\n isFreebetActive?: boolean;\n}\n\nconst PlaceBet: React.FC = ({\n betslipBetId,\n totalStake,\n isFreebetActive,\n}) => {\n const { formatMessage } = useIntl();\n const {\n isAuthorized,\n isDisabled,\n isNeedDeposit,\n placeBetHandler,\n authHandler,\n } = usePlaceBet({\n betslipBetId,\n totalStake,\n });\n\n const styleName = cn('container', {\n 'is-disabled': isDisabled && !isNeedDeposit,\n 'is-freebet': isFreebetActive,\n });\n\n const placeBtnMessage = isNeedDeposit\n ? globalMsgs.deposit\n : isFreebetActive\n ? globalMsgs.freebet\n : globalMsgs.placeBet;\n\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n return isAuthorized ? (\n \n {isFreebetActive && }\n {formatMessage(placeBtnMessage)}\n {((isMobile && !isNeedDeposit) || isFreebetActive) && (\n
\n {totalStake.toFixed(2)}\n \n
\n )}\n \n ) : (\n \n {formatMessage(messages.signInBet)}\n \n );\n};\n\nexport default PlaceBet;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\nimport cd from 'debug';\nimport { floor } from 'lodash';\n\nimport { Currency } from 'components';\nimport globalMessages from 'messages';\nimport PlaceBet from '../../PlaceBet';\n\nimport './totalRow.scss';\n\nconst debug = cd('app:betslip:components:TotalRow');\nconst { getCurrency } = core.utils;\n\ninterface OwnProps {\n totalStake: number;\n totalPotentialWin: number;\n betslipBetId: string;\n totalOdd?: number | string | JSX.Element;\n withPlus?: boolean;\n isFreebetSelected?: boolean;\n}\n\nconst { maxPotentialWin } = getCurrency();\n\nconst TotalRow: React.FC = props => {\n debug('render', props);\n\n const {\n totalStake,\n totalPotentialWin,\n totalOdd,\n betslipBetId,\n withPlus,\n isFreebetSelected,\n } = props;\n\n const isExceededLimits = totalPotentialWin > maxPotentialWin;\n\n return (\n
\n {totalOdd !== undefined && (\n
\n
\n :\n
\n
\n {withPlus && 'x'}\n {totalOdd}\n
\n
\n )}\n {!isFreebetSelected && (\n
\n
\n :\n
\n
\n {floor(totalStake, 2)}\n \n
\n
\n )}\n\n {props.children}\n\n
\n
\n :\n
\n \n {isExceededLimits\n ? maxPotentialWin\n : floor(totalPotentialWin, 2)}\n \n
\n
\n\n \n \n );\n};\n\nexport default TotalRow;\n","import { useCallback, useContext, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport { App, GQL } from '@gin-betting/core';\nimport restrictions from '@gin-betting/restrictions';\nimport { createStructuredSelector } from 'reselect';\n\nimport { Modules, useAsyncModule } from 'async-modules';\nimport ui from 'modules/ui';\nimport type { State } from 'types';\nimport { formatDecimalOdd } from 'utils';\nimport {\n useChangeStake,\n useExpressSystemErrors,\n usePlaceBet,\n} from '../../../hooks';\nimport { RestrictionsContext } from '../../../restrictions';\nimport { makeSelectIsFreebet } from '../../../selectors';\n\nconst {\n selectors: { selectBetslipBetWithStatus, selectBetslipBetTotals },\n} = betslip;\nconst {\n selectors: { selectOddFormat },\n} = ui;\n\nconst {\n selectors: { selectLowerMaxBetBetslipBet },\n} = restrictions;\n\ntype Output = {\n changeStakeHandler: (stake: string) => void;\n toggleFreeBetHandler: (amount: string | null) => void;\n totals: ReturnType;\n maxStake: string;\n errorMsgs: Array;\n betType: GQL.BetType;\n betslipOddIds: string[];\n isSuspended: boolean;\n formattedTotalOdd: ReturnType['component'];\n isDecimal: boolean;\n isFreebetSelected: boolean;\n stake: string;\n onKeyDown: (e: React.KeyboardEvent) => void;\n} | null;\n\ninterface Input {\n betslipBetId: string;\n}\n\nconst useExpressPart = ({ betslipBetId }: Input): Output => {\n const { state: restrictionsState } = useContext(RestrictionsContext);\n const freebetModule = useAsyncModule('freebet');\n const selectProps = useMemo(() => makeSelectProps(freebetModule), [\n freebetModule,\n ]);\n const changeStakeHandler = useChangeStake({ betslipBetId });\n const {\n betslipBetWithStatus,\n totals,\n maxBet,\n oddFormat,\n isFreebet,\n } = useSelector((state: State) =>\n selectProps(state, { betslipBetId, restrictionsState })\n );\n\n const { errorMsgs } = useExpressSystemErrors({\n betslipBetId,\n isFreebetSelected: isFreebet,\n });\n\n const toggleFreeBetHandler = useCallback(\n (amount: string | null) => {\n changeStakeHandler(amount || '');\n },\n [changeStakeHandler]\n );\n\n if (!betslipBetWithStatus) return null;\n\n const {\n mode: betType,\n status,\n stake,\n betslipOddIds,\n } = betslipBetWithStatus;\n\n const { onKeyDown } = usePlaceBet({\n totalStake: +stake,\n betslipBetId,\n });\n\n const maxStake = isFreebet || !maxBet ? '' : maxBet;\n const { totalOdd } = totals;\n\n const { component: formattedTotalOdd } = formatDecimalOdd(\n totalOdd || 0,\n oddFormat\n );\n\n const isProcessing = status === App.BetslipStatus.PROCESSING;\n const isSuccess = status === App.BetslipStatus.SUCCESS;\n const isSuspended = isProcessing || isSuccess;\n const isDecimal = oddFormat === App.OddFormat.Decimal;\n\n return {\n changeStakeHandler,\n toggleFreeBetHandler,\n totals,\n maxStake,\n errorMsgs,\n betType,\n betslipOddIds: betslipOddIds.toArray(),\n isSuspended,\n formattedTotalOdd,\n isDecimal,\n isFreebetSelected: isFreebet,\n stake,\n onKeyDown,\n };\n};\n\nconst makeSelectProps = (\n freebetModule: Modules['freebet']['default'] | null\n) => {\n return createStructuredSelector({\n betslipBetWithStatus: selectBetslipBetWithStatus,\n totals: selectBetslipBetTotals,\n maxBet: selectLowerMaxBetBetslipBet,\n oddFormat: selectOddFormat,\n isFreebet: makeSelectIsFreebet(freebetModule),\n });\n};\n\nexport default useExpressPart;\n","import React from 'react';\n\nimport { AsyncBetslipFreebet } from 'modules/freebet/async';\nimport BetslipStakeInput from '../../BetslipStakeInput';\nimport Error from '../../Error';\nimport TotalRow from '../TotalRow';\nimport useExpressPart from './useExpressPart';\n\nimport './expressPart.scss';\n\ninterface Props {\n betslipBetId: string;\n}\n\nconst ExpressPart: React.FC = ({ betslipBetId }) => {\n const props = useExpressPart({ betslipBetId });\n\n if (!props) return null;\n\n const {\n errorMsgs,\n changeStakeHandler,\n stake,\n maxStake,\n isFreebetSelected,\n formattedTotalOdd,\n isDecimal,\n toggleFreeBetHandler,\n betslipOddIds,\n betType,\n isSuspended,\n totals: { totalStake, totalWin },\n onKeyDown,\n } = props;\n\n return (\n
\n {errorMsgs.length > 0 && }\n \n {!isFreebetSelected && (\n \n )}\n \n
\n );\n};\n\nexport default React.memo(ExpressPart);\n","import React, { Fragment, memo } from 'react';\n\nimport { AsyncBetslipFreebet } from 'modules/freebet/async';\nimport BetslipStakeInput from '../../BetslipStakeInput';\nimport Error from '../../Error';\nimport PlaceBet from '../../PlaceBet';\nimport BetDetails, { TotalType } from '../BetDetails';\nimport useExpressPart from './useExpressPart';\n\nimport './expressPartMob.scss';\n\ninterface Props {\n betslipBetId: string;\n}\n\nconst ExpressPartMob: React.FC = ({ betslipBetId }) => {\n const props = useExpressPart({ betslipBetId });\n\n if (!props) return null;\n\n const {\n changeStakeHandler,\n maxStake,\n formattedTotalOdd,\n totals: { totalStake, totalWin },\n isFreebetSelected,\n errorMsgs,\n toggleFreeBetHandler,\n betslipOddIds,\n betType,\n isSuspended,\n stake,\n } = props;\n\n return (\n \n \n {errorMsgs.length > 0 && (\n
\n \n
\n )}\n \n \n \n {!isFreebetSelected && (\n \n )}\n\n \n \n \n
\n );\n};\n\nexport default memo(ExpressPartMob);\n","import { useContext, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport { App } from '@gin-betting/core';\nimport restrictions from '@gin-betting/restrictions';\nimport { createStructuredSelector } from 'reselect';\n\nimport { Modules, useAsyncModule } from 'async-modules';\nimport type { State } from 'types';\nimport { useChangeStake, usePlaceBet } from '../../../hooks';\nimport { RestrictionsContext } from '../../../restrictions';\nimport { makeSelectIsFreebet, selectFirstBetslipOdd } from '../../../selectors';\n\nconst {\n selectors: { selectBetslipBetWithStatus, selectBetslipBetTotals },\n} = betslip;\nconst {\n selectors: { selectLowerMaxBetBetslipBet },\n} = restrictions;\n\ninterface Input {\n betslipBetId: string;\n}\n\ninterface Output {\n singleStake: string;\n isFreebet: boolean;\n totals: ReturnType;\n maxStake: string;\n changeStakeHandler: (stake: string) => void;\n isSuspended: boolean;\n betslipOddIds: string[];\n onKeyDown: (e: React.KeyboardEvent) => void;\n}\n\nconst useSinglePart = ({ betslipBetId }: Input): Output => {\n const freebetModule = useAsyncModule('freebet');\n const changeStakeHandler = useChangeStake({ betslipBetId });\n\n const { state: restrictionsState } = useContext(RestrictionsContext);\n const selectProps = useMemo(() => makeSelectProps(freebetModule), [\n freebetModule,\n ]);\n const {\n betslipOdd,\n totals,\n betslipBetWithStatus,\n maxBet,\n isFreebet,\n } = useSelector((state: State) =>\n selectProps(state, { betslipBetId, restrictionsState })\n );\n\n const maxStake = maxBet || '';\n const status = betslipBetWithStatus?.status;\n const isProcessing = status === App.BetslipStatus.PROCESSING;\n const isSuccess = status === App.BetslipStatus.SUCCESS;\n const isSuspended = isProcessing || isSuccess;\n const betslipOddIds = betslipBetWithStatus?.betslipOddIds;\n\n const singleStake = betslipOdd?.singleStake || '';\n\n const { onKeyDown } = usePlaceBet({\n totalStake: +singleStake,\n betslipBetId,\n });\n\n return {\n changeStakeHandler,\n maxStake,\n singleStake,\n isFreebet,\n totals,\n isSuspended,\n betslipOddIds: betslipOddIds?.toArray() ?? [],\n onKeyDown,\n };\n};\n\nconst makeSelectProps = (\n freebetModule: Modules['freebet']['default'] | null\n) => {\n return createStructuredSelector({\n betslipOdd: selectFirstBetslipOdd,\n totals: selectBetslipBetTotals,\n maxBet: selectLowerMaxBetBetslipBet,\n isFreebet: makeSelectIsFreebet(freebetModule),\n betslipBetWithStatus: selectBetslipBetWithStatus,\n });\n};\n\nexport default useSinglePart;\n","import React from 'react';\nimport { GQL } from '@gin-betting/core';\n\nimport { AsyncBetslipFreebet } from 'modules/freebet/async';\nimport BetslipStakeInput from '../../BetslipStakeInput';\nimport TotalRow from '../TotalRow';\nimport useSinglePart from './useSinglePart';\n\ninterface Props {\n betslipBetId: string;\n}\n\nconst SinglePart: React.FC = ({ betslipBetId }) => {\n const {\n singleStake,\n totals: { totalWin },\n maxStake,\n changeStakeHandler,\n isFreebet,\n betslipOddIds,\n isSuspended,\n onKeyDown,\n } = useSinglePart({ betslipBetId });\n\n return (\n \n \n {!isFreebet && (\n \n )}\n \n \n );\n};\n\nexport default React.memo(SinglePart);\n","import React from 'react';\nimport { GQL } from '@gin-betting/core';\n\nimport { AsyncBetslipFreebet } from 'modules/freebet/async';\nimport BetslipStakeInput from '../../BetslipStakeInput';\nimport PlaceBet from '../../PlaceBet';\nimport BetDetails, { TotalType } from '../BetDetails';\nimport useSinglePart from './useSinglePart';\n\nimport './singlePartMob.scss';\n\ninterface Props {\n betslipBetId: string;\n button?: JSX.Element;\n}\n\nconst SinglePartMob: React.FC = ({ betslipBetId, button }) => {\n const {\n singleStake,\n isFreebet,\n totals: { totalWin },\n maxStake,\n changeStakeHandler,\n betslipOddIds,\n isSuspended,\n } = useSinglePart({ betslipBetId });\n\n return (\n \n \n \n {!isFreebet && (\n \n )}\n \n
\n \n {button}\n
\n \n
\n );\n};\n\nexport default React.memo(SinglePartMob);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\nimport cd from 'debug';\nimport { compose } from 'redux';\nimport { createSelector } from 'reselect';\n\nimport { CheckBox } from 'components';\nimport messages from '../../../messages';\n\nimport './CheckListItem.scss';\n\nconst {\n hocs: { withPure, withPropsValidation },\n} = core;\nconst {\n selectors: { selectCombinations },\n} = betslip;\nconst {\n actions: { toggleSystemCombination },\n} = betslip;\n\nconst debug = cd('app:betslip:components:CheckListItem');\n\ninterface OwnProps {\n combinationNumber: number;\n betslipBetId: string;\n}\n\ninterface MappedActions {\n toggleSystemCombination: typeof toggleSystemCombination;\n}\n\ninterface MappedProps {\n betslipOddsSize: number | undefined;\n isChosen: boolean | undefined;\n}\n\ntype RawProps = OwnProps & MappedProps & MappedActions;\ntype Props = RawProps & {\n betslipOddsSize: number;\n isChosen: boolean;\n};\n\nclass CheckListItem extends React.Component {\n handleSelect = () => {\n const { combinationNumber, betslipBetId } = this.props;\n\n this.props.toggleSystemCombination({ betslipBetId, combinationNumber });\n };\n\n render() {\n debug('render', this.props);\n\n const { combinationNumber, isChosen, betslipOddsSize } = this.props;\n\n return (\n \n \n \n
\n \n {' '}\n \n {combinationNumber} / {betslipOddsSize}\n \n \n
\n \n \n );\n }\n}\n\nconst makeMapStateToProps = () => {\n return createSelector(selectCombinations, viewInfo => ({\n betslipOddsSize: undefined,\n combinations: undefined,\n isChosen: undefined,\n ...viewInfo,\n }));\n};\n\nconst mapDispatchToProps = {\n toggleSystemCombination,\n};\n\nexport default compose>(\n connect(\n makeMapStateToProps,\n mapDispatchToProps\n ),\n withPure,\n withPropsValidation(['betslipOddsSize', 'combinations', 'isChosen'])\n)(CheckListItem);\n","import React, { Fragment } from 'react';\nimport Scrollbars from 'react-custom-scrollbars';\nimport { FormattedMessage } from 'react-intl';\nimport { times } from 'lodash';\n\nimport UserDevice from 'services/user-device';\nimport messages from '../../messages';\nimport CheckListItem from './CheckListItem';\n\nimport './combinations.scss';\n\ninterface Props {\n betslipBetId: string;\n betslipOddsSize: number;\n closeBtn?: JSX.Element;\n}\n\nconst Combinations: React.FC = ({\n betslipOddsSize,\n betslipBetId,\n closeBtn,\n}) => {\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n const Wr = isMobile ? Fragment : Scrollbars;\n\n let height: string | undefined;\n\n if (!isMobile) {\n // TODO: remove hardcode\n // height = `${(betslipOddsSize - 2) * 46}px`;\n height = `${138}px`;\n }\n\n return (\n \n
\n \n {closeBtn}\n
\n \n {betslipOddsSize > 10 ? (\n
\n \n
\n ) : (\n \n {times(betslipOddsSize)\n .slice(2)\n .map(index => (\n \n ))}\n \n )}\n \n
\n );\n};\n\nexport default React.memo(Combinations);\n","import { useContext } from 'react';\nimport { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport restrictions from '@gin-betting/restrictions';\nimport { createStructuredSelector } from 'reselect';\n\nimport type { State } from 'types';\nimport {\n useChangeStake,\n useExpressSystemErrors,\n usePlaceBet,\n} from '../../../hooks';\nimport { RestrictionsContext } from '../../../restrictions';\n\nconst {\n selectors: { selectBetslipBetWithStatus, selectBetslipBetTotals },\n utils: { getNumberCombinations },\n} = betslip;\n\nconst {\n selectors: { selectLowerMaxBetBetslipBet },\n} = restrictions;\n\ninterface Input {\n betslipBetId: string;\n}\n\ntype Output = {\n changeStakeHandler: (stake: string) => void;\n betslipOddsSize: number;\n stake: string;\n errorMsgs: Array;\n finalTotalWin: number;\n finalTotalStake: number;\n maxStakeForInput: string;\n onKeyDown: (e: React.KeyboardEvent) => void;\n} | null;\n\nconst useSystemPart = ({ betslipBetId }: Input): Output => {\n const { errorMsgs } = useExpressSystemErrors({\n betslipBetId,\n isFreebetSelected: false,\n });\n const changeStakeHandler = useChangeStake({ betslipBetId });\n const { state: restrictionsState } = useContext(RestrictionsContext);\n\n const {\n totals,\n betslipBetWithStatus,\n maxBet,\n } = useSelector((state: State) =>\n selectProps(state, { betslipBetId, restrictionsState })\n );\n\n if (!betslipBetWithStatus) return null;\n\n const { betslipOddIds, stake, systemSize } = betslipBetWithStatus;\n\n const maxStake = !maxBet ? '' : maxBet;\n const { totalWin } = totals;\n\n const betslipOddsSize = betslipOddIds.count();\n\n const finalTotalStake = +stake;\n\n const { onKeyDown } = usePlaceBet({\n totalStake: finalTotalStake,\n betslipBetId,\n });\n\n const numberCombinations = getNumberCombinations(systemSize, betslipOddIds);\n\n const maxStakeForInput = maxStake && numberCombinations ? maxStake : '';\n\n const finalTotalWin = numberCombinations\n ? totalWin / numberCombinations\n : totalWin;\n\n return {\n changeStakeHandler,\n betslipOddsSize,\n stake,\n errorMsgs,\n finalTotalStake,\n finalTotalWin,\n maxStakeForInput,\n onKeyDown,\n };\n};\n\nconst selectProps = createStructuredSelector({\n betslipBetWithStatus: selectBetslipBetWithStatus,\n totals: selectBetslipBetTotals,\n maxBet: selectLowerMaxBetBetslipBet,\n});\n\nexport default useSystemPart;\n","import React from 'react';\n\nimport BetslipStakeInput from '../../BetslipStakeInput';\nimport Combinations from '../../Combinations';\nimport Error from '../../Error';\nimport TotalRow from '../TotalRow';\nimport useSystemPart from './useSystemPart';\n\nimport './systemPart.scss';\n\ninterface Props {\n betslipBetId: string;\n}\n\nconst SystemPart: React.FC = ({ betslipBetId }) => {\n const props = useSystemPart({ betslipBetId });\n\n if (!props) return null;\n\n const {\n betslipOddsSize,\n stake,\n changeStakeHandler,\n errorMsgs,\n finalTotalStake,\n finalTotalWin,\n maxStakeForInput,\n onKeyDown,\n } = props;\n\n return (\n
\n {errorMsgs.length > 0 && }\n \n \n \n
\n );\n};\n\nexport default React.memo(SystemPart);\n","import React, { Fragment, memo, useCallback, useMemo, useState } from 'react';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport BetslipStakeInput from '../../BetslipStakeInput';\nimport Combinations from '../../Combinations';\nimport Error from '../../Error';\nimport PlaceBet from '../../PlaceBet';\nimport BetDetails, { TotalType } from '../BetDetails';\nimport useSystemPart from './useSystemPart';\n\nimport arrowLeft from 'assets/svg/arrow-left.svg';\nimport close from 'assets/svg/close-video.svg';\nimport './systemPartMob.scss';\n\ninterface Props {\n betslipBetId: string;\n}\n\nconst SystemPartMob: React.FC = ({ betslipBetId }) => {\n const [isOpen, setIsOpen] = useState(true);\n const toggle = useCallback(() => {\n setIsOpen(i => !i);\n }, []);\n const props = useSystemPart({ betslipBetId });\n\n const closeBtn = useMemo(\n () => ,\n [toggle]\n );\n\n if (!props) return null;\n\n const {\n changeStakeHandler,\n betslipOddsSize,\n finalTotalStake,\n finalTotalWin,\n errorMsgs,\n maxStakeForInput,\n stake,\n } = props;\n\n return (\n \n \n {errorMsgs.length > 0 && (\n
\n \n
\n )}\n {isOpen && (\n
\n \n
\n )}\n \n
\n \n
\n \n \n \n \n \n
\n );\n};\n\nexport default memo(SystemPartMob);\n","import React from 'react';\nimport { GQL } from '@gin-betting/core';\nimport cn from 'classnames';\nimport cd from 'debug';\n\nimport UserDevice from 'services/user-device';\nimport RestrictionsComboSystem from '../RestrictionsComboSystem';\nimport ExpressPartDesk, { ExpressPartMob } from './ExpressPart';\nimport SinglePartDesk, { SinglePartMob } from './SinglePart';\nimport SystemPartDesk, { SystemPartMob } from './SystemPart';\n\nimport './betslipFooter.scss';\n\nconst debug = cd('app:betslip:components:BetslipFooter');\n\nconst isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\nconst SinglePart = isMobile ? SinglePartMob : SinglePartDesk;\nconst ExpressPart = isMobile ? ExpressPartMob : ExpressPartDesk;\nconst SystemPart = isMobile ? SystemPartMob : SystemPartDesk;\n\ninterface Props {\n betslipBetId: string;\n mode: GQL.BetType;\n isDisabled: boolean;\n}\n\nconst BetslipFooter: React.FC = props => {\n debug('render', props);\n\n const { mode, betslipBetId, isDisabled } = props;\n\n return (\n
\n \n {mode === GQL.BetType.SINGLE && (\n \n )}\n\n {mode === GQL.BetType.EXPRESS && (\n \n \n \n \n )}\n\n {mode === GQL.BetType.SYSTEM && (\n \n \n \n \n )}\n
\n \n );\n};\n\nexport default BetslipFooter;\n","import { useContext, useEffect, useMemo } from 'react';\nimport type { Betslip } from '@gin-betting/betslip';\nimport betslip from '@gin-betting/betslip';\nimport core, { GQL, View } from '@gin-betting/core';\nimport restrictions from '@gin-betting/restrictions';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { usePureSelector } from 'hooks';\nimport type { State } from 'types';\nimport { RestrictionsContext } from '../../restrictions';\n\nconst {\n entities: {\n selectors: { selectOdds },\n },\n hooks: { useDeepMemo },\n appServiceLocator,\n} = core;\n\nconst {\n selectors: { selectBetslipOddIdFromProps, selectBetslipOdd },\n utils: { getBetSystemSizes },\n} = betslip;\n\nconst {\n actions: { getRestrictions },\n utils: { getRestrictionsSelection, checkIsCanGetRestrictions },\n constants: { GET_RESTRICTION_SUCCESS, GET_RESTRICTION_FAIL },\n} = restrictions;\n\ninterface Input {\n betslipBetId: string;\n betslipOddId: string;\n}\n\nconst useRestrictionsSingle = ({ betslipBetId, betslipOddId }: Input): void => {\n const { dispatchRestrictions, state: restrictionsState } = useContext(\n RestrictionsContext\n );\n\n const { selection, betslipOdd } = usePureSelector((s: State) =>\n selectProps(s, { betslipBetId, betslipOddId, restrictionsState })\n );\n\n const { singleStatus } = betslipOdd || ({} as Partial);\n\n const varsMemo = useDeepMemo(() => {\n if (!selection) return;\n\n return {\n selections: [selection],\n betType: GQL.BetType.SINGLE,\n systemSizes: getBetSystemSizes({\n betType: GQL.BetType.SINGLE,\n }),\n };\n }, [selection]);\n\n const argsMemo = useMemo(() => {\n return {\n betType: GQL.BetType.SINGLE,\n betslipBetId,\n betslipOddIds: [betslipOddId],\n };\n }, [betslipBetId, betslipOddId]);\n\n const isCanGetRestrictions = useMemo(() => {\n if (!singleStatus) return;\n\n return checkIsCanGetRestrictions(singleStatus);\n }, [singleStatus]);\n\n useEffect(() => {\n if (!isCanGetRestrictions || !varsMemo || !argsMemo) return;\n\n dispatchRestrictions(getRestrictions(varsMemo, argsMemo));\n\n appServiceLocator\n .get('apiClient')\n .makeRequest({\n method: 'getRestrictions',\n variables: { ...varsMemo, ...argsMemo },\n })\n .then(({ data }) => {\n dispatchRestrictions({\n type: GET_RESTRICTION_SUCCESS,\n payload: {\n data: {\n restrictions: data.restrictions as View.Restriction[],\n },\n ...argsMemo,\n },\n });\n })\n .catch(error => {\n dispatchRestrictions({\n type: GET_RESTRICTION_FAIL,\n payload: {\n args: argsMemo,\n error,\n },\n });\n });\n }, [\n varsMemo,\n argsMemo,\n isCanGetRestrictions,\n dispatchRestrictions,\n betslipOddId,\n ]);\n};\n\nexport default useRestrictionsSingle;\n\nconst selectSelection = createSelector(\n selectOdds,\n selectBetslipOddIdFromProps,\n (odds, betslipOddId) => getRestrictionsSelection(betslipOddId, odds)\n);\n\nconst selectProps = createStructuredSelector({\n betslipOdd: selectBetslipOdd,\n selection: selectSelection,\n});\n","import React from 'react';\n\nimport useRestrictionsSingle from './useRestrictionsSingle';\n\ninterface Props {\n betslipBetId: string;\n betslipOddId: string;\n}\n\nconst RestrictionsSingle: React.FC = ({\n betslipBetId,\n betslipOddId,\n}) => {\n useRestrictionsSingle({ betslipBetId, betslipOddId });\n\n return null;\n};\n\nexport default React.memo(RestrictionsSingle);\n","import React from 'react';\nimport core from '@gin-betting/core';\n\nimport { Icon } from 'components';\nimport { convertNameToRuLocale } from 'utils';\n\nimport liveLabelGlyph from 'assets/svg/live-label.svg';\nimport './matchDetails.scss';\n\nconst {\n utils: { format },\n} = core;\n\ninterface Props {\n title: string;\n startTime: string;\n isLive: boolean;\n}\n\n// => 01 October, 18:00\nconst FORMAT_DATE = 'dd MMMM, HH:mm';\n\nconst MatchDetails: React.FC = ({ title, startTime, isLive }) => {\n const convertedTitle = convertNameToRuLocale(title);\n\n const date = format(startTime, FORMAT_DATE);\n\n return (\n
\n \n {convertedTitle}\n
\n\n \n {isLive ? (\n \n ) : (\n date\n )}\n \n \n );\n};\n\nexport default MatchDetails;\n","import React from 'react';\nimport { View } from '@gin-betting/core';\nimport cd from 'debug';\n\nimport { convertNameToRuLocale } from 'utils';\n\nimport './oddDetails.scss';\n\nconst debug = cd('app:betslip:components:OddDetails');\n\ninterface OwnProps {\n marketName: View.Market['name'];\n oddName: View.Odd['name'];\n}\n\ntype Props = OwnProps;\n\nconst OddDetails: React.FC = ({ oddName, marketName }) => {\n debug('render');\n\n const convertedTitle = convertNameToRuLocale(oddName);\n\n return (\n
\n \n {convertedTitle}\n
\n \n {marketName}\n \n \n );\n};\n\nexport default OddDetails;\n","import React from 'react';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport UserDevice from 'services/user-device';\nimport messages from '../../../messages';\n\nimport autorenew from 'assets/svg/autorenew.svg';\nimport check from 'assets/svg/check.svg';\nimport chevron from 'assets/svg/chevron.svg';\nimport cancel from 'assets/svg/close-video.svg';\nimport './oddIcon.scss';\n\nconst glyphMapping: {\n [k in keyof typeof App.BetslipStatus]: any;\n} = {\n [App.BetslipStatus.INITIAL]: cancel,\n [App.BetslipStatus.ERROR]: cancel,\n [App.BetslipStatus.PROCESSING]: autorenew,\n [App.BetslipStatus.SUCCESS]: UserDevice.getInstance()?.isDeviceMobile()\n ? chevron\n : check,\n};\n\nconst iconTitleMapping: {\n [k in keyof typeof App.BetslipStatus]: MessageDescriptor;\n} = {\n [App.BetslipStatus.INITIAL]: messages.deleteOdd,\n [App.BetslipStatus.ERROR]: messages.deleteOdd,\n [App.BetslipStatus.PROCESSING]: messages.inProcessing,\n [App.BetslipStatus.SUCCESS]: messages.completed,\n};\n\ninterface Props {\n status: App.BetslipStatus;\n clickHandler: () => void;\n}\n\nconst OddIcon: React.FC = ({ status, clickHandler }) => {\n const { formatMessage } = useIntl();\n\n const iconGlyph = glyphMapping[status];\n const iconTitle = formatMessage(iconTitleMapping[status]);\n\n const isProcessing = status === App.BetslipStatus.PROCESSING;\n const isSuccess = status === App.BetslipStatus.SUCCESS;\n\n return (\n \n );\n};\n\nexport default OddIcon;\n","import React from 'react';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { CompareStatus } from 'app-constants';\nimport { Icon } from 'components';\nimport { useCompare } from 'hooks';\nimport { formatDecimalOdd } from 'utils';\n\nimport arrow from 'assets/svg/arrow.svg';\nimport './oddValue.scss';\n\ninterface Props {\n value: number;\n oddFormat: App.OddFormat;\n}\n\nconst OddValue: React.FC = ({ value, oddFormat }) => {\n const { compareStatus } = useCompare({ value });\n const { component } = formatDecimalOdd(value, oddFormat);\n\n const isStatic = compareStatus === CompareStatus.Equal;\n const isIncreased = compareStatus === CompareStatus.Greater;\n const isDecreased = compareStatus === CompareStatus.Smaller;\n\n return (\n \n {component}\n {!isStatic && }\n \n );\n};\n\nexport default OddValue;\n","import React, { useCallback, useContext, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport betslip, { Betslip } from '@gin-betting/betslip';\nimport core, { App, GQL, View } from '@gin-betting/core';\nimport restrictionsModule from '@gin-betting/restrictions';\nimport { includes } from 'lodash';\nimport { createSelector } from 'reselect';\nimport type { Arg3 } from 'tsargs';\n\nimport { useAsyncModule } from 'async-modules';\nimport { usePollingMinStake } from 'hooks';\nimport ui from 'modules/ui';\nimport type { State } from 'types';\nimport { Modules } from 'types';\nimport { bindTrailingArgs } from 'utils';\nimport messages from '../../messages';\nimport { RestrictionsContext } from '../../restrictions';\nimport { makeSelectIsFreebet } from '../../selectors';\nimport { getRestrictionBlackList, getRestrictionMessage } from '../../utils';\nimport { ValidOddProps } from './useValidOddProps';\n\nconst {\n entities: {\n selectors: { selectCachedBet },\n },\n utils: { checkIsBetslipOddActive },\n} = core;\n\nconst {\n utils: { getErrorMsg: getErrorMsgByResponse, convertViewMaxStake },\n actions: { deleteBetslipOdd },\n selectors: { selectIsBetslipOddConflict },\n constants: { BETSLIP_ODD_STATUSES_TO_PLACE_BET },\n} = betslip;\n\nconst {\n selectors: { selectOddFormat },\n} = ui;\n\nconst {\n selectors: { selectFilteredRestrictionsByOddId },\n utils: { normalizeRestriction },\n} = restrictionsModule;\n\ninterface Input extends ValidOddProps {\n isLast: boolean;\n}\n\ntype Output = {\n clickOddIconHandler: VoidFn;\n oddFormat: ReturnType;\n isLocked: boolean;\n marketName: string;\n oddName: string;\n oddValue: number;\n errorMsgs: Array | React.ReactNode[];\n hasError: boolean;\n};\n\nconst useOdd = ({\n isLast,\n betslipOdd,\n betslipBet,\n market,\n match,\n odd,\n}: Input): Output => {\n const {\n id: betslipOddId,\n singleStatus: betslipStatus,\n fixedCoef,\n betId,\n } = betslipOdd;\n\n const isEditable = includes(\n BETSLIP_ODD_STATUSES_TO_PLACE_BET,\n betslipStatus\n );\n\n const hasErrorStatus = betslipStatus === App.BetslipStatus.ERROR;\n\n const { name: marketName, status: marketStatus } = market;\n\n const { status, disabled, betStop } = match;\n\n const { id: betslipBetId, mode, betslipOddIds } = betslipBet;\n const isSingle = mode === GQL.BetType.SINGLE;\n\n const betslipRestrictionsId = restrictionsModule?.utils.getBetslipRestrictionId(\n isSingle ? betslipOddId : betslipOddIds\n );\n\n const {\n id: oddId,\n value: oddValue,\n name: oddName,\n status: oddStatus,\n isActive: isActiveOdd,\n } = odd;\n\n const dispatch = useDispatch();\n\n const { minStake } = usePollingMinStake();\n const { state: restrictionsState } = useContext(RestrictionsContext);\n\n const freebetModule = useAsyncModule('freebet');\n\n const selectProps = useMemo(() => makeSelectProps(freebetModule), [\n freebetModule,\n ]);\n const {\n oddFormat,\n maxBet,\n restrictionErrors,\n isBetslipOddConflict,\n bet,\n isFreebet,\n } = useSelector((state: State) =>\n selectProps(state, {\n betslipOddId,\n betslipBetId,\n betslipRestrictionsId,\n oddId,\n betslipStatus,\n betId,\n restrictionsState,\n })\n );\n const { formatMessage } = useIntl();\n\n const maxStake = isFreebet ? '' : maxBet;\n\n const handleDeleteBetslipOdd = useCallback(() => {\n dispatch(\n deleteBetslipOdd({\n oddId,\n betslipBetId,\n })\n );\n }, [dispatch, oddId, betslipBetId]);\n\n const clickOddIconHandler = useCallback(() => {\n if (!isEditable) return;\n\n handleDeleteBetslipOdd();\n }, [isEditable, handleDeleteBetslipOdd]);\n\n const isOddActive = checkIsBetslipOddActive(\n status,\n disabled,\n marketStatus,\n oddStatus,\n isActiveOdd,\n betStop\n );\n\n const isLocked = !isOddActive && isEditable;\n\n const oddValueOrTicketCoef = (!isEditable && fixedCoef) || oddValue;\n\n const { errorMsgs, hasError } = getErrorMsgsAndStatus({\n betslipOdd,\n hasErrorStatus,\n isBetslipOddConflict,\n isSingle,\n isLast,\n isFreebet,\n maxStake,\n errorMessages: getRestrictionMessages(restrictionErrors, formatMessage),\n formatMessage,\n isLocked,\n declineReason: bet?.declineReason,\n minStake,\n });\n\n return {\n clickOddIconHandler,\n isLocked,\n marketName,\n oddName,\n oddValue: oddValueOrTicketCoef,\n hasError,\n errorMsgs,\n oddFormat,\n };\n};\n\nconst selectBetslipStatusFromProps = (\n _: State,\n { betslipStatus }: { betslipStatus: App.BetslipStatus }\n) => betslipStatus;\n\nconst selectRestrictions = createSelector(\n selectFilteredRestrictionsByOddId,\n selectBetslipStatusFromProps,\n (restrictions, betslipStatus) => {\n const { maxBetRestriction, simpleRestrictions } = normalizeRestriction(\n restrictions\n );\n\n const blackList = getRestrictionBlackList(betslipStatus);\n\n const restrictionErrors = simpleRestrictions.filter(\n r => !includes(blackList, r.type)\n );\n\n return {\n maxBet: maxBetRestriction?.maxBet.toString() ?? '',\n restrictionErrors,\n };\n }\n);\n\nconst makeSelectProps = (freebetModule: Modules['freebet']['default'] | null) =>\n createSelector(\n selectIsBetslipOddConflict,\n selectRestrictions,\n selectOddFormat,\n selectCachedBet,\n makeSelectIsFreebet(freebetModule),\n (isBetslipOddConflict, restrictions, oddFormat, bet, isFreebet) => {\n const { maxBet, restrictionErrors } = restrictions || {\n maxBet: '',\n restrictionErrors: [],\n };\n\n return {\n isBetslipOddConflict,\n maxBet,\n restrictionErrors,\n oddFormat,\n bet,\n isFreebet,\n };\n }\n );\n\ninterface Params {\n isLast: boolean;\n hasErrorStatus: boolean;\n isBetslipOddConflict: boolean;\n isSingle: boolean;\n isFreebet: boolean;\n maxStake: string;\n errorMessages: Array;\n formatMessage: ReturnType['formatMessage'];\n betslipOdd: ValidOddProps['betslipOdd'];\n isLocked: boolean;\n declineReason: string | undefined;\n minStake: number;\n}\n\nfunction getRestrictionMessages(\n restrictionErrors: View.Restriction[],\n formatMessage: ReturnType['formatMessage']\n) {\n return restrictionErrors.map(restriction => {\n const { descriptor, values } = getRestrictionMessage(restriction);\n\n return formatMessage(descriptor, values);\n });\n}\n\nfunction getErrorMsgsAndStatus({\n betslipOdd,\n hasErrorStatus,\n isBetslipOddConflict,\n isSingle,\n isLast,\n isFreebet,\n maxStake,\n errorMessages,\n formatMessage,\n isLocked,\n declineReason,\n minStake,\n}: Params) {\n if (!includes(BETSLIP_ODD_STATUSES_TO_PLACE_BET, betslipOdd.singleStatus)) {\n return {\n errorMsgs: [],\n hasError: false,\n };\n }\n\n return hasErrorStatus && !!errorMessages.length\n ? {\n errorMsgs: errorMessages,\n hasError: hasErrorStatus,\n }\n : getErrorsFromStakeValue({\n betslipOdd,\n hasErrorStatus,\n isBetslipOddConflict,\n isSingle,\n isLast,\n isFreebet,\n maxStake,\n errorMessages,\n formatMessage,\n isLocked,\n declineReason,\n minStake,\n });\n}\n\nfunction getErrorsFromStakeValue({\n isLast,\n betslipOdd: { singleStake },\n hasErrorStatus,\n isBetslipOddConflict,\n isSingle,\n isFreebet,\n maxStake,\n errorMessages,\n formatMessage,\n isLocked,\n declineReason,\n minStake,\n}: Params) {\n const errorMsgs: Array = [];\n\n const isMaxStakeError =\n isSingle && maxStake !== '' && +singleStake > +maxStake;\n\n const isMinStakeError =\n isSingle &&\n !isFreebet &&\n !!+singleStake &&\n !!minStake &&\n +singleStake < minStake;\n\n const isMaxLessMinStakeError =\n isSingle && !!minStake && maxStake !== '' && +maxStake < minStake;\n\n const hasError =\n hasErrorStatus ||\n isBetslipOddConflict ||\n isMaxStakeError ||\n isMinStakeError ||\n isMaxLessMinStakeError ||\n isLocked;\n\n if (hasErrorStatus && isSingle) {\n errorMsgs.push([\n `${formatMessage(messages.attention)}!`,\n getErrorMsgByResponse(\n declineReason as Betslip.ErrorCodes | undefined,\n bindTrailingArgs(formatMessage, {\n host: window.location.host,\n }),\n messages as Arg3\n ),\n ]);\n }\n\n if (!isMaxLessMinStakeError) {\n if (isMinStakeError) {\n errorMsgs.push(\n `${formatMessage(messages.stakeMinimalStakeIs)} ${minStake}`\n );\n }\n\n if (isMaxStakeError) {\n errorMsgs.push(\n `${formatMessage(messages.errorMaxStake)} ${convertViewMaxStake(\n maxStake\n )}`\n );\n }\n }\n\n if (!isFreebet) {\n errorMessages.forEach(error => {\n errorMsgs.push([\n `${formatMessage(messages.attention)}!`,\n `${error}`,\n ]);\n });\n }\n\n if (isBetslipOddConflict && isLast) {\n errorMsgs.push([\n `${formatMessage(messages.attention)}!`,\n formatMessage(messages.betslipOddsHasConflicts),\n ]);\n }\n\n if (isMaxLessMinStakeError) {\n errorMsgs.push([\n `${formatMessage(messages.attention)}!`,\n formatMessage(messages.maxBet),\n ]);\n }\n\n if (isLocked) {\n errorMsgs.push([\n `${formatMessage(messages.attention)}!`,\n formatMessage(messages.oddStatus),\n ]);\n }\n\n return { errorMsgs, hasError };\n}\n\nexport default useOdd;\n","import betslip from '@gin-betting/betslip';\nimport core from '@gin-betting/core';\nimport { createSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n entities: {\n selectors: {\n makeMatchSelector,\n makeMarketSelector,\n selectOdd,\n selectMarketIdFromProps,\n },\n },\n utils: { getIdsFromBetslipOddId },\n} = core;\n\nconst {\n selectors: { selectBetslipBet, selectBetslipOdd },\n} = betslip;\n\nconst matchPropsToPick = [\n 'id' as const,\n 'status' as const,\n 'title' as const,\n 'startTime' as const,\n 'disabled' as const,\n 'betStop' as const,\n];\n\nconst marketPropsToPick = ['name' as const, 'status' as const];\n\nconst selectMatch = makeMatchSelector({\n propsToPick: matchPropsToPick,\n});\nconst selectMarket = makeMarketSelector({\n propsToPick: marketPropsToPick,\n selectMarketId: selectMarketIdFromProps,\n});\n\ninterface Input {\n betslipOddId: string;\n}\n\ntype Output = {\n betslipOdd: NonNullable>;\n betslipBet: NonNullable>;\n odd: NonNullable>;\n market: NonNullable>;\n match: NonNullable>;\n} | null;\n\nexport type ValidOddProps = NonNullable>;\n\nconst selectProps = createSelector(\n selectBetslipOdd,\n selectBetslipBet,\n selectOdd,\n selectMarket,\n selectMatch,\n (betslipOdd, betslipBet, odd, market, match) => {\n if (!betslipOdd || !match || !market || !odd || !betslipBet) {\n return null;\n }\n\n return {\n betslipOdd,\n betslipBet,\n odd,\n market,\n match,\n };\n }\n);\n\nconst useValidOddProps = ({ betslipOddId }: Input): Output => {\n const { matchId, marketId, oddId, betslipBetId } = getIdsFromBetslipOddId(\n betslipOddId\n );\n\n return useMemoSelector(selectProps, {\n betslipOddId,\n betslipBetId,\n oddId,\n marketId,\n matchId,\n });\n};\n\nexport default useValidOddProps;\n","import React from 'react';\nimport betslip from '@gin-betting/betslip';\nimport { App, GQL } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { includes } from 'lodash';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport { Icon } from 'components';\nimport Error from '../Error';\nimport RestrictionsSingle from '../RestrictionsSingle';\nimport MatchDetails from './MatchDetails';\nimport OddDetails from './OddDetails';\nimport OddIcon from './OddIcon';\nimport OddValue from './OddValue';\nimport useOdd from './useOdd';\nimport useValidOddProps, { ValidOddProps } from './useValidOddProps';\n\nimport lock from 'assets/svg/lock.svg';\nimport './odd.scss';\n\nconst {\n constants: { BETSLIP_ODD_STATUSES_TO_PLACE_BET },\n} = betslip;\n\ninterface PassProps {\n isLast: boolean;\n isFirst: boolean;\n}\n\ninterface Props extends PassProps {\n betslipOddId: string;\n}\n\ninterface OddProps extends ValidOddProps, PassProps {}\n\nconst Odd: React.FC = ({\n isLast,\n isFirst,\n betslipOdd,\n betslipBet,\n odd,\n market,\n match,\n}) => {\n const {\n oddFormat,\n clickOddIconHandler,\n isLocked,\n marketName,\n oddName,\n hasError,\n oddValue,\n errorMsgs,\n } = useOdd({\n betslipOdd,\n betslipBet,\n odd,\n market,\n match,\n isLast,\n });\n\n const { singleStatus, id: betslipOddId } = betslipOdd;\n\n const { mode, id } = betslipBet;\n\n const { status, title, startTime } = match;\n\n const isSingle = mode === GQL.BetType.SINGLE;\n\n const isLiveMatch = LIVE_SPORTEVENT_STATUSES.includes(status);\n\n const isProcessing = singleStatus === App.BetslipStatus.PROCESSING;\n const isSuccess = singleStatus === App.BetslipStatus.SUCCESS;\n\n const isEditable = includes(\n BETSLIP_ODD_STATUSES_TO_PLACE_BET,\n singleStatus\n );\n const isSuspended = isProcessing || isSuccess;\n\n const isTicket = isSingle && !isEditable;\n\n const isShowIcon = isSingle || !isSuspended;\n\n return (\n \n \n {(isFirst || isTicket) && (\n \n )}\n
\n \n\n \n\n {isShowIcon && (\n \n )}\n
\n {isLocked && (\n
\n \n
\n )}\n \n {isSingle && (\n \n )}\n {errorMsgs.length > 0 && }\n
\n );\n};\n\nconst OddValidationProps: React.FC = ({\n betslipOddId,\n isLast,\n isFirst,\n}) => {\n const validOdd = useValidOddProps({ betslipOddId });\n\n if (!validOdd) return null;\n\n const { betslipOdd, betslipBet, odd, market, match } = validOdd;\n\n return (\n \n );\n};\n\nexport default OddValidationProps;\n","import React from 'react';\nimport { OrderedSet } from 'immutable';\n\nimport { GROUP_OF_ODDS_CLASS } from '../../../constants';\nimport Odd from '../../Odd';\n\nimport './groupOfOdds.scss';\n\ninterface Props {\n betslipOddIds: OrderedSet;\n isLastGroup: boolean;\n}\n\nconst GroupOfOdds: React.FC = ({ betslipOddIds, isLastGroup }) => {\n const firstBetslipOddId = betslipOddIds.first();\n const lastBetslipOddId = betslipOddIds.last();\n\n return (\n
\n {betslipOddIds.map(betslipOddId => {\n const isFirst = betslipOddId === firstBetslipOddId;\n const isLast = betslipOddId === lastBetslipOddId;\n\n return (\n \n );\n })}\n
\n );\n};\n\nexport default React.memo(GroupOfOdds);\n","import React, { Fragment } from 'react';\nimport Scrollbars from 'react-custom-scrollbars';\nimport cn from 'classnames';\nimport { OrderedSet, Seq } from 'immutable';\n\nimport UserDevice from 'services/user-device';\nimport GroupOfOdds from './GroupOfOdds';\n\nimport './body.scss';\n\ninterface Props {\n betslipOddIdsGroup: Seq.Indexed<[string, OrderedSet]>;\n}\n\nconst Body: React.FC = ({ betslipOddIdsGroup }) => {\n const withCustomScrollbars = !UserDevice.getInstance()?.isDeviceMobile();\n const Wrapper = withCustomScrollbars ? Scrollbars : Fragment;\n\n const groupSize = betslipOddIdsGroup.count();\n\n return (\n \n \n {betslipOddIdsGroup.map(\n ([matchId, groupBetslipOddIds], idx) => (\n \n )\n )}\n \n \n );\n};\n\nexport default React.memo(Body);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { GQL } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport globalMessages from 'messages';\nimport { checkValueInObj } from 'utils';\n\nimport './Tabs.scss';\n\ntype Div = React.DOMAttributes;\n\ninterface Props {\n mode: GQL.BetType;\n handleChangeMode: (activeTab: GQL.BetType) => void;\n disabledModes: GQL.BetType[];\n systemPrefix?: string;\n}\n\nconst tabs = {\n [GQL.BetType.SINGLE]: globalMessages.SINGLE,\n [GQL.BetType.EXPRESS]: globalMessages.EXPRESS,\n [GQL.BetType.SYSTEM]: globalMessages.SYSTEM,\n};\n\nconst Tabs: React.FC = ({\n handleChangeMode,\n mode,\n disabledModes,\n systemPrefix,\n}) => {\n const handleChooseTab: Div['onClick'] = e => {\n const { tab } = e.currentTarget.dataset;\n\n if (!tab || !checkValueInObj(GQL.BetType, tab)) return;\n\n handleChangeMode(tab);\n };\n\n return (\n
\n {map(tabs, (msg, value: GQL.BetType) => {\n const isActive = mode === value;\n const isDisabled = disabledModes.includes(value);\n const attrTab = isActive || isDisabled ? undefined : value;\n const isSystem = value === GQL.BetType.SYSTEM;\n\n return (\n \n \n {isSystem && systemPrefix && (\n
{systemPrefix}
\n )}\n
\n );\n })}\n \n );\n};\n\nexport default Tabs;\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport betslip, { Betslip as BetslipTypes } from '@gin-betting/betslip';\nimport core, { App, GQL } from '@gin-betting/core';\nimport { OrderedSet, Seq } from 'immutable';\nimport { includes } from 'lodash';\n\nimport { useSetDefaultStake } from '../../hooks';\n\nconst {\n utils: { getIdsFromBetslipOddId },\n} = core;\nconst {\n constants: { BETSLIP_ODD_STATUSES_TO_PLACE_BET },\n actions: { changeBetslipMode },\n utils: { getBetSystemSizes },\n} = betslip;\n\ninterface Input {\n betslipBetId: string;\n betslipBet: BetslipTypes.BetslipBetWithStatus;\n}\n\ninterface Output {\n mode: GQL.BetType;\n isFooterDisabled: boolean;\n status: App.BetslipStatus;\n systemSize: number[];\n betslipOddsSize: number;\n betslipOddIdsGroup: Seq.Indexed<[string, OrderedSet]>;\n disabledModes: GQL.BetType[];\n handleChangeMode: (activeTab: GQL.BetType) => void;\n isSingle: boolean;\n}\n\nconst useBetslip = ({ betslipBetId, betslipBet }: Input): Output => {\n const dispatch = useDispatch();\n\n const { mode, betslipOddIds, status, systemSize } = betslipBet;\n const isSingle = mode === GQL.BetType.SINGLE;\n\n useSetDefaultStake({ betslipBetId });\n const betslipOddsSize = betslipOddIds.count();\n\n const handleChangeMode = useCallback(\n (betType: GQL.BetType) => {\n dispatch(\n changeBetslipMode({\n betslipBetId,\n mode: betType,\n })\n );\n },\n [dispatch, betslipBetId]\n );\n\n const isDisabled = !includes(BETSLIP_ODD_STATUSES_TO_PLACE_BET, status);\n\n const betslipOddIdsGroup = isSingle\n ? (betslipOddIds.entrySeq().map(([_, betslipOddId]) => {\n const { matchId } = getIdsFromBetslipOddId(betslipOddId);\n\n return [matchId, OrderedSet([betslipOddId])];\n }) as Seq.Indexed<[string, OrderedSet]>)\n : (betslipOddIds\n .groupBy(betslipOddId => {\n const { matchId } = getIdsFromBetslipOddId(betslipOddId);\n\n return matchId;\n })\n .entrySeq() as Seq.Indexed<[string, OrderedSet]>);\n\n const disabledModes = useMemo(() => {\n let result: GQL.BetType[] = [];\n\n if (isDisabled) {\n result = [\n GQL.BetType.SINGLE,\n GQL.BetType.EXPRESS,\n GQL.BetType.SYSTEM,\n ].filter(m => m !== mode);\n } else {\n if (betslipOddsSize >= 2) {\n result.push(GQL.BetType.SINGLE);\n }\n\n if (betslipOddsSize <= 1) {\n result.push(GQL.BetType.EXPRESS);\n }\n\n if (betslipOddsSize <= 2) {\n result.push(GQL.BetType.SYSTEM);\n }\n }\n\n return result;\n }, [isDisabled, betslipOddsSize, mode]);\n\n return {\n mode,\n status,\n isFooterDisabled: isDisabled && !isSingle,\n betslipOddIdsGroup,\n disabledModes,\n handleChangeMode,\n systemSize: getBetSystemSizes({\n betType: mode,\n selectionsCount: betslipOddsSize,\n systemSize,\n }),\n betslipOddsSize,\n isSingle,\n };\n};\n\nexport default useBetslip;\n","import betslip from '@gin-betting/betslip';\nimport { createSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n selectors: { selectBetslipBetWithStatus },\n} = betslip;\n\ninterface Input {\n betslipBetId: string;\n}\n\ntype Output = {\n betslipBet: NonNullable>;\n} | null;\n\nconst selectProps = createSelector(selectBetslipBetWithStatus, betslipBet => {\n if (!betslipBet) return null;\n\n return { betslipBet };\n});\n\nconst useValidBetslipProps = ({ betslipBetId }: Input): Output => {\n return useMemoSelector(selectProps, { betslipBetId });\n};\n\nexport default useValidBetslipProps;\n","import React from 'react';\nimport type { Betslip as BetslipTypes } from '@gin-betting/betslip';\nimport { App } from '@gin-betting/core';\n\nimport UserDevice from 'services/user-device';\nimport BetslipFooter from '../BetslipFooter';\nimport Body from '../Body';\nimport Tabs from '../Tabs';\nimport useBetslip from './useBetslip';\nimport useValidBetslipProps from './useValidBetslipProps';\n\nimport './betslip.scss';\n\ntype Props = {\n betslipBetId: string;\n isOpened: boolean;\n};\n\ninterface BetslipProps extends Props {\n betslipBet: BetslipTypes.BetslipBetWithStatus;\n}\n\nconst Betslip: React.FC = ({\n betslipBetId,\n betslipBet,\n isOpened,\n}) => {\n const {\n betslipOddIdsGroup,\n disabledModes,\n mode,\n status,\n isFooterDisabled,\n handleChangeMode,\n systemSize,\n betslipOddsSize,\n isSingle,\n } = useBetslip({\n betslipBet,\n betslipBetId,\n });\n\n const isSuccess = status === App.BetslipStatus.SUCCESS;\n\n if (!isOpened) return null;\n\n let systemSizeTitle: string | undefined;\n\n if (UserDevice.getInstance()?.isDeviceMobile()) {\n systemSizeTitle = systemSize\n .map(i => `${i}/${betslipOddsSize}`)\n .join(' ');\n }\n\n return (\n
\n \n \n {(!isSuccess || isSingle) && (\n \n )}\n
\n );\n};\n\nconst BetslipValidationProps: React.FC = ({\n betslipBetId,\n isOpened,\n}) => {\n const validProps = useValidBetslipProps({ betslipBetId });\n\n if (!validProps) return null;\n\n const { betslipBet } = validProps;\n\n return (\n \n );\n};\n\nexport default BetslipValidationProps;\n","import React from 'react';\nimport type { BetslipDefault } from '@gin-betting/betslip';\nimport type { App } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport './checkListItem.scss';\n\ninterface Props {\n changeOddUpdateStatus: BetslipDefault['actions']['changeOddUpdateStatus'];\n oddUpdateStatus: App.OddUpdateStatus;\n label: string;\n isChecked: boolean;\n}\n\nconst CheckListItem: React.FC = ({\n isChecked,\n label,\n changeOddUpdateStatus,\n oddUpdateStatus,\n}) => {\n const handleChangeOddUpdateStatus = () => {\n if (isChecked) return;\n\n changeOddUpdateStatus({ oddUpdateStatus });\n };\n\n return (\n \n
\n
\n
\n
\n {label}\n
\n
\n );\n};\n\nexport default CheckListItem;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport type { BetslipDefault } from '@gin-betting/betslip';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport UserDevice from 'services/user-device';\nimport messages from '../../../messages';\nimport CheckListItem from './CheckListItem';\n\nimport './updatesSettings.scss';\n\ninterface Props {\n changeOddUpdateStatus: BetslipDefault['actions']['changeOddUpdateStatus'];\n activeOddUpdateStatus: App.OddUpdateStatus;\n}\n\nconst SettingsPopup: React.FC = ({\n activeOddUpdateStatus,\n changeOddUpdateStatus,\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n
\n {formatMessage(messages.notificationSettingsTitle)}\n
\n {formatMessage(messages.updatesSettingsDescription)}\n
\n
\n\n {map(App.OddUpdateStatus, oddUpdateStatus => {\n const isChecked = activeOddUpdateStatus === oddUpdateStatus;\n\n const label = formatMessage(messages[oddUpdateStatus]);\n\n return (\n \n );\n })}\n \n \n );\n};\n\nexport default SettingsPopup;\n","import { useEffect, useState } from 'react';\nimport { Observable } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\nimport 'rxjs/add/observable/fromEvent';\n\ninterface Output {\n togglePopup: () => void;\n hasOpenedPopup: boolean;\n}\n\nconst useUpdateSettings = (): Output => {\n const [hasOpenedPopup, setHasOpenedPopup] = useState(false);\n\n const togglePopup = () => {\n setHasOpenedPopup(() => !hasOpenedPopup);\n };\n\n useEffect(() => {\n if (!hasOpenedPopup) return;\n\n const closeEvents: Subscription = Observable.fromEvent(\n document,\n 'click'\n ).subscribe(() => {\n setHasOpenedPopup(false);\n });\n\n return () => closeEvents.unsubscribe();\n }, [hasOpenedPopup]);\n\n return {\n togglePopup,\n hasOpenedPopup,\n };\n};\n\nexport default useUpdateSettings;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { Transition } from 'react-transition-group';\nimport type { BetslipDefault } from '@gin-betting/betslip';\nimport type { App } from '@gin-betting/core';\nimport cn from 'classnames';\nimport 'rxjs/add/observable/fromEvent';\n\nimport { Icon } from 'components';\nimport UserDevice from 'services/user-device';\nimport messages from '../../../messages';\nimport SettingsPopup from './SettingsPopup';\nimport useUpdateSettings from './useUpdatesSettings';\n\nimport settingsIcon from 'assets/svg/setting-betslip.svg';\nimport './updatesSettings.scss';\n\nconst transitionStyles: any = {\n entering: { opacity: 0 },\n entered: { opacity: 1 },\n exiting: { opacity: 0 },\n exited: { opacity: 0 },\n};\n\ninterface Props {\n changeOddUpdateStatus: BetslipDefault['actions']['changeOddUpdateStatus'];\n oddUpdateStatus: App.OddUpdateStatus;\n}\n\nconst UpdatesSettings: React.FC = ({\n oddUpdateStatus: activeOddUpdateStatus,\n changeOddUpdateStatus,\n}) => {\n const { togglePopup, hasOpenedPopup } = useUpdateSettings();\n const { formatMessage } = useIntl();\n\n return (\n \n \n \n \n \n {stateTransition => {\n return (\n \n \n \n );\n }}\n \n \n );\n};\n\nexport default UpdatesSettings;\n","import React, { useCallback } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport type { App, GQL } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\nimport type { Arg1 } from 'tsargs';\n\nimport globalMsg from 'messages';\nimport ui from 'modules/ui';\nimport UserDevice from 'services/user-device';\nimport type { State } from 'types';\nimport messages from '../../messages';\n\nconst {\n actions: { closeSidebar },\n} = ui;\n\nconst {\n selectors: { selectBetslipBetWithStatus, selectOddUpdateStatus },\n actions: { changeOddUpdateStatus, deleteBetslipOdds, choseBetslipBetId },\n} = betslip;\n\nconst selectProps = createStructuredSelector({\n betslipBet: selectBetslipBetWithStatus,\n oddUpdateStatus: selectOddUpdateStatus,\n});\n\nconst MIN_BETS_COUNT_TO_FIT_SUCCESS_TEXT = 2 as const;\nconst MIN_BETS_COUNT_TO_FIT_BETS_COUNT = 3 as const;\n\ninterface Input {\n betslipBetId: string;\n isOpened: boolean;\n betslipBetsSize: number;\n}\n\ninterface Output {\n status: App.BetslipStatus;\n choseBetslipBetId: VoidFn;\n deleteBetslipOdds: (event: React.MouseEvent) => void;\n betsSize: number;\n mode: GQL.BetType;\n deleteTitle: string;\n successTitle: string;\n betCountTitle: string;\n changeOddUpdateStatus: typeof changeOddUpdateStatus;\n oddUpdateStatus: App.OddUpdateStatus;\n}\n\nconst useBetslipHeader = ({\n betslipBetId,\n isOpened,\n betslipBetsSize,\n}: Input): Output | null => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const handlerChoseBetslipBetId = useCallback(() => {\n if (isOpened) return;\n\n dispatch(choseBetslipBetId({ betslipBetId }));\n }, [dispatch, betslipBetId, isOpened]);\n\n const handleDeleteBetslipOdds = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n\n dispatch(\n deleteBetslipOdds({\n betslipBetId,\n })\n );\n if (!UserDevice.getInstance()?.isDeviceMobile()) {\n dispatch(closeSidebar());\n }\n },\n [dispatch, betslipBetId]\n );\n\n const changeOddUpdateStatusHandle: typeof changeOddUpdateStatus = useCallback(\n (payload: Arg1) =>\n dispatch(changeOddUpdateStatus(payload)),\n [dispatch]\n );\n\n const { betslipBet, oddUpdateStatus } = useSelector((state: State) =>\n selectProps(state, { betslipBetId })\n );\n\n if (!betslipBet) return null;\n\n const { betslipOddIds, mode, status } = betslipBet;\n\n const betsSize = betslipOddIds.count();\n\n const successTitle =\n betslipBetsSize <= MIN_BETS_COUNT_TO_FIT_SUCCESS_TEXT || isOpened\n ? formatMessage(messages.completed)\n : '';\n const deleteTitle = formatMessage(messages.deleteAllBetslipOdds);\n const betCountTitle =\n betslipBetsSize <= MIN_BETS_COUNT_TO_FIT_BETS_COUNT || isOpened\n ? formatMessage(globalMsg.bettingSlipBetTitle, {\n count: betsSize,\n })\n : '';\n\n return {\n status,\n choseBetslipBetId: handlerChoseBetslipBetId,\n deleteBetslipOdds: handleDeleteBetslipOdds,\n changeOddUpdateStatus: changeOddUpdateStatusHandle,\n betsSize,\n mode,\n deleteTitle,\n successTitle,\n betCountTitle,\n oddUpdateStatus,\n };\n};\n\nexport default useBetslipHeader;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"del-basket_5e906\",\n \"use\": \"del-basket_5e906-usage\",\n \"viewBox\": \"0 0 16 16\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { noop } from 'lodash';\n\nimport { Icon } from 'components';\nimport { Target, tracker } from 'services/tracking-manager';\nimport { OddIcon } from '../Odd';\nimport UpdatesSettings from './UpdatesSettings';\nimport useBetslipHeader from './useBetslipHeader';\n\nimport trash from 'assets/svg/del-basket.svg';\nimport './betslipHeader.scss';\n\ninterface Props {\n betslipBetId: string;\n isOpened: boolean;\n betslipBetsSize: number;\n}\n\nconst BetslipHeader: React.FC = ({\n betslipBetId,\n isOpened,\n betslipBetsSize,\n}) => {\n const props = useBetslipHeader({\n betslipBetId,\n betslipBetsSize,\n isOpened,\n });\n\n if (!props) return null;\n\n const {\n status,\n betsSize,\n betCountTitle,\n deleteTitle,\n successTitle,\n changeOddUpdateStatus,\n oddUpdateStatus,\n deleteBetslipOdds,\n choseBetslipBetId,\n } = props;\n\n const isEmpty = betsSize === 0;\n const isInitial = status === App.BetslipStatus.INITIAL;\n const isProcessing = status === App.BetslipStatus.PROCESSING;\n const isError = status === App.BetslipStatus.ERROR;\n const isSuccess = status === App.BetslipStatus.SUCCESS;\n const isSuspended = isSuccess || isProcessing;\n\n return (\n \n \n {(isProcessing || isSuccess) && (\n \n )}\n \n {isSuccess ? successTitle : `${betsSize} ${betCountTitle}`}\n \n \n\n {isOpened && (\n \n {isInitial && (\n \n )}\n\n {!isSuspended && (\n \n )}\n \n )}\n \n );\n};\n\nexport default BetslipHeader;\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport betslip from '@gin-betting/betslip';\nimport core, { GQL, View } from '@gin-betting/core';\nimport { first, floor, includes, toNumber } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport { EventType } from 'app-constants';\nimport { useEventHandler, useMemoSelector, usePollingMinStake } from 'hooks';\nimport { NOT_ENOUGH_BALANCE_REASON_LIST } from '../../constants';\nimport { useChangeStake, usePlaceBet } from '../../hooks';\nimport { RestrictionsContext } from '../../restrictions';\n\nconst {\n entities: {\n selectors: { selectBets },\n },\n} = core;\n\nconst {\n selectors: { selectBetslipOddsByChosenBetslipBet },\n} = betslip;\n\ninterface Output {\n handleCancel: VoidFn;\n isModalOpen: boolean;\n handleRefillBalance: VoidFn;\n missingBalance: number;\n placeBet: VoidFn;\n actualBalance: number;\n isStakeBtn: boolean;\n}\n\ninterface Input {\n betslipBetId: string;\n}\n\nconst useRefillBalanceModal = ({ betslipBetId }: Input): Output => {\n const [isModalOpen, seIsModalOpen] = useState(false);\n const { state: restrictionsState } = useContext(RestrictionsContext);\n\n const { minStake } = usePollingMinStake();\n\n const betslipBet = useMemoSelector(makeSelectBetslipBet(), {\n betslipBetId,\n restrictionsState,\n });\n\n const stake = toNumber(betslipBet?.stake);\n\n const actualBalance = getBalance(betslipBet);\n\n const isStakeBtn = actualBalance >= minStake;\n\n const changeStakeHandler = useChangeStake({ betslipBetId });\n\n const { placeBetHandler } = usePlaceBet({\n betslipBetId,\n totalStake: stake,\n });\n\n const { dispatchBettingEvent, isEventAvailable } = useEventHandler({\n eventType: EventType.OpenDeposit,\n });\n\n const missingBalance = floor(stake - actualBalance, 2);\n\n const placeBet = useCallback(() => {\n changeStakeHandler(`${actualBalance}`);\n\n setTimeout(() => {\n placeBetHandler();\n }, 350);\n }, [actualBalance, changeStakeHandler, placeBetHandler]);\n\n const handleRefillBalance = useCallback(() => {\n if (!isEventAvailable) return;\n\n dispatchBettingEvent({ deposit: `${missingBalance}` });\n }, [dispatchBettingEvent, isEventAvailable, missingBalance]);\n\n const handleCancel = () => seIsModalOpen(false);\n\n useEffect(() => {\n seIsModalOpen(!!betslipBet);\n }, [betslipBet]);\n\n return {\n handleCancel,\n isModalOpen,\n handleRefillBalance,\n missingBalance,\n placeBet,\n actualBalance,\n isStakeBtn,\n };\n};\n\nconst makeSelectBetslipBet = () => {\n return createSelector(\n selectBetslipOddsByChosenBetslipBet,\n selectBets,\n (betslipOdds, bets) => {\n return betslipOdds\n .map(({ betId }) => {\n if (!betId) return;\n\n const bet = bets.get(betId);\n\n if (!bet) return;\n\n return bet;\n })\n\n .find(bet =>\n includes(NOT_ENOUGH_BALANCE_REASON_LIST, bet?.declineReason)\n );\n }\n );\n};\n\nfunction getBalance(bet: View.Bet | undefined): number {\n if (!bet) return 0;\n\n const declineContextItem = first(bet.declineContext) as\n | GQL.BetDeclineContextRestrictions\n | undefined;\n\n if (!declineContextItem) return 0;\n\n const res = declineContextItem.restrictions.find(\n r => r.type === GQL.RestrictionType.not_enough_balance\n ) as GQL.NotEnoughBalanceRestriction | undefined;\n\n if (!res) return 0;\n\n return floor(+res.actualBalance, 2);\n}\n\nexport default useRefillBalanceModal;\n","import React from 'react';\nimport core from '@gin-betting/core';\n\nimport messages from '../../messages';\nimport BetslipModal from '../BetslipModal';\nimport useRefillBalanceModal from './useRefillBalanceModal';\n\ninterface Props {\n betslipBetId: string;\n}\nconst {\n utils: { getCurrency },\n} = core;\n\nconst RefillBalanceModal: React.FC = ({ betslipBetId }) => {\n const {\n isModalOpen,\n handleCancel,\n missingBalance,\n handleRefillBalance,\n placeBet,\n actualBalance,\n isStakeBtn,\n } = useRefillBalanceModal({\n betslipBetId,\n });\n\n if (!isModalOpen) return null;\n\n const { currencySymbol } = getCurrency();\n\n return (\n \n );\n};\n\nexport default RefillBalanceModal;\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { usePureSelector } from 'hooks';\n\nconst {\n selectors: {\n selectBetslipBetIds,\n selectBetslipBets,\n selectChosenBetslipBetId,\n selectInitialBetslipBet,\n },\n actions: { choseBetslipBetId, deleteBetslipBet },\n} = betslip;\n\ninterface Output {\n betslipBetIds: ReturnType;\n chosenBetslipBetId: ReturnType;\n}\n\nconst selectInitialBetslipBetId = createSelector(\n selectInitialBetslipBet,\n betslipBet => betslipBet?.id\n);\n\nconst selectOutdatedBetslipBetIds = createSelector(\n selectBetslipBets,\n betslipBets =>\n betslipBets\n .filter(({ betslipOddIds }) => betslipOddIds.count() === 0)\n .keySeq()\n);\n\nconst selectActiveBetslipBetIds = createSelector(\n selectBetslipBetIds,\n selectOutdatedBetslipBetIds,\n (betslipBetIds, outdatedBetslipBetIds) =>\n betslipBetIds.subtract(outdatedBetslipBetIds).slice(-6)\n);\n\nconst selectProps = createStructuredSelector({\n betslipBetIds: selectActiveBetslipBetIds,\n outdatedBetslipBetIds: selectOutdatedBetslipBetIds,\n chosenBetslipBetId: selectChosenBetslipBetId,\n initialBetslipBetId: selectInitialBetslipBetId,\n});\n\nconst useBetslipList = (): Output => {\n const dispatch = useDispatch();\n\n const {\n betslipBetIds,\n chosenBetslipBetId,\n initialBetslipBetId,\n outdatedBetslipBetIds,\n } = usePureSelector(s => selectProps(s, {}));\n\n useEffect(() => {\n if (!chosenBetslipBetId && initialBetslipBetId) {\n dispatch(choseBetslipBetId({ betslipBetId: initialBetslipBetId }));\n }\n }, [dispatch, chosenBetslipBetId, initialBetslipBetId]);\n\n useEffect(() => {\n outdatedBetslipBetIds.forEach(betslipBetId => {\n if (initialBetslipBetId === betslipBetId) return;\n\n dispatch(deleteBetslipBet({ betslipBetId }));\n });\n }, [dispatch, outdatedBetslipBetIds, initialBetslipBetId]);\n\n return {\n // TODO: uncomment next line if product provide a blank page design. https://jira.syneforge.com/browse/GINFE-2589\n // betslipBetIds: betslipBetIds,\n betslipBetIds:\n betslipBetIds.count() === 0 && initialBetslipBetId\n ? betslipBetIds.add(initialBetslipBetId)\n : betslipBetIds,\n chosenBetslipBetId,\n };\n};\n\nexport default useBetslipList;\n","import React, { Fragment } from 'react';\nimport cn from 'classnames';\n\nimport features from 'services/feature-manager';\nimport UserDevice from 'services/user-device';\nimport AcceptOddsChangeModal from '../AcceptOddsChangeModal';\nimport Betslip from '../Betslip';\nimport BetslipHeader from '../BetslipHeader';\nimport RefillBalanceModal from '../RefillBalanceModal';\nimport useBetslipList from './useBetslipList';\n\nimport './betslipList.scss';\n\nconst BetslipList: React.FC = () => {\n const { betslipBetIds, chosenBetslipBetId } = useBetslipList();\n const count = betslipBetIds.count();\n const lastBetslipBetId = betslipBetIds.last();\n const isSolo = count === 1;\n\n const isRefillModal = features.isActive(\n features.list.BetslipRefillBalanceModal\n );\n\n return (\n \n {betslipBetIds.map(betslipBetId => {\n const isOpened = chosenBetslipBetId === betslipBetId;\n const isLast = lastBetslipBetId === betslipBetId;\n\n return (\n \n \n \n \n\n {!isLast &&
}\n\n \n \n );\n })}\n\n {isRefillModal && lastBetslipBetId && (\n \n )}\n\n \n
\n );\n};\n\nexport default React.memo(BetslipList);\n","import betslip from '@gin-betting/betslip';\nimport core from '@gin-betting/core';\nimport { Seq, Set } from 'immutable';\nimport { createSelector } from 'reselect';\n\nimport { usePureSelector } from 'hooks';\n\nconst {\n utils: { getIdsFromBetslipOddId, splitMarketPath },\n} = core;\nconst {\n selectors: { selectBetslipOddIds },\n} = betslip;\n\nconst selectGroupedMarketIdsByMatchId = createSelector(\n selectBetslipOddIds,\n betslipOddIds => {\n const groupedMarketIdsByMatchId = betslipOddIds\n .map(betslipOddId => getIdsFromBetslipOddId(betslipOddId).marketId)\n .toSet()\n .groupBy(marketId => splitMarketPath(marketId)?.matchId)\n .entrySeq() as Seq.Indexed<[string, Set]>;\n\n return groupedMarketIdsByMatchId;\n }\n);\n\ninterface Output {\n groupedMarketIdsByMatchId: Seq.Indexed<[string, Set]>;\n}\n\nconst useBetslipListSubscription = (): Output => {\n const groupedMarketIdsByMatchId = usePureSelector(s =>\n selectGroupedMarketIdsByMatchId(s)\n );\n\n return { groupedMarketIdsByMatchId };\n};\n\nexport default useBetslipListSubscription;\n","import React, { Fragment } from 'react';\nimport core from '@gin-betting/core';\n\nimport { SportEventSubscription } from 'components';\nimport useBetslipListSubscription from './useBetslipListSubscription';\n\nconst {\n utils: { splitMarketPath },\n async: {\n constants: { SubscribeOrigin },\n },\n} = core;\n\nconst BetslipListSubscription: React.FC = () => {\n const { groupedMarketIdsByMatchId } = useBetslipListSubscription();\n\n return (\n \n {groupedMarketIdsByMatchId.map(([sportEventId, marketIds]) => (\n splitMarketPath(mId)?.marketId)\n .filter((m): m is string => Boolean(m))\n .toArray(),\n isTopMarkets: false,\n withMarketsCount: false,\n }}\n origin={SubscribeOrigin.BetSlipList}\n batch={false}\n />\n ))}\n \n );\n};\n\nexport default BetslipListSubscription;\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core, { App } from '@gin-betting/core';\nimport { RecordOf } from 'immutable';\nimport { includes } from 'lodash';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\nimport ui from 'modules/ui';\nimport type { StateShape } from 'types';\n\nconst {\n selectors: { selectOddFormat, selectOddsStatisticView },\n} = ui;\nconst {\n entities: {\n selectors: {\n selectStatisticPercentsByMarket,\n selectStatisticPercentsByMatch,\n },\n },\n utils: { getIdsFromOddId },\n} = core;\n\nconst {\n constants: { BETSLIP_ODD_STATUSES_TO_PLACE_BET },\n actions: { deleteBetslipOdd, addBetslipOdd },\n selectors: { selectOddButtonView },\n utils: { getBetslipOddId },\n} = betslip;\n\ninterface Input {\n oddId: string;\n}\n\ninterface Output {\n oddFormat: App.OddFormat;\n statisticPercent: number | null;\n isShowStatistic: boolean;\n handleToggleOdd: () => void;\n betslipOddId: string;\n isSelected: boolean;\n isActive: boolean;\n}\n\nconst selectProps = createStructuredSelector({\n oddButtonView: selectOddButtonView,\n oddFormat: selectOddFormat,\n oddsStatisticView: selectOddsStatisticView,\n});\n\nconst makeStatisticSelector = (statisticView: App.OddStatisticView) =>\n statisticView === App.OddStatisticView.MATCH\n ? selectStatisticPercentsByMatch\n : selectStatisticPercentsByMarket;\n\nconst useOddButton = ({ oddId }: Input): Output => {\n const dispatch = useDispatch();\n\n const {\n oddButtonView: { isSelected, betslipBetId, isActive, status },\n oddFormat,\n oddsStatisticView: { statisticView, show },\n } = useMemoSelector(selectProps, { oddId });\n\n const { marketId } = getIdsFromOddId(oddId) || {};\n\n const selectStatistic = useMemo(\n () => makeStatisticSelector(statisticView),\n [statisticView]\n );\n\n const statisticPercent = useSelector<\n RecordOf,\n ReturnType\n >(state => selectStatistic(state, { marketId, oddId }));\n\n const isEditableBetslip = includes(\n BETSLIP_ODD_STATUSES_TO_PLACE_BET,\n status\n );\n\n const recipientBetslipBetId = isEditableBetslip ? betslipBetId : undefined;\n\n // NOTE: Uncomment to enable multi betslip!\n // const recipientBetslipBetId =\n // isSingle || isEditableBetslip ? betslipBetId : initialBetslipBetId;\n\n const handleDeleteBetslipOdd = useCallback(() => {\n if (!isEditableBetslip) return;\n\n dispatch(deleteBetslipOdd({ oddId, betslipBetId }));\n }, [dispatch, betslipBetId, isEditableBetslip, oddId]);\n\n const handleAddBetslipOdd = useCallback(() => {\n if (!recipientBetslipBetId) return;\n\n dispatch(\n addBetslipOdd({\n oddId,\n betslipBetId: recipientBetslipBetId,\n })\n );\n }, [dispatch, recipientBetslipBetId, oddId]);\n\n const handleToggleOdd = useCallback(\n () => (isSelected ? handleDeleteBetslipOdd() : handleAddBetslipOdd()),\n [isSelected, handleAddBetslipOdd, handleDeleteBetslipOdd]\n );\n\n return {\n isActive,\n isSelected,\n betslipOddId: getBetslipOddId({ oddId, betslipBetId }),\n oddFormat,\n statisticPercent,\n isShowStatistic: show,\n handleToggleOdd,\n };\n};\n\nexport default useOddButton;\n","import React from 'react';\nimport { Manager, Popper, Reference } from 'react-popper';\nimport core from '@gin-betting/core';\n\nimport { Odd, Portal } from 'components';\nimport { useMouseEventsHandler } from 'hooks';\nimport ui from 'modules/ui';\nimport UserDevice from 'services/user-device';\nimport useOddButton from './useOddButton';\n\nconst {\n components: { OddHistory },\n} = ui;\n\nconst {\n entities: {\n components: { makeOddContainerFor },\n },\n} = core;\n\nconst OddContainer = makeOddContainerFor>();\n\ninterface Props {\n oddId: string;\n showResult?: boolean;\n withTitle?: boolean;\n modifyOddTitle?: (name: string) => string;\n}\n\nconst OddButton: React.FC = props => {\n const { oddId, showResult, withTitle, modifyOddTitle } = props;\n\n const {\n betslipOddId,\n isSelected,\n oddFormat,\n statisticPercent,\n isShowStatistic,\n handleToggleOdd,\n isActive,\n } = useOddButton({ oddId });\n const { showHistory, onMouseEnter, onMouseLeave } = useMouseEventsHandler();\n\n return (\n \n \n {({ ref }) => (\n \n )}\n \n {!UserDevice.getInstance()?.isDeviceMobile() &&\n isActive &&\n showHistory && (\n \n \n {({ ref, style, arrowProps, placement }) => (\n \n )}\n \n \n )}\n \n );\n};\n\nexport default OddButton;\n","import React from 'react';\nimport { RefHandler } from 'react-popper';\n\nimport { OddStub } from 'components';\nimport type { OddButtonProps } from 'types';\nimport OddButtonContainer from './OddButtonContainer';\n\ntype Btn = React.DOMAttributes;\n\ninterface Props extends OddButtonProps {\n withTitle?: boolean;\n onMouseEnter?: Btn['onMouseLeave'];\n onMouseLeave?: Btn['onMouseEnter'];\n stubNode?: JSX.Element;\n fRef?: RefHandler;\n modifyOddTitle?: (name: string) => string;\n}\n\nconst OddButton: React.FC = ({\n oddId,\n showResult,\n withTitle,\n stubNode,\n modifyOddTitle,\n}) => {\n return oddId ? (\n \n ) : (\n \n );\n};\n\nexport default OddButton;\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core from '@gin-betting/core';\n\nimport { SidebarView } from 'app-constants';\nimport { usePrevious } from 'hooks';\nimport globalMessages from 'messages';\nimport ui from 'modules/ui';\nimport { useSetDefaultStake } from '../../hooks';\n\nconst {\n actions: { choseBetslipBetId },\n} = betslip;\nconst {\n utils: { getIdsFromBetslipOddId },\n} = core;\nconst {\n actions: { changeSidebarView, openSidebar },\n selectors: { selectIsSidebarOpen },\n} = ui;\n\ninterface Input {\n count: number;\n betslipOddId: string;\n chosenBetslipBetId: string | null;\n}\ninterface Output {\n isOpen: boolean;\n toggleIsOpen: VoidFn;\n title: string;\n goToBetslip: VoidFn;\n}\n\nconst useQuickBetslip = ({\n count,\n betslipOddId,\n chosenBetslipBetId,\n}: Input): Output => {\n const isHidden = useSelector(selectIsSidebarOpen);\n const isHiddenRef = useRef(isHidden);\n isHiddenRef.current = isHidden;\n const { formatMessage } = useIntl();\n const [isOpen, setIsOpen] = useState(false);\n const dispatch = useDispatch();\n const { betslipBetId } = getIdsFromBetslipOddId(betslipOddId);\n useSetDefaultStake({ betslipBetId });\n const prevCount = usePrevious(count);\n\n const goToBetslip = useCallback(() => {\n dispatch(changeSidebarView({ sidebarView: SidebarView.betslip }));\n dispatch(openSidebar());\n }, [dispatch]);\n\n const title = formatMessage(globalMessages.bettingSlip);\n\n useEffect(() => {\n if (isHiddenRef.current) return;\n\n if (chosenBetslipBetId !== betslipBetId) {\n dispatch(choseBetslipBetId({ betslipBetId }));\n }\n }, [dispatch, chosenBetslipBetId, betslipBetId]);\n\n useEffect(() => {\n if (!isHidden) return;\n\n setIsOpen(false);\n }, [isHidden]);\n\n useEffect(() => {\n if (isHidden) return;\n\n setIsOpen(!prevCount && !!count);\n\n /* prevCount from usePrevious hook is don't need here because this ref value */\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [count, isHidden]);\n\n const toggleIsOpen = useCallback(() => {\n setIsOpen(s => !s);\n }, []);\n\n return { isOpen: isOpen && !isHidden, toggleIsOpen, title, goToBetslip };\n};\n\nexport default useQuickBetslip;\n","import { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport { createSelector } from 'reselect';\n\nimport { State } from 'types';\n\nconst {\n selectors: { selectInitialBetslipBet, selectChosenBetslipBetId },\n} = betslip;\n\ntype Output = {\n betslipOddId: string;\n betslipBetId: string;\n count: number;\n chosenBetslipBetId: string | null;\n} | null;\n\nconst selectProps = createSelector(\n selectInitialBetslipBet,\n selectChosenBetslipBetId,\n (initialBetslipBet, chosenBetslipBetId): Output | null => {\n if (!initialBetslipBet) return null;\n\n const { betslipOddIds, id: betslipBetId } = initialBetslipBet;\n\n const betslipOddId = betslipOddIds.first();\n\n const count = betslipOddIds.count();\n\n if (!betslipOddId) return null;\n\n return {\n betslipOddId,\n betslipBetId,\n count,\n chosenBetslipBetId,\n };\n }\n);\n\nexport type ValidQuickBetslipProps = NonNullable;\n\nconst useValidQuickBetslipProps = (): Output => {\n const props = useSelector((s: State) => selectProps(s));\n\n return props;\n};\n\nexport default useValidQuickBetslipProps;\n","import React, { useMemo } from 'react';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport PlaceBetContext from '../../PlaceBetContext';\nimport { SinglePartMob } from '../BetslipFooter';\nimport Odd from '../Odd';\nimport useQuickBetslip from './useQuickBetslip';\nimport useValidQuickBetslipProps, {\n ValidQuickBetslipProps,\n} from './useValidQuickBetslipProps';\n\nimport arrowLeft from 'assets/svg/arrow-left.svg';\nimport './quickBetslip.scss';\n\ntype QuickBetslipProps = ValidQuickBetslipProps;\n\nconst QuickBetslip: React.FC = ({\n betslipOddId,\n betslipBetId,\n count,\n chosenBetslipBetId,\n}) => {\n const { isOpen, toggleIsOpen, goToBetslip, title } = useQuickBetslip({\n count,\n betslipOddId,\n chosenBetslipBetId,\n });\n\n const button = useMemo(\n () => (\n
\n {title}\n
\n ),\n [goToBetslip, title]\n );\n\n if (!isOpen || count > 1) return null;\n\n return (\n \n
\n \n
\n
\n
\n \n
\n\n \n \n \n
\n \n );\n};\n\nconst QuickBetslipValidationProps: React.FC = () => {\n const validProps = useValidQuickBetslipProps();\n\n if (!validProps) return null;\n\n const {\n betslipOddId,\n betslipBetId,\n count,\n chosenBetslipBetId,\n } = validProps;\n\n return (\n \n );\n};\n\nexport default QuickBetslipValidationProps;\n","import React, { memo, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport core, { GQL, View } from '@gin-betting/core';\nimport { OrderedSet } from 'immutable';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\nimport ui from 'modules/ui';\nimport UserDevice from 'services/user-device';\nimport { getMatchesByIds } from 'utils';\n\nconst {\n utils: { getFiltersFromLocation, splitOddPath },\n services: { stringify, getHistory },\n hooks: { useDeepMemo },\n constants: { idPathDivider },\n entities: {\n normalizeEntity,\n actions: { storeNormalizedEntities },\n selectors: { selectActiveOddIds },\n },\n} = core;\n\nconst {\n actions: {\n addBetslipOdd,\n deleteBetslipOdds,\n changeBetslipMode,\n choseBetslipBetId,\n },\n utils: { getNextModeBySize },\n selectors: { selectInitialBetslipBet, selectChosenBetslipBetId },\n} = betslip;\n\nconst {\n actions: { openSidebar },\n} = ui;\n\nconst RestoreBetslipFromURL: React.FC = () => {\n const dispatch = useDispatch();\n const [isRequested, setIsRequested] = useState(false);\n\n const [{ oddIds, mode }, setRestoreParams] = useState(() => {\n const {\n betslipOdds = [],\n betType = GQL.BetType.SINGLE,\n ...restFilters\n } = getFiltersFromLocation();\n\n const history = getHistory();\n\n history.replace({\n ...history.location,\n search: stringify(restFilters),\n hash: window.location.hash,\n });\n\n return {\n oddIds: betslipOdds.map((id: string) =>\n id.replaceAll('/', idPathDivider)\n ),\n mode: betType,\n };\n });\n\n const { betslipBetId, activeOddIds, chosenBetslipBetId } = useMemoSelector(\n selectProps,\n {\n oddIds: isRequested ? oddIds : [],\n }\n );\n\n const isMobile = Boolean(UserDevice.getInstance()?.isDeviceMobile());\n\n const memActiveOddIds = useDeepMemo(activeOddIds);\n const activeMode =\n memActiveOddIds.length === oddIds.length\n ? mode\n : getNextModeBySize({\n nextBetslipOddIds: OrderedSet(memActiveOddIds),\n mode,\n });\n\n const memVariables = useDeepMemo(\n oddIds.reduce(\n (\n acc: { marketIds: Set; sportEventsIds: Set },\n id\n ) => {\n const ids = splitOddPath(id);\n\n if (!ids) return acc;\n\n acc.marketIds.add(ids.marketId);\n acc.sportEventsIds.add(ids.matchId);\n\n return acc;\n },\n {\n marketIds: new Set(),\n sportEventsIds: new Set(),\n }\n )\n );\n\n useEffect(() => {\n const { sportEventsIds, marketIds } = memVariables;\n\n if (sportEventsIds.size === 0 || marketIds.size === 0) return;\n\n getMatchesByIds({\n sportEventsIds: Array.from(sportEventsIds),\n marketStatuses: ACTIVE_MARKET_STATUSES,\n marketIds: Array.from(marketIds),\n })\n .then(({ data }) => {\n const normalized = normalizeEntity(data) as View.Normalized;\n\n dispatch(\n storeNormalizedEntities(normalized, {\n isTopMarkets: false,\n })\n );\n\n setIsRequested(true);\n })\n .catch(error => {\n console.error(error);\n });\n }, [dispatch, memVariables]);\n\n useEffect(() => {\n if (!betslipBetId || !memActiveOddIds.length) return;\n\n setRestoreParams({\n oddIds: [],\n mode: GQL.BetType.SINGLE,\n });\n\n dispatch(deleteBetslipOdds({ betslipBetId }));\n\n memActiveOddIds.forEach(oddId => {\n dispatch(\n addBetslipOdd({\n betslipBetId,\n oddId,\n })\n );\n });\n\n dispatch(\n changeBetslipMode({\n betslipBetId,\n mode: activeMode,\n })\n );\n\n if (isMobile) {\n if (betslipBetId !== chosenBetslipBetId) {\n dispatch(choseBetslipBetId({ betslipBetId }));\n }\n\n dispatch(openSidebar());\n }\n }, [\n dispatch,\n memActiveOddIds,\n betslipBetId,\n chosenBetslipBetId,\n activeMode,\n ]);\n\n return null;\n};\n\nconst selectInitialBetslipBetId = createSelector(\n selectInitialBetslipBet,\n betslipBet => betslipBet?.id\n);\n\nconst selectProps = createStructuredSelector({\n betslipBetId: selectInitialBetslipBetId,\n chosenBetslipBetId: selectChosenBetslipBetId,\n activeOddIds: selectActiveOddIds,\n});\n\nexport default memo(RestoreBetslipFromURL);\n","import React, { memo, useEffect } from 'react';\nimport betslip from '@gin-betting/betslip';\nimport core, { GQL } from '@gin-betting/core';\nimport { createSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n appServiceLocator,\n hooks: { useDeepMemo },\n utils: { getIdsFromBetslipOddId },\n} = core;\n\nconst {\n selectors: { selectInitialBetslipBet, selectBetslipOdds },\n} = betslip;\n\nconst SynchronizeBetslipState: React.FC = () => {\n const variables = useDeepMemo(useMemoSelector(selectSyncBetslipVariables));\n\n useEffect(() => {\n if (!variables) return;\n\n appServiceLocator\n .get('apiClient')\n .makeRequest({\n method: 'changeGamblerBettingSlip',\n variables,\n })\n .catch(error => {\n console.error(error);\n });\n }, [variables]);\n\n return null;\n};\n\nconst selectSyncBetslipVariables = createSelector(\n selectInitialBetslipBet,\n selectBetslipOdds,\n (\n betslipBet,\n betOdds\n ): GQL.ChangeGamblerBettingSlipMutationVariables | null => {\n if (!betslipBet) return null;\n\n const { mode: betType, stake, systemSize, betslipOddIds } = betslipBet;\n\n const isSingle = betType === GQL.BetType.SINGLE;\n\n const oddPaths: GQL.OddPath[] = betslipOddIds\n .map(bId => betOdds.get(bId))\n .filter((odd): odd is NonNullable => !!odd)\n .map(({ id, singleStake }) => ({\n path: getIdsFromBetslipOddId(id).oddId,\n stake: isSingle ? singleStake : '',\n }))\n .toArray();\n\n const result: GQL.ChangeGamblerBettingSlipMutationVariables = {\n betType,\n oddPaths,\n systemSize,\n };\n\n if (!isSingle) {\n result.stake = stake;\n }\n\n return result;\n }\n);\n\nexport default memo(SynchronizeBetslipState);\n","import { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\nimport { createStructuredSelector } from 'reselect';\n\nimport ui from 'modules/ui';\nimport { State } from 'types';\nimport { formatDecimalOdd } from 'utils';\n\nconst {\n selectors: { selectOddFormat },\n} = ui;\n\nconst {\n selectors: { selectBetslipBetTotals },\n} = betslip;\n\ninterface Input {\n betslipBetId: string;\n}\n\ntype Output = {\n formattedTotalOdd: ReturnType['component'];\n} | null;\n\nconst selectProps = createStructuredSelector({\n totals: selectBetslipBetTotals,\n oddFormat: selectOddFormat,\n});\n\nconst useTotalOdd = ({ betslipBetId }: Input): Output => {\n const {\n totals: { totalOdd },\n oddFormat,\n } = useSelector((s: State) => selectProps(s, { betslipBetId }));\n\n if (!totalOdd) return null;\n\n const { component: formattedTotalOdd } = formatDecimalOdd(\n totalOdd || 0,\n oddFormat\n );\n\n return { formattedTotalOdd };\n};\n\nexport default useTotalOdd;\n","import { useSelector } from 'react-redux';\nimport betslip from '@gin-betting/betslip';\n\nimport { State } from 'types';\n\nconst {\n selectors: { selectChosenBetslipBetId },\n} = betslip;\n\ninterface Output {\n betslipBetId: string | null;\n}\n\nconst useValidTotalOddProps = (): Output => {\n const betslipBetId = useSelector((s: State) => selectChosenBetslipBetId(s));\n\n return { betslipBetId };\n};\n\nexport default useValidTotalOddProps;\n","import React, { Fragment } from 'react';\n\nimport useTotalOdd from './useTotalOdd';\nimport useValidTotalOddProps from './useValidTotalOddProps';\n\nimport './totalOdd.scss';\n\ninterface Props {\n betslipBetId: string;\n}\n\nconst TotalOdd: React.FC = ({ betslipBetId }) => {\n const props = useTotalOdd({ betslipBetId });\n\n if (!props) return null;\n\n const { formattedTotalOdd } = props;\n\n return
{formattedTotalOdd}
;\n};\n\nconst ValidateTotalOdd: React.FC = () => {\n const { betslipBetId } = useValidTotalOddProps();\n\n if (!betslipBetId) return null;\n\n return ;\n};\n\nexport default ValidateTotalOdd;\n","import betslip, { Betslip, BetslipDefault } from '@gin-betting/betslip';\nimport core, { App, CoreDefault, GQL } from '@gin-betting/core';\nimport { REHYDRATE } from '@gin-betting/persist';\nimport { keys } from 'lodash';\nimport { TypedEpic } from 'redux-observable';\nimport getBettingAPI from 'root/getBettingAPI';\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/operator/mergeMap';\nimport 'rxjs/add/operator/delay';\nimport 'rxjs/add/observable/empty';\n\nimport {\n BetslipAttrManager,\n Destination,\n EventType,\n SidebarView,\n} from 'app-constants';\nimport ui from 'modules/ui';\nimport {\n Action,\n Category,\n FieldsObj,\n formatPathname,\n formatSearch,\n} from 'services/analytics';\nimport { sendAnalytics } from 'services/analytics/utils';\nimport UserDevice from 'services/user-device';\nimport {\n BetslipTimeManager,\n DELETE_BETSLIP_ODD_DELAY as DELETE_BETSLIP_ODD_DELAY_DESK,\n DELETE_BETSLIP_ODD_DELAY_MOB,\n PART_OF_NOT_ENOUGH_DOCS_ERROR,\n} from './constants';\nimport { getAnalyticOddsInfo } from './utils';\n\nconst isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\nconst deleteBetslipOddDelay = isMobile\n ? DELETE_BETSLIP_ODD_DELAY_MOB\n : DELETE_BETSLIP_ODD_DELAY_DESK;\n\nconst {\n async: {\n constants: { UPDATE_BET },\n },\n utils: {\n getIdsFromBetslipOddId,\n getIdsFromBetslipOddPath,\n convertBetStatus,\n getIdsFromOddId,\n getBettingOptions,\n },\n} = core;\n\nconst {\n constants: {\n DELETE_BETSLIP_BET,\n NAME,\n ADD_BETSLIP_ODD,\n CREATE_BETS_REQUEST,\n CREATE_BETS_SUCCESS,\n CREATE_BETS_FAIL,\n DELETE_BETSLIP_ODD,\n },\n utils: { getBetslipOddId },\n actions: { deleteBetslipBet, deleteBetslipOdd, getMissingMatches },\n selectors: {\n selectBetslipOdds,\n selectBetslipBet,\n selectChosenBetslipBetId,\n selectBetslipOddIdsWithoutEntities,\n },\n} = betslip;\n\nconst {\n actions: { changeSidebarView, closeSidebar },\n selectors: { selectSidebarView },\n} = ui;\n\ntype BetslipActionCreators = BetslipDefault['actions'];\ntype UpdateBetAction = ReturnType;\n\ntype DeleteBetslipOddAction = ReturnType<\n BetslipActionCreators['deleteBetslipOdd']\n>;\ntype DeleteBetslipBetAction = ReturnType<\n BetslipActionCreators['deleteBetslipBet']\n>;\n\ntype AddBetslipOddAction = ReturnType;\ntype CreateBetRequestAction = ReturnType;\ntype CreateBetFailAction = Betslip.CreateBetFailAction;\ntype CreateBetSuccessAction = Betslip.CreateBetSuccessAction;\n\ntype UpdateBetFirstOutputAction =\n | DeleteBetslipOddAction\n | DeleteBetslipBetAction;\n\ntype UpdateBetOutputAction =\n | UpdateBetFirstOutputAction\n | ReturnType\n | ReturnType;\n\nexport const updateBetEpic$: TypedEpic<\n UpdateBetAction,\n UpdateBetOutputAction\n> = (actions$, store) =>\n actions$\n .ofType(UPDATE_BET)\n .delay(deleteBetslipOddDelay)\n .mergeMap((action): UpdateBetFirstOutputAction[] => {\n const {\n entities: { bets },\n } = action.payload;\n const incomeBetId = Object.keys(bets)[0];\n\n const appState = store.getState();\n\n const betslipOdds = selectBetslipOdds(appState);\n\n // all betslipOddIds belong to one betslipBet\n const betslipOddIdsToDelete = betslipOdds\n .filter(\n ({ betId, singleStatus }) =>\n betId === incomeBetId &&\n singleStatus === App.BetslipStatus.SUCCESS\n )\n .keySeq()\n .toSet();\n\n const betslipOddId = betslipOddIdsToDelete.first<\n string | undefined\n >();\n\n if (!betslipOddId) {\n console.warn('betslipOdd is not exist', incomeBetId);\n\n return [];\n }\n\n const { betslipBetId } = getIdsFromBetslipOddId(betslipOddId);\n\n const betslipBet = selectBetslipBet(appState, {\n betslipBetId,\n });\n\n if (!betslipBet) {\n console.warn('betslipBet is not exist', incomeBetId);\n\n return [];\n }\n\n const { betslipOddIds } = betslipBet;\n\n if (betslipOddIds.toSet().equals(betslipOddIdsToDelete)) {\n return [deleteBetslipBet({ betslipBetId })];\n }\n\n return betslipOddIdsToDelete.toArray().map(id => {\n const { betslipBetId: bBetId, oddId } = getIdsFromBetslipOddId(\n id\n );\n\n return deleteBetslipOdd({\n betslipBetId: bBetId,\n oddId,\n });\n });\n })\n .mergeMap(\n (action: UpdateBetFirstOutputAction): UpdateBetOutputAction[] => {\n const { betslipBetId } = action.payload;\n\n const appState = store.getState();\n\n const chosenBetslipBetId = selectChosenBetslipBetId(appState);\n const sidebarView = selectSidebarView(appState);\n\n const result: UpdateBetOutputAction[] = [action];\n\n if (\n action.type === DELETE_BETSLIP_BET &&\n chosenBetslipBetId === betslipBetId &&\n sidebarView === SidebarView.betslip\n ) {\n result.push(\n isMobile\n ? closeSidebar()\n : changeSidebarView({\n sidebarView: SidebarView.bets,\n })\n );\n }\n\n return result;\n }\n );\n\nexport const betConfirmEpic$: TypedEpic = actions$ =>\n actions$.ofType(UPDATE_BET).mergeMap(action => {\n const {\n entities: { bets },\n } = action.payload;\n\n const betId = keys(bets)[0];\n\n if (!betId) return Observable.empty();\n\n const bet = bets[betId];\n\n if (!bet) return Observable.empty();\n\n const { stake, currencyCode, status, declineReason } = bet;\n\n if (status === GQL.BetStatus.ACCEPTED) {\n getBettingAPI().bettingEvents$.dispatch(EventType.BetConfirm, {\n stake,\n currency: currencyCode,\n });\n }\n\n if (declineReason.includes(PART_OF_NOT_ENOUGH_DOCS_ERROR)) {\n getBettingAPI().bettingEvents$.dispatch(\n EventType.HandleNotEnoughDocs,\n {}\n );\n }\n\n return Observable.empty();\n });\n\nexport const addOddEpic$: TypedEpic<\n Betslip.Actions['addBetslipOdd'],\n never\n> = actions$ =>\n actions$.ofType(ADD_BETSLIP_ODD).mergeMap(() => {\n getBettingAPI().bettingEvents$.dispatch(EventType.AddOdd, {});\n\n const { isAuthorized } = getBettingOptions();\n\n if (!isAuthorized) {\n getBettingAPI().bettingEvents$.dispatch(EventType.Redirect, {\n destination: Destination.Login,\n link: '',\n });\n }\n\n return Observable.empty();\n });\n\nexport const getMissingMatches$: TypedEpic = (action$, store) => {\n return action$\n .ofType(REHYDRATE)\n .filter(({ key }) => key === NAME)\n .switchMap(() => {\n const betslipOddIds = selectBetslipOddIdsWithoutEntities(\n store.getState()\n );\n\n const variables = betslipOddIds.reduce(\n (\n acc: {\n marketIds: Set;\n sportEventsIds: Set;\n },\n betslipOddId\n ) => {\n const { marketId, matchId } = getIdsFromBetslipOddPath(\n betslipOddId\n );\n\n acc.marketIds.add(marketId);\n acc.sportEventsIds.add(matchId);\n\n return acc;\n },\n {\n marketIds: new Set(),\n sportEventsIds: new Set(),\n }\n );\n\n const { sportEventsIds, marketIds } = variables;\n\n if (sportEventsIds.size === 0 || marketIds.size === 0) {\n return Observable.empty();\n }\n\n return Observable.of(\n getMissingMatches({\n marketIds: Array.from(marketIds),\n sportEventsIds: Array.from(sportEventsIds),\n })\n );\n });\n};\n\nexport const toggleBetslipOdd: TypedEpic<\n Betslip.Actions['addBetslipOdd'],\n Betslip.Actions['deleteBetslipOdd']\n> = (action$, state$) =>\n action$\n .ofType(ADD_BETSLIP_ODD)\n .mergeMap(({ payload: { oddId: incomeOddId, betslipBetId } }) => {\n const ids = getIdsFromOddId(incomeOddId);\n const state = state$.getState();\n const betslipBet = selectBetslipBet(state, { betslipBetId });\n\n if (!betslipBet || !ids) return Observable.empty();\n\n const { betslipOddIds } = betslipBet;\n\n const betslipOddIdsToDelete = betslipOddIds.reduce(\n (acc: string[], betslipOddId) => {\n const { matchId, oddId } = getIdsFromBetslipOddId(\n betslipOddId\n );\n\n if (incomeOddId !== oddId && ids.matchId === matchId) {\n acc.push(oddId);\n }\n\n return acc;\n },\n []\n );\n\n return betslipOddIdsToDelete.map(oddId =>\n deleteBetslipOdd({ betslipBetId, oddId })\n );\n });\n\nexport const updateManagerOnBetslipOddAdd$: TypedEpic<\n AddBetslipOddAction,\n never\n> = actions$ =>\n actions$.ofType(ADD_BETSLIP_ODD).mergeMap(action => {\n const { oddId, betslipBetId } = action.payload;\n const betslipOddId = getBetslipOddId({ oddId, betslipBetId });\n\n BetslipTimeManager[betslipOddId] = Date.now();\n\n return Observable.empty();\n });\n\nexport const clearManagerOnBetslipOddDelete$: TypedEpic<\n DeleteBetslipOddAction,\n never\n> = actions$ =>\n actions$.ofType(DELETE_BETSLIP_ODD).mergeMap(action => {\n const { oddId, betslipBetId } = action.payload;\n const betslipOddId = getBetslipOddId({ oddId, betslipBetId });\n\n delete BetslipTimeManager[betslipOddId];\n\n return Observable.empty();\n });\n\nexport const sendAnalyticsOnPlaceBet$: TypedEpic<\n CreateBetRequestAction | CreateBetFailAction,\n never\n> = actions$ =>\n actions$.ofType(CREATE_BETS_REQUEST, CREATE_BETS_FAIL).mergeMap(action => {\n const {\n type,\n payload: {\n args: { betslipOddIds },\n },\n } = action;\n\n const eventLabel = getAnalyticOddsInfo({ betslipOddIds });\n\n if (!eventLabel) return Observable.empty();\n\n const eventAction =\n type === CREATE_BETS_REQUEST ? Action.PlaceBet : Action.DeclineBet;\n\n const fieldsObject: FieldsObj = {\n eventCategory: Category.Betslip,\n eventAction,\n eventLabel,\n };\n\n sendAnalytics(fieldsObject, eventLabel);\n\n return Observable.empty();\n });\n\nexport const sendAnalyticsOnBetResult$: TypedEpic<\n CreateBetSuccessAction | UpdateBetAction,\n never\n> = (actions$, store) =>\n actions$.ofType(UPDATE_BET, CREATE_BETS_SUCCESS).switchMap(action => {\n const {\n entities: { bets },\n } = action.payload;\n\n const betId = keys(bets)[0];\n\n if (!betId) return Observable.empty();\n\n const bet = bets[betId];\n\n if (!bet) return Observable.empty();\n\n const { status } = bet;\n\n if (convertBetStatus(status) === App.BetslipStatus.PROCESSING) {\n return Observable.empty();\n }\n\n const betslipOdds = selectBetslipOdds(store.getState());\n\n const currentEventAction =\n convertBetStatus(status) === App.BetslipStatus.SUCCESS\n ? Action.AcceptedBet\n : Action.DeclineBet;\n\n const betslipOddIds = betslipOdds\n .filter(betslipOdd => betslipOdd.betId === betId)\n .keySeq()\n .toOrderedSet();\n\n const { search, pathname, hash } = window.location;\n\n const placeUrl = `${formatPathname(pathname)}${formatSearch(\n search\n )}${hash}`;\n\n betslipOddIds.forEach(betslipOddId => {\n const { category, label } = BetslipAttrManager[betslipOddId] || {};\n\n if (category && label) {\n const eventLabel = JSON.stringify({\n ...label,\n placeUrl,\n });\n const fieldsObject: FieldsObj = {\n eventCategory: category,\n eventAction: Action.PlaceOdd,\n };\n\n sendAnalytics(fieldsObject, eventLabel);\n }\n\n delete BetslipAttrManager[betslipOddId];\n });\n\n const eventLabel = getAnalyticOddsInfo({\n betslipOddIds,\n withClear: true,\n betId,\n });\n\n if (!eventLabel) return Observable.empty();\n\n const fieldsObject: FieldsObj = {\n eventCategory: Category.Betslip,\n eventAction: currentEventAction,\n };\n\n sendAnalytics(fieldsObject, eventLabel);\n\n return Observable.empty();\n });\n","import betslip, {\n Betslip as Types,\n BetslipDefault,\n} from '@gin-betting/betslip';\n\nimport UserDevice from 'services/user-device';\nimport handleBetslipModuleLoad from './async/handleBetslipModuleLoad';\nimport * as components from './components';\nimport * as constants from './constants';\nimport * as epics from './epics';\n\nconst {\n epics: { refetchStake, selectBetslipBetId, ...pickedEpics },\n} = betslip;\n\nexport type { Types as Betslip, BetslipDefault };\n\nconst betslipModule = {\n ...betslip,\n constants: { ...betslip.constants, ...constants },\n epics: {\n ...pickedEpics,\n ...epics,\n ...(!UserDevice.getInstance()?.isDeviceMobile() && {\n selectBetslipBetId,\n }),\n },\n components,\n};\n\nexport type BetslipModule = typeof betslipModule;\n\nexport default handleBetslipModuleLoad(betslipModule);\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.selectActiveBetslipOddIdsByBetslipBet = exports.selectBetslipOddIdsWithoutEntities = exports.selectBetslipOddIdsWithEntities = exports.selectIsBetslipOddConflict = exports.selectConflictBetslipOddIds = exports.selectConflictedMatchesIds = exports.selectOddButtonView = exports.selectInitialBetslipBet = exports.selectCombinations = exports.selectBetslipBetTotals = exports.selectBetslipOddsWithOddRatioByBetslipBet = exports.makeSelectCombinationView = exports.selectBetslipBetWithStatus = exports.selectBetslipOddsByBetslipBetId = exports.selectBetslipOddsByChosenBetslipBet = exports.makeSelectBetslipOdds = exports.selectChosenBetslipBet = exports.selectBetslipBet = exports.selectBetslipOdd = exports.selectOddUpdateStatus = exports.selectChosenBetslipBetId = exports.selectBetslipBetIds = exports.selectBetslipBets = exports.selectBetslipOddIds = exports.selectBetslipOdds = exports.selectCombinationFromProps = exports.selectCombinationNumberFromProps = exports.selectBetslipBetIdFromProps = exports.selectBetslipOddIdFromProps = exports.selectBetslip = void 0;\nvar reselect_1 = require(\"reselect\");\nvar immutable_1 = require(\"immutable\");\nvar debug_1 = __importDefault(require(\"debug\"));\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar utils_1 = require(\"./utils\");\nvar constants_1 = require(\"./constants\");\nvar _a = core_1.default.utils, getIdsFromBetslipOddId = _a.getIdsFromBetslipOddId, combine = _a.combine, getLetterByIndex = _a.getLetterByIndex, checkIsOddActiveByEntities = _a.checkIsOddActiveByEntities, _b = core_1.default.entities.selectors, selectMatches = _b.selectMatches, selectMarkets = _b.selectMarkets, selectOdds = _b.selectOdds, selectOddWithAvailability = _b.selectOddWithAvailability;\nvar debugPath = 'app:betslip:selectors:';\nvar selectBetslip = function (state) { return state.get(constants_1.NAME); };\nexports.selectBetslip = selectBetslip;\nvar selectBetslipOddIdFromProps = function (_, props) {\n return props.betslipOddId;\n};\nexports.selectBetslipOddIdFromProps = selectBetslipOddIdFromProps;\nvar selectBetslipBetIdFromProps = function (_, props) {\n var debug = debug_1.default(debugPath + \"selectBetslipBetIdFromProps\");\n debug('args', { props: props });\n return props.betslipBetId;\n};\nexports.selectBetslipBetIdFromProps = selectBetslipBetIdFromProps;\nvar selectCombinationNumberFromProps = function (_, props) {\n return props.combinationNumber;\n};\nexports.selectCombinationNumberFromProps = selectCombinationNumberFromProps;\n/** @deprecated */\nvar selectCombinationFromProps = function (_, props) {\n return props.combination;\n};\nexports.selectCombinationFromProps = selectCombinationFromProps;\nexports.selectBetslipOdds = reselect_1.createSelector(exports.selectBetslip, function (_a) {\n var betslipOdds = _a.betslipOdds;\n return betslipOdds;\n});\nexports.selectBetslipOddIds = reselect_1.createSelector(exports.selectBetslipOdds, function (betslipOdds) { return betslipOdds.keySeq().toOrderedSet(); });\nexports.selectBetslipBets = reselect_1.createSelector(exports.selectBetslip, function (_a) {\n var betslipBets = _a.betslipBets;\n return betslipBets;\n});\nexports.selectBetslipBetIds = reselect_1.createSelector(exports.selectBetslipBets, function (betslipBets) { return betslipBets.keySeq().toOrderedSet(); });\nexports.selectChosenBetslipBetId = reselect_1.createSelector(exports.selectBetslip, function (_a) {\n var chosenBetslipBetId = _a.chosenBetslipBetId;\n return chosenBetslipBetId;\n});\nexports.selectOddUpdateStatus = reselect_1.createSelector(exports.selectBetslip, function (_a) {\n var oddUpdateStatus = _a.oddUpdateStatus;\n return oddUpdateStatus;\n});\nexports.selectBetslipOdd = reselect_1.createSelector(exports.selectBetslipOddIdFromProps, exports.selectBetslipOdds, function (betslipOddId, betslipOdds) { return betslipOdds.get(betslipOddId); });\nexports.selectBetslipBet = reselect_1.createSelector(exports.selectBetslipBetIdFromProps, exports.selectBetslipBets, selectOdds, function (betslipBetId, betslipBets, odds) {\n var debug = debug_1.default(debugPath + \"selectBetslipBet\");\n debug('args without \"entities.odds\"', {\n betslipBetId: betslipBetId,\n betslipBets: betslipBets,\n });\n var betslipBet = betslipBets.get(betslipBetId);\n if (!betslipBet)\n return null;\n var betslipOddIds = betslipBet.betslipOddIds\n .filter(function (betslipOddId) {\n var oddId = getIdsFromBetslipOddId(betslipOddId).oddId;\n return odds.has(oddId);\n })\n .toOrderedSet();\n return __assign(__assign({}, betslipBet), { betslipOddIds: betslipOddIds });\n});\nexports.selectChosenBetslipBet = reselect_1.createSelector(exports.selectChosenBetslipBetId, exports.selectBetslipBets, function (chosenBetslipBetId, betslipBets) {\n var debug = debug_1.default(debugPath + \"selectChosenBetslipBet\");\n debug('args', { chosenBetslipBetId: chosenBetslipBetId, betslipBets: betslipBets });\n if (chosenBetslipBetId) {\n return betslipBets.get(chosenBetslipBetId);\n }\n return betslipBets.last();\n});\n/* eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types */\nfunction makeSelectBetslipOdds(currSelectBetslipBet) {\n return reselect_1.createSelector(currSelectBetslipBet, exports.selectBetslipOdds, function (betslipBet, betslipOdds) {\n return ((betslipBet === null || betslipBet === void 0 ? void 0 : betslipBet.betslipOddIds.toOrderedMap().map(function (betslipOddId) { return betslipOdds.get(betslipOddId); }).filter(function (betslipOdd) {\n return !!betslipOdd;\n })) || immutable_1.OrderedMap());\n });\n}\nexports.makeSelectBetslipOdds = makeSelectBetslipOdds;\nexports.selectBetslipOddsByChosenBetslipBet = makeSelectBetslipOdds(exports.selectChosenBetslipBet);\nexports.selectBetslipOddsByBetslipBetId = makeSelectBetslipOdds(exports.selectBetslipBet);\nexports.selectBetslipBetWithStatus = reselect_1.createSelector(exports.selectBetslipBet, exports.selectBetslipOdds, function (betslipBet, betslipOdds) {\n var debug = debug_1.default(debugPath + \"selectBetslipBetWithStatus\");\n debug('args', { betslipBet: betslipBet, betslipOdds: betslipOdds });\n if (!betslipBet)\n return null;\n var betslipOddIds = betslipBet.betslipOddIds;\n var status = utils_1.getStatus({ betslipOddIds: betslipOddIds, betslipOdds: betslipOdds });\n return __assign(__assign({}, betslipBet), { status: status });\n});\n/** @deprecated */\nvar makeSelectCombinationView = function (stakeMode) {\n return reselect_1.createSelector(exports.selectCombinationFromProps, exports.selectBetslipBet, selectOdds, function (combination, betslipBet, odds) {\n var debug = debug_1.default(debugPath + \"selectCachedCombinationView\");\n debug('args without \"entities.odds\"', { combination: combination, betslipBet: betslipBet });\n if (!betslipBet)\n return null;\n var stake = betslipBet.stake, betslipOddIds = betslipBet.betslipOddIds, systemSize = betslipBet.systemSize;\n var betslipOddIdsList = betslipOddIds.toList();\n var oddValuePerCombination = 1;\n var letters = combination.map(function (betslipOddId) {\n var oddId = getIdsFromBetslipOddId(betslipOddId).oddId;\n var odd = odds.get(oddId);\n debug('oddId, odd from entities', { oddId: oddId, odd: odd });\n if (odd) {\n oddValuePerCombination *= odd.value;\n }\n return getLetterByIndex(betslipOddIdsList.indexOf(betslipOddId));\n });\n return {\n stake: stakeMode === core_1.GQL.StakeMode.total\n ? utils_1.getStakePerCombination(systemSize, betslipOddIds, +stake)\n : +stake,\n oddValuePerCombination: oddValuePerCombination,\n letters: letters,\n };\n });\n};\nexports.makeSelectCombinationView = makeSelectCombinationView;\nexports.selectBetslipOddsWithOddRatioByBetslipBet = reselect_1.createSelector(exports.selectBetslipBet, exports.selectBetslipOdds, selectOdds, function (betslipBet, betslipOdds, odds) {\n var betslipOddsWithOddRatio = [];\n if (!betslipBet)\n return betslipOddsWithOddRatio;\n var betslipOddIds = betslipBet.betslipOddIds;\n betslipOddIds.forEach(function (betslipOddId) {\n var oddId = getIdsFromBetslipOddId(betslipOddId).oddId;\n var odd = odds.get(oddId);\n var betslipOdd = betslipOdds.get(betslipOddId);\n if (!betslipOdd || !odd)\n return;\n betslipOddsWithOddRatio.push(__assign(__assign({}, betslipOdd), { oddRatio: odd.value }));\n });\n return betslipOddsWithOddRatio;\n});\nexports.selectBetslipBetTotals = reselect_1.createSelector(exports.selectBetslipBet, exports.selectBetslipOddsWithOddRatioByBetslipBet, function (betslipBet, betslipOddsWithOddRatio) {\n var totals = { totalOdd: null, totalStake: 0, totalWin: 0 };\n if (!betslipBet)\n return totals;\n var mode = betslipBet.mode, stake = betslipBet.stake, systemSize = betslipBet.systemSize;\n switch (mode) {\n case core_1.GQL.BetType.SINGLE: {\n return utils_1.getSingleTotals(betslipOddsWithOddRatio);\n }\n case core_1.GQL.BetType.EXPRESS: {\n return utils_1.getExpressTotals(betslipOddsWithOddRatio, +stake);\n }\n case core_1.GQL.BetType.SYSTEM: {\n return utils_1.getSystemTotals(betslipOddsWithOddRatio, +stake, systemSize);\n }\n default: {\n return totals;\n }\n }\n});\nexports.selectCombinations = reselect_1.createSelector(exports.selectCombinationNumberFromProps, exports.selectBetslipBet, function (combinationNumber, betslipBet) {\n var debug = debug_1.default(debugPath + \"selectCombinations\");\n debug('args', { combinationNumber: combinationNumber, betslipBet: betslipBet });\n if (!betslipBet)\n return null;\n var betslipOddIds = betslipBet.betslipOddIds, systemSize = betslipBet.systemSize;\n var combinations = combine(betslipOddIds.toArray(), combinationNumber);\n var isChosen = systemSize.includes(combinationNumber);\n var betslipOddsSize = betslipOddIds.size;\n return { combinations: combinations, isChosen: isChosen, betslipOddsSize: betslipOddsSize };\n});\nexports.selectInitialBetslipBet = reselect_1.createSelector(exports.selectBetslipBets, exports.selectBetslipOdds, function (betslipBets, betslipOdds) {\n var debug = debug_1.default(debugPath + \"selectInitialBetslipBet\");\n debug('args', { betslipBets: betslipBets, betslipOdds: betslipOdds });\n return utils_1.getInitialBetslipBet({ betslipBets: betslipBets, betslipOdds: betslipOdds });\n});\nexports.selectOddButtonView = reselect_1.createSelector(selectOddWithAvailability, exports.selectChosenBetslipBet, exports.selectBetslipOddsByChosenBetslipBet, function (_a, chosenBetslipBet, chosenBetslipOdds) {\n var odd = _a.odd, isActive = _a.isActive;\n var emptyView = {\n isSelected: false,\n betslipBetId: '',\n isActive: false,\n betType: core_1.GQL.BetType.SINGLE,\n status: core_1.App.BetslipStatus.INITIAL,\n };\n if (!odd || !chosenBetslipBet) {\n return emptyView;\n }\n var betslipOddIds = chosenBetslipBet.betslipOddIds, betslipBetId = chosenBetslipBet.id, betType = chosenBetslipBet.mode;\n var betslipOddId = utils_1.getBetslipOddId({ oddId: odd.id, betslipBetId: betslipBetId });\n var isSelected = betslipOddIds.has(betslipOddId);\n return {\n isSelected: isSelected,\n betslipBetId: betslipBetId,\n isActive: isActive,\n status: utils_1.getStatus({\n betslipOddIds: betslipOddIds,\n betslipOdds: chosenBetslipOdds,\n }),\n // NOTE: Uncomment to enable multi betslip!\n // status:\n // betType === GQL.BetType.SINGLE\n // ? chosenBetslipOdds.get(betslipOddId)?.singleStatus || App.BetslipStatus.INITIAL\n // : getStatus({\n // betslipOddIds,\n // betslipOdds: chosenBetslipOdds,\n // }),\n betType: betType,\n };\n});\nexports.selectConflictedMatchesIds = reselect_1.createSelector(exports.selectBetslipBet, selectMatches, function (betslipBet, matches) {\n if (!betslipBet || betslipBet.mode === core_1.GQL.BetType.SINGLE)\n return [];\n var matchesInBetslip = betslipBet.betslipOddIds\n .map(function (betslipOddId) {\n var matchId = getIdsFromBetslipOddId(betslipOddId).matchId;\n return matches.get(matchId);\n })\n .filter(function (m) { return !!m; });\n return matchesInBetslip\n .groupBy(function (_a) {\n var tournament = _a.tournament;\n return tournament;\n })\n .filter(function (group) {\n return group.count() > 1;\n })\n .reduce(function (acc, group) {\n var result = group.some(function (_a) {\n var type = _a.type;\n return type === core_1.GQL.SportEventType.OUTRIGHT;\n })\n ? acc.concat(group.map(function (_a) {\n var id = _a.id;\n return id;\n }).toArray())\n : acc;\n return result;\n }, []);\n});\nexports.selectConflictBetslipOddIds = reselect_1.createSelector(exports.selectBetslipBet, exports.selectConflictedMatchesIds, function (betslipBet, conflictedMatchesIds) {\n var debug = debug_1.default(debugPath + \"selectConflictBetslipOddIds\");\n debug('args', { betslipBet: betslipBet });\n if (!betslipBet || betslipBet.mode === core_1.GQL.BetType.SINGLE)\n return [];\n var betslipOddIds = betslipBet.betslipOddIds;\n var conflictsMap = {};\n var entityIds = betslipOddIds.map(function (betslipOddId) {\n var matchId = getIdsFromBetslipOddId(betslipOddId).matchId;\n if (matchId in conflictsMap ||\n conflictedMatchesIds.includes(matchId)) {\n conflictsMap[matchId] = true;\n }\n else {\n conflictsMap[matchId] = false;\n }\n return { entityId: matchId, betslipOddId: betslipOddId };\n });\n var conflictBetslipOddIds = entityIds.reduce(function (acc, _a) {\n var entityId = _a.entityId, betslipOddId = _a.betslipOddId;\n if (conflictsMap[entityId]) {\n acc.push(betslipOddId);\n }\n return acc;\n }, []);\n return conflictBetslipOddIds;\n});\nexports.selectIsBetslipOddConflict = reselect_1.createSelector(exports.selectBetslipOddIdFromProps, exports.selectConflictBetslipOddIds, function (betslipOddId, conflictBetslipOddIds) {\n return conflictBetslipOddIds.includes(betslipOddId);\n});\nexports.selectBetslipOddIdsWithEntities = reselect_1.createSelector(exports.selectBetslipOddIds, selectMatches, selectMarkets, selectOdds, function (betslipOddIds, matches, markets, odds) {\n var debug = debug_1.default(debugPath + \"selectOddButtonView\");\n debug('args without \"entities.matches\", \"entities.markets\", \"entities.odds\"', { betslipOddIds: betslipOddIds });\n return betslipOddIds.filter(function (betslipOddId) {\n var _a = getIdsFromBetslipOddId(betslipOddId), oddId = _a.oddId, marketId = _a.marketId, matchId = _a.matchId;\n var hasMatch = matches.has(matchId);\n var hasMarket = markets.has(marketId);\n var hasOdd = odds.has(oddId);\n debug('checker', {\n hasMatch: hasMatch,\n hasMarket: hasMarket,\n hasOdd: hasOdd,\n });\n return hasMatch && hasMarket && hasOdd;\n });\n});\nexports.selectBetslipOddIdsWithoutEntities = reselect_1.createSelector(exports.selectBetslipOddIds, exports.selectBetslipOddIdsWithEntities, function (betslipOddIds, betslipOddIdsWithEntities) {\n return betslipOddIds.filterNot(function (betslipOddId) {\n return betslipOddIdsWithEntities.has(betslipOddId);\n });\n});\nexports.selectActiveBetslipOddIdsByBetslipBet = reselect_1.createSelector(exports.selectBetslipBet, selectMatches, selectMarkets, selectOdds, function (betslipBet, matches, markets, odds) {\n return (betslipBet === null || betslipBet === void 0 ? void 0 : betslipBet.betslipOddIds.filter(function (betslipOddId) {\n var _a = getIdsFromBetslipOddId(betslipOddId), oddId = _a.oddId, marketId = _a.marketId, matchId = _a.matchId;\n return checkIsOddActiveByEntities({\n oddId: oddId,\n marketId: marketId,\n sportEventId: matchId,\n matches: matches,\n markets: markets,\n odds: odds,\n });\n })) || immutable_1.OrderedSet();\n});\n//# sourceMappingURL=selectors.js.map","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"oddValue__container___pJYzD\",\"increased\":\"oddValue__increased___3JD26\",\"arrow\":\"oddValue__arrow___Cqof3\",\"decreased\":\"oddValue__decreased___3rZ5b\",\"blinking-arrow\":\"oddValue__blinking-arrow___mtx6_\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"freebet_518b8\",\n \"use\": \"freebet_518b8-usage\",\n \"viewBox\": \"0 0 20 12\",\n \"content\": \"\\n\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateBetslipOddsByBet = exports.getMissingMatches = exports.setInitialBetslip = exports.deleteBetslipBet = exports.placeBet = exports.createBet = exports.addBetslipBet = exports.adoptionUnaffectedBetslipOdds = exports.changeBetslipBetStake = exports.changeBetslipOddStake = exports.deleteBetslipOdd = exports.addBetslipOdd = exports.toggleSystemCombination = exports.choseBetslipBetId = exports.deleteBetslipOdds = exports.changeOddUpdateStatus = exports.changeBetslipMode = void 0;\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nvar immutable_1 = require(\"immutable\");\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar selectors_1 = require(\"./selectors\");\nvar utils_1 = require(\"./utils\");\nvar constants_1 = require(\"./constants\");\nvar _a = core_1.default.utils, getIdsFromBetslipOddId = _a.getIdsFromBetslipOddId, getBettingOptions = _a.getBettingOptions, makeAction = _a.makeAction, _b = core_1.default.entities, makeGetMissingMatches = _b.actions.makeGetMissingMatches, selectOdds = _b.selectors.selectOdds;\nfunction changeBetslipMode(payload) {\n return makeAction(constants_1.CHANGE_BET_MODE, payload);\n}\nexports.changeBetslipMode = changeBetslipMode;\nfunction changeOddUpdateStatus(payload) {\n return makeAction(constants_1.CHANGE_COEF_UPDATES, payload);\n}\nexports.changeOddUpdateStatus = changeOddUpdateStatus;\nfunction deleteBetslipOdds(payload) {\n return makeAction(constants_1.DELETE_BETSLIP_ODDS, payload);\n}\nexports.deleteBetslipOdds = deleteBetslipOdds;\nfunction choseBetslipBetId(payload) {\n return makeAction(constants_1.CHOSE_BETSLIP_BET_ID, payload);\n}\nexports.choseBetslipBetId = choseBetslipBetId;\nfunction toggleSystemCombination(payload) {\n return makeAction(constants_1.TOGGLE_SYSTEM_COMBINATION, payload);\n}\nexports.toggleSystemCombination = toggleSystemCombination;\nfunction addBetslipOdd(payload) {\n return makeAction(constants_1.ADD_BETSLIP_ODD, payload);\n}\nexports.addBetslipOdd = addBetslipOdd;\nfunction deleteBetslipOdd(payload) {\n return makeAction(constants_1.DELETE_BETSLIP_ODD, payload);\n}\nexports.deleteBetslipOdd = deleteBetslipOdd;\nfunction changeBetslipOddStake(payload) {\n return makeAction(constants_1.CHANGE_BETSLIP_ODD_STAKE, payload);\n}\nexports.changeBetslipOddStake = changeBetslipOddStake;\nfunction changeBetslipBetStake(payload) {\n return makeAction(constants_1.CHANGE_BETSLIP_BET_STAKE, payload);\n}\nexports.changeBetslipBetStake = changeBetslipBetStake;\nfunction adoptionUnaffectedBetslipOdds(payload) {\n return makeAction(constants_1.ADOPT_UNAFFECTED_BETSLIP_ODDS, payload);\n}\nexports.adoptionUnaffectedBetslipOdds = adoptionUnaffectedBetslipOdds;\nfunction addBetslipBet() {\n return makeAction(constants_1.ADD_BETSLIP_BET);\n}\nexports.addBetslipBet = addBetslipBet;\nfunction createBet(payload) {\n return {\n type: constants_1.CREATE_BETS_REQUEST,\n payload: __assign({ method: 'placeBet' }, payload),\n meta: {\n isApiCall: true,\n skipBatching: true,\n },\n };\n}\nexports.createBet = createBet;\nfunction placeBet(_a) {\n var inputUnaffectedBetslipOddIds = _a.unaffectedBetslipOddIds, meta = _a.meta, stakeMode = _a.stakeMode;\n return function (dispatch, getState) {\n var state = getState();\n var betslipBet = selectors_1.selectChosenBetslipBet(state);\n if (!betslipBet) {\n console.warn(\"Can't find betslipBet. BetslipBetId: \" + state.betslip.chosenBetslipBetId + \" from state\");\n return;\n }\n var oddAcceptStrategy = selectors_1.selectOddUpdateStatus(state);\n var odds = selectOdds(state);\n var currency = getBettingOptions().currency;\n var betslipBetId = betslipBet.id, mode = betslipBet.mode, betslipOddIds = betslipBet.betslipOddIds;\n var betslipOdds = selectors_1.selectBetslipOddsByBetslipBetId(state, {\n betslipBetId: betslipBetId,\n });\n var status = utils_1.getStatus({ betslipOddIds: betslipOddIds, betslipOdds: betslipOdds });\n var isInitial = status === core_1.App.BetslipStatus.INITIAL;\n if (isInitial) {\n dispatch(addBetslipBet());\n }\n switch (mode) {\n case core_1.GQL.BetType.SINGLE: {\n var unaffectedBetslipOddIds_1 = __spreadArray([], inputUnaffectedBetslipOddIds);\n var affectedBetslipOdds = betslipOdds.filter(function (_a) {\n var betslipOddId = _a.id, singleStake = _a.singleStake, singleStatus = _a.singleStatus;\n var isAffected = !unaffectedBetslipOddIds_1.includes(betslipOddId);\n if (isAffected &&\n (+singleStake <= 0 ||\n !lodash_1.includes(constants_1.BETSLIP_ODD_STATUSES_TO_PLACE_BET, singleStatus))) {\n isAffected = false;\n unaffectedBetslipOddIds_1.push(betslipOddId);\n }\n return isAffected;\n });\n affectedBetslipOdds.forEach(function (betslipOdd) {\n var oddId = getIdsFromBetslipOddId(betslipOdd.id).oddId;\n var odd = odds.get(oddId);\n if (odd) {\n var newBet = __assign(__assign({}, betslipOdd), { oddRatio: odd.value });\n var variables = utils_1.composeBet({\n currencyCode: currency,\n stake: +betslipOdd.singleStake,\n newBets: [newBet],\n type: mode,\n oddAcceptStrategy: oddAcceptStrategy,\n meta: meta,\n stakeMode: stakeMode,\n });\n var args = {\n betslipBetId: betslipBet.id,\n betslipOddIds: immutable_1.OrderedSet([betslipOdd.id]),\n };\n dispatch(createBet({ variables: variables, args: args }));\n }\n else {\n console.warn(\"Can't find odd. OddId: \" + oddId + \" from BetslipOddId\");\n dispatch(deleteBetslipOdd({ betslipBetId: betslipBetId, oddId: oddId }));\n }\n });\n break;\n }\n case core_1.GQL.BetType.EXPRESS:\n case core_1.GQL.BetType.SYSTEM: {\n var newBets_1 = [];\n var isValid = betslipOdds.every(function (betslipOdd) {\n var oddId = getIdsFromBetslipOddId(betslipOdd.id).oddId;\n var odd = odds.get(oddId);\n if (odd) {\n newBets_1.push(__assign(__assign({}, betslipOdd), { oddRatio: odd.value }));\n return true;\n }\n console.warn(\"Can't find odd. OddId: \" + oddId + \" from BetslipOddId\");\n return false;\n });\n if (isValid) {\n var variables = utils_1.composeBet({\n stake: +betslipBet.stake,\n type: mode,\n currencyCode: currency,\n newBets: newBets_1,\n systemSize: betslipBet.systemSize,\n oddAcceptStrategy: oddAcceptStrategy,\n meta: meta,\n stakeMode: stakeMode,\n });\n var args = {\n betslipBetId: betslipBet.id,\n betslipOddIds: betslipOddIds,\n };\n dispatch(createBet({ variables: variables, args: args }));\n }\n break;\n }\n default:\n break;\n }\n };\n}\nexports.placeBet = placeBet;\nfunction deleteBetslipBet(payload) {\n return makeAction(constants_1.DELETE_BETSLIP_BET, payload);\n}\nexports.deleteBetslipBet = deleteBetslipBet;\nfunction setInitialBetslip(payload) {\n return makeAction(constants_1.SET_INITIAL_BETSLIP, payload);\n}\nexports.setInitialBetslip = setInitialBetslip;\nexports.getMissingMatches = makeGetMissingMatches({\n type: constants_1.GET_MISSING_MATCHES_REQUEST,\n withMarketsCount: false,\n});\nfunction updateBetslipOddsByBet(payload) {\n return makeAction(constants_1.UPDATE_BETSLIP_ODDS_BY_BET, payload);\n}\nexports.updateBetslipOddsByBet = updateBetslipOddsByBet;\n//# sourceMappingURL=actions.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleAction = void 0;\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar actions_1 = require(\"./actions\");\nvar constants_1 = require(\"./constants\");\nvar selectBets = core_1.default.entities.selectors.selectBets, UPDATE_BET = core_1.default.async.constants.UPDATE_BET;\nfunction handleAction(state, dispatch, action, next) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, entities, betslipOddIds, betslipBetId, bets, betsInStore, betId, betInStore;\n return __generator(this, function (_b) {\n _a = action.payload, entities = _a.entities, betslipOddIds = _a.betslipOddIds, betslipBetId = _a.betslipBetId;\n bets = entities.bets;\n betsInStore = selectBets(state);\n if (!bets) {\n return [2 /*return*/, next(action)];\n }\n betId = Object.keys(bets)[0];\n if (!betId) {\n return [2 /*return*/, next(action)];\n }\n betInStore = betsInStore.get(betId);\n if (!betInStore) {\n return [2 /*return*/, next(action)];\n }\n return [2 /*return*/, dispatch(actions_1.updateBetslipOddsByBet({\n betslipOddIds: betslipOddIds,\n betslipBetId: betslipBetId,\n bet: betInStore,\n }))];\n });\n });\n}\nexports.handleAction = handleAction;\n// type UpdateBetAction = TypedAction<{\n// entities: Pick;\n// }>;\n// function handleNotEnoughBalanceError(action: UpdateBetAction): void {\n// if (action.type !== UPDATE_BET) return;\n// const bets = get(action, 'payload.entities.bets');\n// if (!bets) return;\n// const bet: View.Bet = bets[Object.keys(bets)[0]];\n// if (bet.declineReason === 'not_enough_balance') {\n// const history = getHistory();\n// const paymentUrlHash = '#popup-payments';\n// const currentUrlHash = history.location.hash;\n// if (!currentUrlHash.includes(paymentUrlHash)) {\n// // We need to trigger \"onhashchange\" event\n// location.hash = paymentUrlHash;\n// // history.push({ hash: paymentUrlHash });\n// }\n// }\n// }\nfunction middleware(_a) {\n var handleBet = _a.handleBet;\n return function (store) { return function (next) { return function (action) {\n var dispatch = store.dispatch, getState = store.getState;\n var state = getState();\n if (action.type === UPDATE_BET) {\n var bets = lodash_1.get(action, 'payload.entities.bets');\n if (bets) {\n var betId = Object.keys(bets)[0];\n if (betId) {\n var bet = bets[betId];\n handleBet(bet);\n }\n }\n }\n // this handles situation when UPDATE_BET fired before CREATE_BET_SUCCESS\n // need to fix!\n if (action.type === constants_1.CREATE_BETS_SUCCESS) {\n return handleAction(state, dispatch, action, next);\n }\n return next(action);\n }; }; };\n}\nexports.default = middleware;\n//# sourceMappingURL=middleware.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useSuggests = exports.usePollingMinStake = void 0;\nvar usePollingMinStake_1 = require(\"./usePollingMinStake\");\nObject.defineProperty(exports, \"usePollingMinStake\", { enumerable: true, get: function () { return __importDefault(usePollingMinStake_1).default; } });\nvar useSuggests_1 = require(\"./useSuggests\");\nObject.defineProperty(exports, \"useSuggests\", { enumerable: true, get: function () { return __importDefault(useSuggests_1).default; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMinBet = exports.getNumberCombinations = exports.getStakePerCombination = exports.getSuggests = exports.getSystemTotals = exports.getExpressTotals = exports.getSingleTotals = exports.convertBetslipOddToMaxBetOddType = exports.convertNewBetsToMaxBetOddTypes = exports.convertViewMaxStake = exports.getAvailableStakes = exports.getErrorMsg = exports.getInitialBetslipBet = exports.createBetslipOdd = exports.expireBetslip = exports.outboundExpireBetslipTransform = exports.inboundExpireBetslipTransform = exports.createBetslipBet = exports.getBetslipOddId = exports.createTransformDebug = exports.outboundTransform = exports.inboundTransform = exports.getNextModeBySize = exports.getStatus = exports.composeBet = exports.getBetSystemSizes = exports.handleRehydrate = void 0;\nvar immutable_1 = require(\"immutable\");\nvar lodash_1 = require(\"lodash\");\nvar redux_persist_1 = require(\"redux-persist\");\nvar debug_1 = __importDefault(require(\"debug\"));\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar constants_1 = require(\"./constants\");\nvar handleRehydrate_1 = require(\"./reducer-handlers/handleRehydrate\");\nObject.defineProperty(exports, \"handleRehydrate\", { enumerable: true, get: function () { return __importDefault(handleRehydrate_1).default; } });\nvar _a = core_1.default.utils, splitOddPath = _a.splitOddPath, getIdsFromBetslipOddId = _a.getIdsFromBetslipOddId, joinIdPath = _a.joinIdPath, isArgsImmutable = _a.isArgsImmutable, replaceBetslipBetIdInBetslipOddId = _a.replaceBetslipBetIdInBetslipOddId, combine = _a.combine, appServiceLocator = core_1.default.appServiceLocator;\nvar debugPath = 'app:betslip:utils:';\nvar apiClient = appServiceLocator.get('apiClient');\nvar prevMinBet = 0;\nfunction getBetSystemSizes(_a) {\n var betType = _a.betType, _b = _a.selectionsCount, selectionsCount = _b === void 0 ? 1 : _b, _c = _a.systemSize, systemSize = _c === void 0 ? [] : _c;\n switch (betType) {\n case core_1.GQL.BetType.SINGLE: {\n return [1];\n }\n case core_1.GQL.BetType.EXPRESS: {\n return [selectionsCount];\n }\n case core_1.GQL.BetType.SYSTEM: {\n return systemSize.filter(function (combinationNumber) { return combinationNumber < selectionsCount; });\n }\n default: {\n return [];\n }\n }\n}\nexports.getBetSystemSizes = getBetSystemSizes;\nfunction composeBet(_a) {\n var stake = _a.stake, type = _a.type, newBets = _a.newBets, systemSize = _a.systemSize, oddAcceptStrategy = _a.oddAcceptStrategy, meta = _a.meta, stakeMode = _a.stakeMode;\n var debug = debug_1.default(debugPath + \"composeBet\");\n debug('args', {\n stake: stake,\n type: type,\n newBets: newBets,\n systemSize: systemSize,\n });\n // FIXME: naming \"odds/bets\"\n var odds = newBets.map(function (newBet) {\n var id = newBet.id, oddRatio = newBet.oddRatio;\n var oddPathId = getIdsFromBetslipOddId(id).oddId;\n var _a = splitOddPath(oddPathId), matchId = _a.matchId, marketId = _a.marketId, oddId = _a.oddId;\n return {\n matchId: matchId,\n marketId: marketId,\n oddId: oddId,\n ratio: oddRatio,\n };\n });\n var variables = {\n type: type,\n stake: stake,\n odds: odds,\n systemSize: getBetSystemSizes({\n betType: type,\n selectionsCount: odds.length,\n systemSize: systemSize,\n }),\n meta: meta,\n stakeMode: stakeMode,\n oddAcceptStrategy: constants_1.ODD_ACCEPT_STRATEGIES_MAPPING[oddAcceptStrategy],\n };\n return variables;\n}\nexports.composeBet = composeBet;\nfunction extractStatusFromBetslipOdd(betslipOdd) {\n return betslipOdd ? betslipOdd.singleStatus : core_1.App.BetslipStatus.INITIAL;\n}\nfunction getStatus(args) {\n var debug = debug_1.default(debugPath + \"getStatus\");\n debug('args', args);\n var statuses;\n if (isArgsImmutable(args)) {\n var betslipOddIds = args.betslipOddIds, betslipOdds_1 = args.betslipOdds;\n statuses = betslipOddIds.map(function (betslipOddId) {\n return extractStatusFromBetslipOdd(betslipOdds_1.get(betslipOddId));\n });\n }\n else {\n var betslipOddIds = args.betslipOddIds, betslipOdds_2 = args.betslipOdds;\n statuses = immutable_1.OrderedSet(betslipOddIds.map(function (betslipOddId) {\n return extractStatusFromBetslipOdd(betslipOdds_2[betslipOddId]);\n }));\n }\n if (statuses.has(core_1.App.BetslipStatus.PROCESSING)) {\n return core_1.App.BetslipStatus.PROCESSING;\n }\n if (statuses.has(core_1.App.BetslipStatus.ERROR)) {\n return core_1.App.BetslipStatus.ERROR;\n }\n if (statuses.has(core_1.App.BetslipStatus.SUCCESS)) {\n return core_1.App.BetslipStatus.SUCCESS;\n }\n return core_1.App.BetslipStatus.INITIAL;\n}\nexports.getStatus = getStatus;\nfunction getNextModeBySize(_a) {\n var mode = _a.mode, nextBetslipOddIds = _a.nextBetslipOddIds, _b = _a.isIncreasing, isIncreasing = _b === void 0 ? false : _b;\n var debug = debug_1.default('app:betslip:utils:getNextModeBySize');\n var nextSize = nextBetslipOddIds.size;\n debug('args', {\n mode: mode,\n nextSize: nextSize,\n isIncreasing: isIncreasing,\n });\n if (nextSize < constants_1.MIN_EXPRESS_SIZE)\n return core_1.GQL.BetType.SINGLE;\n if (isIncreasing) {\n var firstBetslipOddId = nextBetslipOddIds.first();\n var lastBetslipOddId = nextBetslipOddIds.last();\n if (nextSize === constants_1.MIN_EXPRESS_SIZE &&\n firstBetslipOddId &&\n lastBetslipOddId) {\n var firstBetslipOddIds = getIdsFromBetslipOddId(firstBetslipOddId);\n var lastBetslipOddIds = getIdsFromBetslipOddId(lastBetslipOddId);\n var isConflict = lastBetslipOddIds.matchId === firstBetslipOddIds.matchId ||\n lastBetslipOddIds.marketId === firstBetslipOddIds.marketId;\n if (!isConflict) {\n return core_1.GQL.BetType.EXPRESS;\n }\n }\n }\n else if (mode === core_1.GQL.BetType.SYSTEM && nextSize === constants_1.MIN_EXPRESS_SIZE) {\n return core_1.GQL.BetType.EXPRESS;\n }\n return mode;\n}\nexports.getNextModeBySize = getNextModeBySize;\nfunction inboundTransform(inboundState, key) {\n if (process.env.NODE_ENV === 'production')\n return inboundState;\n var debug = debug_1.default(debugPath + \"createTransform\");\n debug('serialized and stored', {\n inboundState: inboundState,\n key: key,\n });\n var betslipBets = inboundState.betslipBets, betslipOdds = inboundState.betslipOdds;\n var wasteBetslipOdds = betslipOdds.filter(function (betslipOdd) {\n var keys = Object.keys(betslipOdd);\n return keys.length !== 9;\n });\n var wasteBetslipBets = betslipBets.filter(function (betslipBet) {\n var keys = Object.keys(betslipBet);\n var wrongBetslipOddIds = betslipBet.betslipOddIds.filter(function (betslipOddId) { return !betslipOdds.has(betslipOddId); });\n if (wrongBetslipOddIds.size > 0) {\n console.warn('BetslipBet has wrongBetslipOddIds.', {\n wrongBetslipOddIds: wrongBetslipOddIds,\n betslipOdds: betslipOdds,\n });\n return true;\n }\n return keys.length !== 6;\n });\n if (wasteBetslipOdds.size > 0) {\n console.warn('FIX wasteBetslipOdds:', {\n wasteBetslipOdds: wasteBetslipOdds,\n wasteBetslipBets: wasteBetslipBets,\n });\n }\n if (wasteBetslipBets.size > 0) {\n console.warn('FIX wasteBetslipBets:', {\n wasteBetslipOdds: wasteBetslipOdds,\n wasteBetslipBets: wasteBetslipBets,\n });\n }\n return inboundState;\n}\nexports.inboundTransform = inboundTransform;\nfunction outboundTransform(outboundState, key) {\n var debug = debug_1.default(debugPath + \"createTransform\");\n debug('rehydrated into redux', {\n outboundState: outboundState,\n key: key,\n });\n return outboundState;\n}\nexports.outboundTransform = outboundTransform;\nexports.createTransformDebug = redux_persist_1.createTransform(inboundTransform, outboundTransform, { whitelist: ['betslip'] });\nvar getBetslipOddId = function (_a) {\n var oddId = _a.oddId, betslipBetId = _a.betslipBetId;\n return joinIdPath(oddId, betslipBetId);\n};\nexports.getBetslipOddId = getBetslipOddId;\nfunction createBetslipBet(predefinedBetslipOdds) {\n if (predefinedBetslipOdds === void 0) { predefinedBetslipOdds = []; }\n var betslipBetId = \"\" + Date.now();\n var betslipOddIds = predefinedBetslipOdds.map(function (betslipOddId) {\n return replaceBetslipBetIdInBetslipOddId({\n betslipOddId: betslipOddId,\n newBetslipBetId: betslipBetId,\n });\n });\n return {\n id: betslipBetId,\n mode: core_1.GQL.BetType.SINGLE,\n stake: '',\n betslipOddIds: immutable_1.OrderedSet(betslipOddIds),\n systemSize: [],\n };\n}\nexports.createBetslipBet = createBetslipBet;\nfunction inboundExpireBetslipTransform(inboundState) {\n var currentTime = Date.now();\n var hour = 3600000;\n var hourLater = currentTime + hour;\n inboundState.expireAt = hourLater;\n return inboundState;\n}\nexports.inboundExpireBetslipTransform = inboundExpireBetslipTransform;\nfunction outboundExpireBetslipTransform(outboundState) {\n var defaultState = {\n betslipBets: {},\n betslipOdds: {},\n };\n var expirationDate = outboundState.expireAt;\n if (expirationDate) {\n if (expirationDate < Date.now()) {\n return defaultState;\n }\n }\n return outboundState;\n}\nexports.outboundExpireBetslipTransform = outboundExpireBetslipTransform;\nexports.expireBetslip = redux_persist_1.createTransform(inboundExpireBetslipTransform, outboundExpireBetslipTransform, { whitelist: ['betslip'] });\nfunction createBetslipOdd(betslipOddId) {\n return {\n id: betslipOddId,\n betId: null,\n fixedCoef: null,\n singleStatus: core_1.App.BetslipStatus.INITIAL,\n singleStake: '',\n };\n}\nexports.createBetslipOdd = createBetslipOdd;\nfunction getInitialBetslipBet(args) {\n var debug = debug_1.default(debugPath + \"getInitialBetslipBet\");\n debug('args', args);\n if (isArgsImmutable(args)) {\n return args.betslipBets.findLast(function (betslipBet) {\n var betslipOddIds = betslipBet.betslipOddIds;\n var status = getStatus({\n betslipOddIds: betslipOddIds,\n betslipOdds: args.betslipOdds,\n });\n return status === core_1.App.BetslipStatus.INITIAL;\n });\n }\n var betslipBets = args.betslipBets, betslipOdds = args.betslipOdds;\n return lodash_1.findLast(betslipBets, function (betslipBet) {\n var betslipOddIds = betslipBet.betslipOddIds;\n var status = getStatus({\n betslipOddIds: betslipOddIds,\n betslipOdds: betslipOdds,\n });\n return status === core_1.App.BetslipStatus.INITIAL;\n });\n}\nexports.getInitialBetslipBet = getInitialBetslipBet;\nfunction getErrorMsg(singleError, formatMessage, messages) {\n var debug = debug_1.default(debugPath + \"getErrorMsg\");\n debug('args', {\n singleError: singleError,\n });\n if (!singleError) {\n console.warn('Can not found error message or decline reason');\n return formatMessage(messages.placeBetError);\n }\n var errorMessageId = constants_1.errorCodes[singleError] ||\n lodash_1.find(constants_1.PARTS_OF_ERROR_CODES, function (_msg, partOfErrorCode) {\n return singleError.includes(partOfErrorCode);\n });\n if (errorMessageId && messages[errorMessageId]) {\n return formatMessage(messages[errorMessageId]);\n }\n if (singleError.includes('Internal Error')) {\n return formatMessage(messages.internalError);\n }\n var value = singleError.replace(/^\\D+/g, '');\n var text = singleError.replace(value, '');\n var messageId = constants_1.errorCodes[text];\n if (messageId && messages[messageId]) {\n return formatMessage(messages[messageId]) + \" \" + value;\n }\n console.warn(\"Key not found in errorCodes. Error msg: \" + singleError);\n return singleError;\n}\nexports.getErrorMsg = getErrorMsg;\nfunction getAvailableStakes(maxStake, parts) {\n if (parts === void 0) { parts = 5; }\n var maxStakeNumber = +maxStake;\n if (lodash_1.isNaN(maxStakeNumber) || parts < 1 || maxStakeNumber <= 0)\n return [];\n if (maxStakeNumber < 1)\n return [maxStakeNumber];\n var minStake = maxStakeNumber / parts;\n return lodash_1.reduce(lodash_1.range(1, parts + 1), function (availableStakes, currentPart) {\n var nextStake = minStake * currentPart;\n if (currentPart === parts) {\n nextStake = +convertViewMaxStake(nextStake.toString());\n }\n else {\n nextStake = Math.floor(nextStake);\n }\n if (nextStake !== 0 && !availableStakes.includes(nextStake)) {\n availableStakes.push(nextStake);\n }\n return availableStakes;\n }, []);\n}\nexports.getAvailableStakes = getAvailableStakes;\nfunction convertViewMaxStake(maxStake) {\n var maxStakeNumber = +maxStake;\n if (lodash_1.isNaN(maxStakeNumber)) {\n return '';\n }\n var withRound = maxStakeNumber > constants_1.ROUND_MAX_STAKE;\n var result;\n if (withRound) {\n result = Math.floor(maxStakeNumber);\n }\n else {\n result = Math.floor(maxStakeNumber * 100) / 100;\n }\n return result.toString();\n}\nexports.convertViewMaxStake = convertViewMaxStake;\nfunction convertNewBetsToMaxBetOddTypes(newBets) {\n return newBets.map(function (bet) {\n var oddRatio = bet.oddRatio, id = bet.id;\n var _a = getIdsFromBetslipOddId(id), marketId = _a.marketId, matchId = _a.matchId, oddId = _a.oddId;\n return {\n marketId: marketId,\n matchId: matchId,\n oddId: oddId,\n oddRatio: oddRatio,\n };\n });\n}\nexports.convertNewBetsToMaxBetOddTypes = convertNewBetsToMaxBetOddTypes;\nfunction convertBetslipOddToMaxBetOddType(betslipOddId, oddRatio) {\n var _a = getIdsFromBetslipOddId(betslipOddId), marketId = _a.marketId, matchId = _a.matchId, oddId = _a.oddId;\n return {\n marketId: marketId,\n matchId: matchId,\n oddId: oddId,\n oddRatio: oddRatio,\n };\n}\nexports.convertBetslipOddToMaxBetOddType = convertBetslipOddToMaxBetOddType;\nfunction getSingleTotals(betslipOddsWithOddRatio) {\n var totals = {\n totalOdd: null,\n totalWin: 0,\n totalStake: 0,\n };\n var isOneBetslipOdd = betslipOddsWithOddRatio.length === 1;\n lodash_1.forEach(betslipOddsWithOddRatio, function (betslipOddWithOddRatio) {\n var singleStake = betslipOddWithOddRatio.singleStake, singleStatus = betslipOddWithOddRatio.singleStatus, fixedCoef = betslipOddWithOddRatio.fixedCoef, oddRatio = betslipOddWithOddRatio.oddRatio;\n var ratio = lodash_1.includes(constants_1.BETSLIP_ODD_STATUSES_TO_PLACE_BET, singleStatus)\n ? oddRatio\n : fixedCoef || oddRatio;\n if (isOneBetslipOdd) {\n totals.totalOdd = ratio;\n }\n totals.totalWin += ratio * +singleStake;\n totals.totalStake += +singleStake;\n });\n return totals;\n}\nexports.getSingleTotals = getSingleTotals;\nfunction getExpressTotals(betslipOddsWithOddRatio, totalStake) {\n var totalOdd = betslipOddsWithOddRatio.reduce(function (res, bet) {\n var singleStatus = bet.singleStatus, fixedCoef = bet.fixedCoef, oddRatio = bet.oddRatio;\n var ratio = lodash_1.includes(constants_1.BETSLIP_ODD_STATUSES_TO_PLACE_BET, singleStatus)\n ? oddRatio\n : fixedCoef || oddRatio;\n return res * ratio || ratio;\n }, 0);\n return {\n totalOdd: totalOdd,\n totalStake: totalStake,\n totalWin: totalOdd * totalStake,\n };\n}\nexports.getExpressTotals = getExpressTotals;\nfunction getSystemTotals(betslipOddsWithOddRatio, totalStake, systemSize) {\n var totals = {\n totalOdd: 0,\n totalWin: 0,\n totalStake: 0,\n };\n var betslipOddsCount = betslipOddsWithOddRatio.length;\n var filteredSystemSize = getBetSystemSizes({\n betType: core_1.GQL.BetType.SYSTEM,\n selectionsCount: betslipOddsCount,\n systemSize: systemSize,\n });\n var arrOfCombinedBetslipOddsWithOddRatio = filteredSystemSize.map(function (combinationNumber) {\n return combine(betslipOddsWithOddRatio, combinationNumber);\n });\n arrOfCombinedBetslipOddsWithOddRatio.forEach(function (combination) {\n combination.reduce(function (acc, combinedBetslipOddsWithOddRatio) {\n var _a = getExpressTotals(combinedBetslipOddsWithOddRatio, totalStake), totalWin = _a.totalWin, totalOdd = _a.totalOdd;\n acc.totalOdd += totalOdd || 0;\n acc.totalWin += totalWin;\n acc.totalStake += totalStake;\n return acc;\n }, totals);\n });\n return totals;\n}\nexports.getSystemTotals = getSystemTotals;\nfunction getSuggests(variables) {\n return apiClient\n .makeRequest({\n method: 'getBetStakeSuggest',\n variables: variables,\n })\n .then(function (_a) {\n var suggests = _a.data.suggests;\n return suggests.map(function (_a) {\n var amount = _a.amount;\n return amount;\n });\n })\n .catch(function (error) {\n console.error(error);\n return [];\n });\n}\nexports.getSuggests = getSuggests;\nfunction getStakePerCombination(systemSize, betslipOddIds, stake) {\n var numberCombinations = getNumberCombinations(systemSize, betslipOddIds);\n return +(stake / numberCombinations);\n}\nexports.getStakePerCombination = getStakePerCombination;\nfunction getNumberCombinations(systemSize, betslipOddIds) {\n var filteredSystemSize = getBetSystemSizes({\n betType: core_1.GQL.BetType.SYSTEM,\n selectionsCount: betslipOddIds.count(),\n systemSize: systemSize,\n });\n return filteredSystemSize.reduce(function (acc, curr) {\n return acc + combine(betslipOddIds.toArray(), curr).length;\n }, 0);\n}\nexports.getNumberCombinations = getNumberCombinations;\nfunction getMinBet() {\n return {\n prevMinBet: prevMinBet,\n request: function () {\n return appServiceLocator\n .get('apiClient')\n .makeRequest({\n method: 'getMinBet',\n variables: {},\n })\n .then(function (response) {\n prevMinBet = Number(response.data.minBet.value);\n return prevMinBet;\n })\n .catch(function (error) {\n console.error(error);\n return prevMinBet;\n });\n },\n };\n}\nexports.getMinBet = getMinBet;\n//# sourceMappingURL=utils.js.map","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"autorenew_2c941\",\n \"use\": \"autorenew_2c941-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"CheckListItem__wrapper___UEZB_\",\"is-selected\":\"CheckListItem__is-selected___3ICQY\",\"container\":\"CheckListItem__container___3rWFP\",\"checked\":\"CheckListItem__checked___2_d38\",\"is-bet\":\"CheckListItem__is-bet___1S-4N\",\"label\":\"CheckListItem__label___1UQiO\"};","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.syncSyncGamblerSettings = exports.syncOddUpdateStrategyGamblerSettings = exports.refetchStake = exports.selectBetslipBetId = exports.changeMode = exports.removePlacedBetslipOdds = exports.setEditingStatus = void 0;\nvar Observable_1 = require(\"rxjs/Observable\");\nvar lodash_1 = require(\"lodash\");\nvar reselect_1 = require(\"reselect\");\nrequire(\"rxjs/add/observable/of\");\nrequire(\"rxjs/add/observable/empty\");\nrequire(\"rxjs/add/operator/map\");\nrequire(\"rxjs/add/operator/filter\");\nrequire(\"rxjs/add/observable/timer\");\nrequire(\"rxjs/add/observable/race\");\nrequire(\"rxjs/add/operator/take\");\nrequire(\"rxjs/add/observable/fromPromise\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar gambler_settings_1 = __importDefault(require(\"@gin-betting/gambler-settings\"));\nvar constants_1 = require(\"./constants\");\nvar actions_1 = require(\"./actions\");\nvar selectors_1 = require(\"./selectors\");\nvar utils_1 = require(\"./utils\");\nvar normalizeEntity = core_1.default.entities.normalizeEntity, _a = core_1.default.async, UPDATE_BET = _a.constants.UPDATE_BET, updateBet = _a.actions.updateBet, sentryHub = core_1.default.services.sentryHub, getIdsFromBetslipOddId = core_1.default.utils.getIdsFromBetslipOddId;\nvar makeSyncGamblerSettings = gambler_settings_1.default.epics.makeSyncGamblerSettings, unknownChangeGamblerSetting = gambler_settings_1.default.actions.changeGamblerSetting;\nvar changeGamblerSetting = unknownChangeGamblerSetting;\nvar REFETCH_STAKE_TIMEOUT = 32 * 1000;\nvar setEditingStatus = function (action$, state$) {\n return action$\n .ofType(constants_1.DELETE_BETSLIP_ODD, constants_1.CHANGE_BET_MODE, constants_1.CHANGE_BETSLIP_BET_STAKE, constants_1.TOGGLE_SYSTEM_COMBINATION, constants_1.CHANGE_BETSLIP_ODD_STAKE)\n .mergeMap(function (action) {\n var betslipBetId;\n switch (action.type) {\n case constants_1.DELETE_BETSLIP_ODD:\n case constants_1.CHANGE_BET_MODE:\n case constants_1.TOGGLE_SYSTEM_COMBINATION:\n case constants_1.CHANGE_BETSLIP_BET_STAKE: {\n betslipBetId = action.payload.betslipBetId;\n break;\n }\n case constants_1.CHANGE_BETSLIP_ODD_STAKE: {\n betslipBetId = getIdsFromBetslipOddId(action.payload.betslipOddId).betslipBetId;\n break;\n }\n default: {\n break;\n }\n }\n if (!betslipBetId)\n return Observable_1.Observable.empty();\n var state = state$.getState();\n var betslipBet = selectors_1.selectBetslipBetWithStatus(state, {\n betslipBetId: betslipBetId,\n });\n if (!betslipBet ||\n betslipBet.status === core_1.App.BetslipStatus.INITIAL ||\n !lodash_1.includes(constants_1.BETSLIP_ODD_STATUSES_TO_PLACE_BET, betslipBet.status)) {\n return Observable_1.Observable.empty();\n }\n return Observable_1.Observable.of(actions_1.setInitialBetslip({ betslipBetId: betslipBetId }));\n });\n};\nexports.setEditingStatus = setEditingStatus;\nvar removePlacedBetslipOdds = function (action$, state$) {\n var selectProps = reselect_1.createStructuredSelector({\n betslipBet: selectors_1.selectBetslipBetWithStatus,\n betslipOdds: selectors_1.selectBetslipOddsByBetslipBetId,\n });\n return action$\n .ofType(constants_1.CHANGE_BET_MODE)\n .mergeMap(function (_a) {\n var betslipBetId = _a.payload.betslipBetId;\n var state = state$.getState();\n var _b = selectProps(state, {\n betslipBetId: betslipBetId,\n }), betslipBet = _b.betslipBet, betslipOdds = _b.betslipOdds;\n if (!betslipBet)\n return Observable_1.Observable.empty();\n var betslipOddIds = betslipBet.betslipOddIds;\n var outdatedBetslipOddIds = betslipOddIds.filter(function (betslipOddId) {\n var betslipOdd = betslipOdds.get(betslipOddId);\n return (!betslipOdd ||\n !lodash_1.includes(constants_1.BETSLIP_ODD_STATUSES_TO_PLACE_BET, betslipOdd.singleStatus));\n });\n return outdatedBetslipOddIds\n .map(function (betslipOddId) {\n return Observable_1.Observable.of(actions_1.deleteBetslipOdd({\n betslipBetId: betslipBetId,\n oddId: getIdsFromBetslipOddId(betslipOddId).oddId,\n }));\n })\n .toArray();\n });\n};\nexports.removePlacedBetslipOdds = removePlacedBetslipOdds;\nvar changeMode = function (action$, state$) {\n return action$\n .ofType(constants_1.ADD_BETSLIP_ODD, constants_1.DELETE_BETSLIP_ODD, constants_1.DELETE_BETSLIP_ODDS)\n .mergeMap(function (_a) {\n var type = _a.type, betslipBetId = _a.payload.betslipBetId;\n var state = state$.getState();\n var betslipBet = selectors_1.selectBetslipBetWithStatus(state, {\n betslipBetId: betslipBetId,\n });\n if (!betslipBet)\n return Observable_1.Observable.empty();\n var betslipOddIds = betslipBet.betslipOddIds, mode = betslipBet.mode, status = betslipBet.status;\n // NOTE: Don't change betType on add odd in processing betslip.\n if (!lodash_1.includes(constants_1.BETSLIP_ODD_STATUSES_TO_PLACE_BET, status)) {\n return Observable_1.Observable.empty();\n }\n var nextMode = utils_1.getNextModeBySize({\n mode: mode,\n nextBetslipOddIds: betslipOddIds,\n isIncreasing: type === constants_1.ADD_BETSLIP_ODD,\n });\n if (mode === nextMode)\n return Observable_1.Observable.empty();\n return Observable_1.Observable.of(actions_1.changeBetslipMode({ betslipBetId: betslipBetId, mode: nextMode }));\n });\n};\nexports.changeMode = changeMode;\nvar selectBetslipBetId = function (action$, state$) {\n return action$\n .ofType(constants_1.ADD_BETSLIP_ODD)\n .mergeMap(function (_a) {\n var betslipBetId = _a.payload.betslipBetId;\n var state = state$.getState();\n var chosenBetslipBetId = selectors_1.selectChosenBetslipBetId(state);\n if (chosenBetslipBetId === betslipBetId)\n return Observable_1.Observable.empty();\n return Observable_1.Observable.of(actions_1.choseBetslipBetId({ betslipBetId: betslipBetId }));\n });\n};\nexports.selectBetslipBetId = selectBetslipBetId;\nvar refetchStake = function (action$) {\n return action$\n .ofType(constants_1.CREATE_BETS_SUCCESS)\n .mergeMap(function (action) {\n var betId = action.payload.result;\n var res = lodash_1.get(action, ['payload', 'entities', 'bets', betId]);\n if (!res) {\n return Observable_1.Observable.empty();\n }\n var bet = res;\n return Observable_1.Observable.race(Observable_1.Observable.timer(REFETCH_STAKE_TIMEOUT), action$\n .ofType(UPDATE_BET)\n .filter(function (item) {\n return lodash_1.get(item, ['payload', 'entities', 'bets', betId]);\n })\n .take(1)).mergeMap(function (val) {\n if (typeof val === 'number') {\n sentryHub.withScope(function (scope) {\n scope.setTag('origin', 'betslipEpic');\n sentryHub.captureMessage(\"Didnt get update of bet for \" + REFETCH_STAKE_TIMEOUT);\n });\n return Observable_1.Observable.of(bet.id);\n }\n // we have got an update\n return Observable_1.Observable.empty();\n });\n })\n .mergeMap(function (betId) {\n var promise = core_1.default.appServiceLocator\n .get('apiClient')\n .makeRequest({\n method: 'getBets',\n variables: { input: { ids: [betId] } },\n });\n return Observable_1.Observable.fromPromise(promise);\n })\n .mergeMap(function (res) {\n // TODO: refetch bet if status is any except ACCEPTED or DECLINED\n if (!res.data) {\n return Observable_1.Observable.empty();\n }\n var bets = res.data.bets;\n var entities = normalizeEntity({\n bets: bets,\n }).entities;\n if (lodash_1.isEmpty(entities)) {\n return Observable_1.Observable.empty();\n }\n return Observable_1.Observable.of(updateBet(entities));\n });\n};\nexports.refetchStake = refetchStake;\nvar syncOddUpdateStrategyGamblerSettings = function (actions$) {\n return actions$.ofType(constants_1.CHANGE_COEF_UPDATES).map(function (action) {\n var oddStatus = action.payload.oddUpdateStatus;\n return changeGamblerSetting(constants_1.BetslipSettingKey.BETSLIP_ODD_UPDATE_STRATEGY, oddStatus);\n });\n};\nexports.syncOddUpdateStrategyGamblerSettings = syncOddUpdateStrategyGamblerSettings;\nexports.syncSyncGamblerSettings = makeSyncGamblerSettings(constants_1.BETSLIP_GAMBLER_SETTINGS);\n//# sourceMappingURL=epics.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isArray_1 = require('../util/isArray');\nvar ArrayObservable_1 = require('../observable/ArrayObservable');\nvar OuterSubscriber_1 = require('../OuterSubscriber');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\nfunction race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n // if the only argument is an array, it was most likely called with\n // `race([obs1, obs2, ...])`\n if (observables.length === 1) {\n if (isArray_1.isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return new ArrayObservable_1.ArrayObservable(observables).lift(new RaceOperator());\n}\nexports.race = race;\nvar RaceOperator = (function () {\n function RaceOperator() {\n }\n RaceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n };\n return RaceOperator;\n}());\nexports.RaceOperator = RaceOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar RaceSubscriber = (function (_super) {\n __extends(RaceSubscriber, _super);\n function RaceSubscriber(destination) {\n _super.call(this, destination);\n this.hasFirst = false;\n this.observables = [];\n this.subscriptions = [];\n }\n RaceSubscriber.prototype._next = function (observable) {\n this.observables.push(observable);\n };\n RaceSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (var i = 0; i < len && !this.hasFirst; i++) {\n var observable = observables[i];\n var subscription = subscribeToResult_1.subscribeToResult(this, observable, observable, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n };\n RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (var i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n var subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n };\n return RaceSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.RaceSubscriber = RaceSubscriber;\n//# sourceMappingURL=race.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar Subject_1 = require(\"rxjs/Subject\");\nvar utils_1 = require(\"../utils\");\nvar getPollerManager = core_1.default.poller.getPollerManager;\nvar counter = 0;\nvar isFetched = false;\nvar subject$ = new Subject_1.Subject();\nfunction usePollingMinStake() {\n var _a = react_1.useState(0), minStake = _a[0], setMinStake = _a[1];\n react_1.useEffect(function () {\n counter += 1;\n var _a = utils_1.getMinBet(), prevMinBet = _a.prevMinBet, request = _a.request;\n if (!prevMinBet && !isFetched) {\n isFetched = true;\n request()\n .then(function (minBet) {\n subject$.next(minBet);\n })\n .catch(function (err) { return console.error(err); });\n }\n setMinStake(prevMinBet);\n var subscription = subject$.subscribe(function (minBet) {\n setMinStake(minBet);\n });\n return function () {\n counter -= 1;\n subscription.unsubscribe();\n };\n }, []);\n return { minStake: minStake };\n}\nvar pollInterval$ = getPollerManager().getIntervalObserve();\npollInterval$.subscribe(function () {\n if (!counter)\n return;\n var request = utils_1.getMinBet().request;\n request()\n .then(function (minBet) {\n subject$.next(minBet);\n })\n .catch(function (err) { return console.error(err); });\n});\nexports.default = usePollingMinStake;\n//# sourceMappingURL=usePollingMinStake.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"body__container___1JdKB\",\"with-custom-scrollbar\":\"body__with-custom-scrollbar___1mHKe\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('reselect')) :\n typeof define === 'function' && define.amd ? define(['exports', 'reselect'], factory) :\n (factory((global['Re-reselect'] = {}),global.Reselect));\n}(this, (function (exports,reselect) { 'use strict';\n\n function isStringOrNumber(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n\n var FlatObjectCache =\n /*#__PURE__*/\n function () {\n function FlatObjectCache() {\n this._cache = {};\n }\n\n var _proto = FlatObjectCache.prototype;\n\n _proto.set = function set(key, selectorFn) {\n this._cache[key] = selectorFn;\n };\n\n _proto.get = function get(key) {\n return this._cache[key];\n };\n\n _proto.remove = function remove(key) {\n delete this._cache[key];\n };\n\n _proto.clear = function clear() {\n this._cache = {};\n };\n\n _proto.isValidCacheKey = function isValidCacheKey(cacheKey) {\n return isStringOrNumber(cacheKey);\n };\n\n return FlatObjectCache;\n }();\n\n function validateCacheSize(cacheSize) {\n if (cacheSize === undefined) {\n throw new Error('Missing the required property \"cacheSize\".');\n }\n\n if (!Number.isInteger(cacheSize) || cacheSize <= 0) {\n throw new Error('The \"cacheSize\" property must be a positive integer value.');\n }\n }\n\n var FifoObjectCache =\n /*#__PURE__*/\n function () {\n function FifoObjectCache(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n cacheSize = _ref.cacheSize;\n\n validateCacheSize(cacheSize);\n this._cache = {};\n this._cacheOrdering = [];\n this._cacheSize = cacheSize;\n }\n\n var _proto = FifoObjectCache.prototype;\n\n _proto.set = function set(key, selectorFn) {\n this._cache[key] = selectorFn;\n\n this._cacheOrdering.push(key);\n\n if (this._cacheOrdering.length > this._cacheSize) {\n var earliest = this._cacheOrdering[0];\n this.remove(earliest);\n }\n };\n\n _proto.get = function get(key) {\n return this._cache[key];\n };\n\n _proto.remove = function remove(key) {\n var index = this._cacheOrdering.indexOf(key);\n\n if (index > -1) {\n this._cacheOrdering.splice(index, 1);\n }\n\n delete this._cache[key];\n };\n\n _proto.clear = function clear() {\n this._cache = {};\n this._cacheOrdering = [];\n };\n\n _proto.isValidCacheKey = function isValidCacheKey(cacheKey) {\n return isStringOrNumber(cacheKey);\n };\n\n return FifoObjectCache;\n }();\n\n var LruObjectCache =\n /*#__PURE__*/\n function () {\n function LruObjectCache(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n cacheSize = _ref.cacheSize;\n\n validateCacheSize(cacheSize);\n this._cache = {};\n this._cacheOrdering = [];\n this._cacheSize = cacheSize;\n }\n\n var _proto = LruObjectCache.prototype;\n\n _proto.set = function set(key, selectorFn) {\n this._cache[key] = selectorFn;\n\n this._registerCacheHit(key);\n\n if (this._cacheOrdering.length > this._cacheSize) {\n var earliest = this._cacheOrdering[0];\n this.remove(earliest);\n }\n };\n\n _proto.get = function get(key) {\n this._registerCacheHit(key);\n\n return this._cache[key];\n };\n\n _proto.remove = function remove(key) {\n this._deleteCacheHit(key);\n\n delete this._cache[key];\n };\n\n _proto.clear = function clear() {\n this._cache = {};\n this._cacheOrdering = [];\n };\n\n _proto._registerCacheHit = function _registerCacheHit(key) {\n this._deleteCacheHit(key);\n\n this._cacheOrdering.push(key);\n };\n\n _proto._deleteCacheHit = function _deleteCacheHit(key) {\n var index = this._cacheOrdering.indexOf(key);\n\n if (index > -1) {\n this._cacheOrdering.splice(index, 1);\n }\n };\n\n _proto.isValidCacheKey = function isValidCacheKey(cacheKey) {\n return isStringOrNumber(cacheKey);\n };\n\n return LruObjectCache;\n }();\n\n var FlatMapCache =\n /*#__PURE__*/\n function () {\n function FlatMapCache() {\n this._cache = new Map();\n }\n\n var _proto = FlatMapCache.prototype;\n\n _proto.set = function set(key, selectorFn) {\n this._cache.set(key, selectorFn);\n };\n\n _proto.get = function get(key) {\n return this._cache.get(key);\n };\n\n _proto.remove = function remove(key) {\n this._cache.delete(key);\n };\n\n _proto.clear = function clear() {\n this._cache.clear();\n };\n\n return FlatMapCache;\n }();\n\n var FifoMapCache =\n /*#__PURE__*/\n function () {\n function FifoMapCache(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n cacheSize = _ref.cacheSize;\n\n validateCacheSize(cacheSize);\n this._cache = new Map();\n this._cacheSize = cacheSize;\n }\n\n var _proto = FifoMapCache.prototype;\n\n _proto.set = function set(key, selectorFn) {\n this._cache.set(key, selectorFn);\n\n if (this._cache.size > this._cacheSize) {\n var earliest = this._cache.keys().next().value;\n\n this.remove(earliest);\n }\n };\n\n _proto.get = function get(key) {\n return this._cache.get(key);\n };\n\n _proto.remove = function remove(key) {\n this._cache.delete(key);\n };\n\n _proto.clear = function clear() {\n this._cache.clear();\n };\n\n return FifoMapCache;\n }();\n\n var LruMapCache =\n /*#__PURE__*/\n function () {\n function LruMapCache(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n cacheSize = _ref.cacheSize;\n\n validateCacheSize(cacheSize);\n this._cache = new Map();\n this._cacheSize = cacheSize;\n }\n\n var _proto = LruMapCache.prototype;\n\n _proto.set = function set(key, selectorFn) {\n this._cache.set(key, selectorFn);\n\n if (this._cache.size > this._cacheSize) {\n var earliest = this._cache.keys().next().value;\n\n this.remove(earliest);\n }\n };\n\n _proto.get = function get(key) {\n var value = this._cache.get(key); // Register cache hit\n\n\n if (this._cache.has(key)) {\n this.remove(key);\n\n this._cache.set(key, value);\n }\n\n return value;\n };\n\n _proto.remove = function remove(key) {\n this._cache.delete(key);\n };\n\n _proto.clear = function clear() {\n this._cache.clear();\n };\n\n return LruMapCache;\n }();\n\n var defaultCacheCreator = FlatObjectCache;\n\n var defaultCacheKeyValidator = function defaultCacheKeyValidator() {\n return true;\n };\n\n function createCachedSelector() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return function (resolver, options) {\n if (options === void 0) {\n options = {};\n }\n\n // @NOTE Versions 0.x/1.x accepted \"options\" as a function\n if (typeof options === 'function') {\n throw new Error('[re-reselect] Second argument \"options\" must be an object. Please use \"options.selectorCreator\" to provide a custom selectorCreator.');\n } // https://github.com/reduxjs/reselect/blob/v4.0.0/src/index.js#L54\n\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : [].concat(funcs);\n\n var resultFuncWithRecomputations = function resultFuncWithRecomputations() {\n recomputations++;\n return resultFunc.apply(void 0, arguments);\n };\n\n funcs.push(resultFuncWithRecomputations);\n var cache = options.cacheObject || new defaultCacheCreator();\n var selectorCreator = options.selectorCreator || reselect.createSelector;\n var isValidCacheKey = cache.isValidCacheKey || defaultCacheKeyValidator; // Application receives this function\n\n var selector = function selector() {\n var cacheKey = resolver.apply(void 0, arguments);\n\n if (isValidCacheKey(cacheKey)) {\n var cacheResponse = cache.get(cacheKey);\n\n if (cacheResponse === undefined) {\n cacheResponse = selectorCreator.apply(void 0, funcs);\n cache.set(cacheKey, cacheResponse);\n }\n\n return cacheResponse.apply(void 0, arguments);\n }\n\n console.warn(\"[re-reselect] Invalid cache key \\\"\" + cacheKey + \"\\\" has been returned by resolver function.\");\n return undefined;\n }; // Further selector methods\n\n\n selector.getMatchingSelector = function () {\n var cacheKey = resolver.apply(void 0, arguments); // @NOTE It might update cache hit count in LRU-like caches\n\n return cache.get(cacheKey);\n };\n\n selector.removeMatchingSelector = function () {\n var cacheKey = resolver.apply(void 0, arguments);\n cache.remove(cacheKey);\n };\n\n selector.clearCache = function () {\n cache.clear();\n };\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.cache = cache;\n\n selector.recomputations = function () {\n return recomputations;\n };\n\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n\n return selector;\n };\n }\n\n exports.default = createCachedSelector;\n exports.FlatObjectCache = FlatObjectCache;\n exports.FlatCacheObject = FlatObjectCache;\n exports.FifoObjectCache = FifoObjectCache;\n exports.LruObjectCache = LruObjectCache;\n exports.FlatMapCache = FlatMapCache;\n exports.FifoMapCache = FifoMapCache;\n exports.LruMapCache = LruMapCache;\n exports.FifoCacheObject = FifoObjectCache;\n exports.LruCacheObject = LruMapCache;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar lodash_1 = require(\"lodash\");\nfunction handleCreateBetsSuccess(state, action) {\n var _a = action.payload, betslipBetId = _a.betslipBetId, betslipOddIds = _a.betslipOddIds, entities = _a.entities;\n var bets = entities.bets;\n var betId = lodash_1.keys(bets)[0];\n if (!betId)\n return state;\n var nextBetslipOdds = state.betslipOdds, nextBetslipBets = state.betslipBets;\n var betslipBet = nextBetslipBets.get(betslipBetId);\n if (!betslipBet)\n return state;\n var nextBetslipOddIds = betslipBet.betslipOddIds;\n betslipOddIds.forEach(function (betslipOddId) {\n var betslipOdd = nextBetslipOdds.get(betslipOddId);\n if (!betslipOdd) {\n nextBetslipOddIds = nextBetslipOddIds.delete(betslipOddId);\n }\n else {\n var nextBetslipOdd = __assign(__assign({}, betslipOdd), { betId: betId });\n nextBetslipOdds = nextBetslipOdds.set(nextBetslipOdd.id, nextBetslipOdd);\n }\n });\n var nextBetslipBet = __assign(__assign({}, betslipBet), { betslipOddIds: nextBetslipOddIds });\n nextBetslipBets = nextBetslipBets.set(nextBetslipBet.id, nextBetslipBet);\n return state\n .set('betslipOdds', nextBetslipOdds)\n .set('betslipBets', nextBetslipBets);\n}\nexports.default = handleCreateBetsSuccess;\n//# sourceMappingURL=handleCreateBetsSuccess.js.map","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"placeBet__container___ejcC8\",\"is-disabled\":\"placeBet__is-disabled___2ckKJ\",\"is-freebet\":\"placeBet__is-freebet___2U3fW\",\"icon\":\"placeBet__icon___ZCYQm\",\"stake\":\"placeBet__stake___3XIFz\",\"amount\":\"placeBet__amount___3_osj\"};","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar race_1 = require('../../observable/race');\nObservable_1.Observable.race = race_1.race;\n//# sourceMappingURL=race.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"groupOfOdds__container___1zZDl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"updatesSettings__container___3T3qe\",\"header\":\"updatesSettings__header___1jzCw\",\"description\":\"updatesSettings__description___1mXpa\",\"icon-wr\":\"updatesSettings__icon-wr___REYNG\",\"triangle\":\"updatesSettings__triangle___2zn3R\",\"is-mobile\":\"updatesSettings__is-mobile___1V4F-\",\"icon\":\"updatesSettings__icon___3CbuH\",\"is-highlighted\":\"updatesSettings__is-highlighted___3wauK\",\"overlay\":\"updatesSettings__overlay___PQKwC\",\"transition-animation\":\"updatesSettings__transition-animation___2pR-m\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"live-label_47819\",\n \"use\": \"live-label_47819-usage\",\n \"viewBox\": \"0 0 24 16\",\n \"content\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map"],"sourceRoot":""}