{"version":3,"sources":["/build/node_modules/lodash/flatMap.js","/build/src/modules/freebet/components/FreebetRow/freebetRow.scss","/build/src/modules/filters/utils.ts","/build/node_modules/lodash/concat.js","/build/node_modules/@gin-betting/filters/dist/reducer.js","/build/node_modules/lodash/differenceBy.js","/build/node_modules/@gin-betting/filters/dist/utils.js","/build/src/modules/freebet/components/FreebetPanel/Timer/timer.scss","/build/src/modules/freebet/components/constants.ts","/build/src/modules/freebet/components/SingleFreebetRow/SingleFreebetRowBody.tsx","/build/src/modules/freebet/components/SingleFreebetRow/SingleFreebetRow.tsx","/build/src/modules/freebet/components/useBetslipFreebet.ts","/build/src/modules/freebet/components/BetslipFreebet.tsx","/build/src/modules/freebet/hooks/useToggleFreeBetSelect.ts","/build/src/modules/freebet/components/FreebetRow/FreebetRow.tsx","/build/src/modules/freebet/components/FreebetSelect/FreebetSelect.tsx","/build/src/assets/svg/freebet-symbol.svg","/build/src/modules/freebet/components/FreeBetCategorizer/FreeBetCategorizer.tsx","/build/src/modules/freebet/components/FreeBetMobileTitle/FreeBetMobileTitle.tsx","/build/src/modules/freebet/messages.js","/build/src/modules/freebet/components/FreebetPanel/ConditionRow/useConditionRow.ts","/build/src/modules/freebet/components/FreebetPanel/ConditionRow/ConditionRow.tsx","/build/src/modules/freebet/components/FreebetPanel/Timer/Timer.tsx","/build/src/modules/freebet/components/FreebetPanel/Timer/TimerContainer.ts","/build/src/modules/freebet/components/FreebetPanel/useFreebetPanel.ts","/build/src/modules/freebet/components/FreebetPanel/FreebetPanel.tsx","/build/src/modules/freebet/components/RequestFreebet/RequestFreebet.ts","/build/src/modules/freebet/epics.ts","/build/src/modules/freebet/index.ts","/build/src/modules/freebet/components/FreeBetCategorizer/freeBetCategorizer.scss","/build/src/modules/freebet/components/FreebetSelect/freebetSelect.scss","/build/src/modules/freebet/components/FreebetPanel/ConditionRow/conditionRow.scss","/build/src/modules/freebet/components/betslipFreeBet.scss","/build/node_modules/@gin-betting/freebet/dist/reducer.js","/build/node_modules/@gin-betting/freebet/dist/types.js","/build/src/modules/freebet/components/SingleFreebetRow/SingleFreebetRow.scss","/build/node_modules/@gin-betting/freebet/dist/selectors.js","/build/node_modules/@gin-betting/freebet/dist/middleware.js","/build/node_modules/@gin-betting/filters/dist/types.js","/build/node_modules/@gin-betting/freebet/dist/constants.js","/build/node_modules/@gin-betting/freebet/dist/utils.js","/build/node_modules/@gin-betting/filters/dist/index.js","/build/src/modules/freebet/components/FreebetPanel/freebetPanel.scss","/build/node_modules/@gin-betting/filters/dist/actions.js","/build/src/assets/svg/freebet.svg","/build/src/modules/filters/constants.ts","/build/node_modules/@gin-betting/freebet/dist/actions.js","/build/node_modules/@gin-betting/filters/dist/selectors.js","/build/node_modules/lodash/sumBy.js","/build/src/modules/freebet/components/FreeBetMobileTitle/freeBetMobileTitle.scss","/build/node_modules/@gin-betting/freebet/dist/index.js","/build/node_modules/lodash/pickBy.js","/build/node_modules/@gin-betting/filters/dist/constants.js"],"names":["baseFlatten","map","module","exports","flatMap","collection","iteratee","SportType","stringify","getHistory","getAppliedFilters","checkOnRoute","isOneOfPages","isInnerPage","getSportsBySportType","getBettingOptions","getSportTypeBySportTags","getSportTypeFromLocation","getDefaultVariables","filterMatches","filters","pathname","searchObj","history","validSearchObj","v","search","replace","location","hash","window","canFilterByTournamentOnMobile","Routes","UPCOMING_LIST","RESULTS_LIST","ESPORT","CLASSIC","exact","canFilterByTimePeriods","canFilterByLivePeriods","LIVE_LIST","getFormattedCountryCode","countryCode","getTournamentCountryCode","isAlpha3Format","metaCountryCode","find","CountryCode","value","length","getSearchString","changedFilters","currentFilters","nextFilters","getSportsWithCheckedTournaments","sports","tournamentIds","filter","some","includes","item","getSortedSportsBySportType","sportType","categorizerItems","sportsOrder","sportsByActiveTab","sportsToSort","get","isActive","list","CategorizerSortingApi","matchOrder","getCategorizerItemsForStaticSports","staticSports","rest","sortedStatic","sort","a","b","indexOf","sortedRest","name","localeCompare","concat","categorizerItem","getI18nCounties","locale","convert","from","to","getNameByCountryCode","formatMessage","region","undefined","sortByCountryCode","order","rule","sortByCountryName","countryName","getSortedTournamentsInfo","tournaments","sportId","topRegionsOrder","topCountriesOrder","productName","mappingByProduct","unknown","WW","getRegionOrderRules","topRegions","otherRegions","topCountries","otherCountries","tournament","push","getItemsByLocation","groupedTournaments","t","tournamentsInfo","itemsByCountryCode","items","getTournamentsInfo","tournamentsWithLocation","tournamentsWithoutLocation","null","groupCategorizerItemsByOrganizations","organizations","logoMaps","groupedItems","meta","organizationLocalized","OrganizationLocalized","organizationName","organizationLogo","OrganizationLogo","categorizerItemByOrganizations","logo","count","lastIdx","idx","checkIsShowLiveLabel","matchStatuses","getCategorizerVars","OUTRIGHTS_LIST","OUTRIGHT","getSummaryPath","sportIds","getNextOpenedSportIds","options","actionType","openedSportIds","triggeredSportId","CheckGameType","Close","Open","selectedSportIds","isFreeBetVisibleInCategorizer","sportTypeRoutes","timeTypeRoutes","PREMATCH","combinedRoutes","sportTypeRoute","timeTypeRout","getNextPathname","requestedSportType","slicedPathname","getRequestedSportType","Mix","nextSportType","getSportTypeBySelectedSportsIds","getSelectedCountryKeyInfo","activeCountryKey","split","selectedCountryKey","allPrefix","isSelectedCountryCodeWithAll","Boolean","sortByTopTournaments","el","IsTop","incomeSportIds","getInstance","isDeviceMobile","expand","countLiveEventsBySport","countPreMatchEventsBySport","marketStatuses","restVariables","marketStatusesForLiveSportEvent","defaultDateFrom","dateFrom","MarketStatus","ACTIVE","SUSPENDED","RESULTED","CANCELLED","DEACTIVATED","SportEventStatus","NOT_STARTED","LIVE","sportEventTypes","SportEventType","MATCH","hasAnyMetaEventsInCategorizer","metaName","getSortedCategorizerItems","outrightItems","differenceOutrightCategorizer","arrayPush","copyArray","isArray","arguments","args","Array","array","index","__createBinding","this","Object","create","o","m","k","k2","defineProperty","enumerable","__setModuleDefault","__importStar","mod","__esModule","result","prototype","hasOwnProperty","call","FilterStateRecord","CategorizerStateRecord","immutable_1","lodash_1","core_1","types_1","constants_1","utils_1","_a","default","utils","getFiltersFromLocation","Record","fetchStatus","App","FetchStatus","INITIAL","isOpen","openedGameIds","fixedTournamentIds","categorizer","initialState","reducer","state","action","type","GET_CATEGORIZER_REQUEST","nextCategorizer","set","LOADING","GET_CATEGORIZER_SUCCESS","data","payload","LOADED","GET_CATEGORIZER_FAIL","nextCateogrizer","FAILED","TOGGLE_FILTERS","OPEN_CATEGORIZER","CLOSE_CATEGORIZER","CHANGE_FIXED_TOURNAMENTS","xor","SELECT_GAME","gameId","nextTournamentIds","nextOpenedGameIds","getOpenedGameIds","UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS","_b","RESET_CATEGORIZER_CONTROL_FIELDS","INIT_CATEGORIZER_CONTROLS_BY_LOCATION","nextFixedTournamentIds","_c","tournamentIds_1","fId","baseDifference","baseIteratee","baseRest","isArrayLikeObject","last","differenceBy","values","__assign","assign","s","i","n","p","apply","__rest","e","getOwnPropertySymbols","propertyIsEnumerable","__spreadArray","il","j","filterMatchesPreview","isVisibleFreeBetInCategorizer","getCountAppliedFilters","services","calculationFields","reduce","pick","sum","curr","categorizerData","currentOpenedGameIds","selectedTournamentIds","acc","currentGame","currentGameId","currentTournamentIds","children","child","intersection","nextAcc","vars","apiClient","appServiceLocator","defaultVariables","withMarketsCount","variables","makeRequest","method","ScrollShadow","getCurrency","glyph","memo","toggleFreebet","betslipFreebetId","isFreebetInProcess","freebet","dispatch","currencyName","id","amount","isMobile","onToggle","freebetId","isOpened","isDisabled","getIdsFromBetslipOddId","selectBetslipFreebetFromProps","selectFreebetsByBetslipFreebet","selectOddsByOddIds","getApplicableFreebets","getSelectionByOdd","makeSelectProps","odds","betslipFreebet","freebets","betType","betslipOddIds","toggleFreebetCallback","oddIds","betslipOddId","None","scrollShadow","setScrollShadow","isScrollable","Bottom","handleScrolling","target","scrollTop","offsetTop","scrollHeight","offsetHeight","Both","Top","isActivatedFreeBetId","activeFreebetId","handleGetApplicableFreebets","currBetType","currOdds","selections","forEach","odd","selection","handleToggleFreebetCallback","handleGetApplicableFreebetsRef","current","handleToggleFreebetCallbackRef","currFreebet","toggleActiveBetslipFreebet","debug","props","renderFreebets","key","onScroll","autoHide","dropPaginationState","selectFreebets","activeFreeBetId","freeBets","freeBetId","first","onChangeFreeBetId","newFreeBetId","toggleFreeBet","isFreeBetsEmpty","size","onCheck","isCheck","handleCheck","onClick","valueSeq","freeBet","symbol","isAuthorized","prefix","active","marketTypes","defaultMessage","competitors","oddValue","sportEvents","oddMax","oddMin","totalOddsCoef","oddsCount","days","hours","minutes","seconds","freebetStatusAvailable","freebetStatusNotAvailable","freeBetAvailable","freeBetPotential","freeBetUse","isSportEventCondition","isTournamentsCondition","isSportCondition","isCompetitorsCondition","isOddsCoefficientCondition","isOddsCountCondition","isTotalOddsCoefficientCondition","titles","FreebetBetDetailsConditionType","SPORT_EVENT","TOURNAMENT","MARKET_TYPE","SPORT","ODDS_COEFFICIENT","COMPETITOR","ODDS_COUNT","TOTAL_ODDS_COEFFICIENT","condition","title","min","max","Number","minOddCoef","maxOddCoef","maxTotalCoef","minTotalCoef","getConditionValue","sportEvent","fixture","sport","competitor","getOddValueCondition","val","convertSecondsToTimerFormat","Timer","needTimeUnits","TimerUnit","Day","Hour","Minute","Second","splittedTimes","unit","Fragment","renderTimeUnit","timeUnit","withDivider","msgDesc","mapUnitToTitle","unitBody","MapUnitToTitle","getSecondsFromDate","leftSeconds","expiresAt","componentDidMount","timerId","setInterval","componentWillUnmount","clearInterval","updateTimer","setState","render","createElement","Component","selectFreeBetFromProps","selectProps","checkEquality","betDetails","hasNoConditions","every","d","conditions","betDetail","idxType","idxCondition","prevProps","nextProps","maxDepth","excludedKeys","usePoller","getFreebets","executableAction","isPollingTurnedOff","pollerName","skipInitialRequest","UPDATE_BET","getFreebetsEpic$","actions$","ofType","mergeMap","bets","betId","Observable","empty","bet","of","freebetModule","components","hooks","epics","moduleLocator","betslip","entities","constants","GET_FREE_BETS_FAIL","GET_FREE_BETS_SUCCESS","GET_FREE_BETS_REQUEST","async","extendSearchString","convertBetStatus","freebetIds","OrderedSet","freebetIdsInProcess","betslipFreebets","OrderedMap","subscribe","CREATE_BETS_FAIL","CREATE_BETS_SUCCESS","nextFreebetIdsInProcess","delete","toSet","keys","nextBetslipFreebet","nextBetslipFreebets","SET_FREEBET_ID_IN_PROCESS","add","GET_APPLICABLE_FREE_BET_REQUEST","newBetslipFreebet","createBetslipFreebets","GET_APPLICABLE_FREE_BET_SUCCESS","nextActiveFreebetId","GET_APPLICABLE_FREE_BET_FAIL","ADD_BETSLIP_FREEBET","DELETE_BETSLIP_FREEBET","TOGGLE_ACTIVE_BETSLIP_FREEBET","_d","betslipFreebetId_1","freebetId_1","DESELECT_ACTIVE_BETSLIP_FREEBET","console","warn","betIdFromEntities_1","betFromEntities","status_1","status","convertedStatus","BetslipStatus","ERROR","SUCCESS","currBetslipFreebet","currActiveFreebetId_1","nextFreebetIds","activeFreebetIdFromLocation","freebetIdsBetslip","__importDefault","selectOddIdsFromProps","selectFreebetIdsInProcess","selectBetslipFreebets","selectBetslipFreebetIdFromProps","selectOddValueFromProps","selectBetTypeFromProps","selectNotExpiredFreebets","selectFreebetIdFromProps","selectFetchStatus","selectFreebetIds","selectFreebet","reselect_1","selectors","selectAllFreeBets","selectOdds","createSelector","_","freebetState","oddId","selectors_1","actions_1","handleGetMatchesActionWithFreebet","error","currentFreebet","nextVariables","omit","competitorIds","middleware","store","waitFreebetPromise","next","CREATE_BETS_REQUEST","actions","createBet","getState","GQL","BetType","SYSTEM","nextArgs","setFreebetIdInProcess","then","catch","err","Promise","resolve","NAME","getEmptyTimeByDividers","zeroFill","isMarketTypeCondition","splitOddPath","dividers","repeat","slice","date","Math","floor","Date","now","dividerIndex","currentDivider","wholePart","fractionPart","ids","marketId","matchId","ratio","Filters","FiltersType","reducer_1","searchMatchesByText","Actions","initControlsByLocation","resetCategorizerControls","unselectGamesWithoutSelectedTournaments","selectGame","changeFixedTournamentIds","toggleCategorizer","closeCategorizer","openCategorizer","toggleFilters","getCategorizer","setSearchString","makeAction","getMatchStatusesByLocation","makeSearchMatchesFn","searchMatches","SEARCH_MATCHES_REQUEST","searchMatchesByFilters","FILTER_MATCHES_REQUEST","inputVariables","isApiCall","currentOpenStatus","selectCategorizerOpenStatus","nextOpenStatus","isBoolean","CategorizerRowType","OverlayType","FILTER_TIME_PERIODS","TimePeriodVariants","ONE_HOUR","TODAY","YESTERDAY","THREE_DAYS","WEEK","INTERVAL_ALL","TIME_INTERVAL_ALL","interval","displayedValue","customFlagsMapping","ENG","EU","ACTIVE_COUNTRY_KEY_DIVIDER","DEFAULT_TIME_PERIOD","TIME_FILTER_NEXT_TO_GO_BOUNDARY","filteringKey","UNGROUPED_CATEGORIES_KEY","STATIC_SPORTS_ALL","ESPORTS_COUNTER_STRIKE","ESPORTS_DOTA_2","FOOTBALL","BASKETBALL","TENNIS","ICE_HOCKEY","TABLE_TENNIS","ESPORTS_LEAGUE_OF_LEGENDS","ESPORTS_BASKETBALL","ESPORTS_FIFA","ESPORTS_VALORANT","ESPORTS_FORTNITE","STATIC_SPORTS_ESPORT","STATIC_SPORTS_CLASSIC","VOLLEYBALL","HANDBALL","CATEGORIZER_STATIC_SPORTS_BY_TYPE","Esport","Classic","EXCLUDED_WORLD_REGIONS","WORLD_REGIONS","code","ALL","ORDER_CATEGORIZER_ITEMS_MAPPING","ru","com","ua","SPORTS_ORGANIZATION","deselectActiveBetslipFreebet","deleteBetslipFreebet","addBetslipFreebet","selectEntityByCategorizerItem","selectValueFromCategorizerItemProps","selectFilterOpenStatus","selectCategorizerData","selectCategorizerFetchStatus","selectFixedTournamentIds","selectOpenedGameIds","selectCategorizer","selectFilters","fieldMapping","sport_id","selectEntities","field","baseSum","sumBy","Freebet","middleware_1","types","arrayMap","basePickBy","getAllKeysIn","pickBy","object","predicate","prop","path","SEARCH_MATCHES_FAIL","SEARCH_MATCHES_SUCCESS","FILTER_MATCHES_FAIL","FILTER_MATCHES_SUCCESS"],"mappings":"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","file":"freebet-module-d7c4a1b3.js","sourcesContent":["var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkRow\":\"freebetRow__checkRow___3aRi4\",\"is-active\":\"freebetRow__is-active___2DT19\",\"radio-wrapper\":\"freebetRow__radio-wrapper___1TphW\",\"radio\":\"freebetRow__radio___1HK--\",\"info\":\"freebetRow__info___gn7xg\",\"info-label\":\"freebetRow__info-label___lELBZ\",\"amount\":\"freebetRow__amount___1WeU8\"};","import type { IntlFormatters } from 'react-intl';\nimport {\n ORGANIZATIONS_BY_SPORT,\n WORLD_REGIONS_CODES,\n} from '@gin-betting/constants';\nimport core, { API, App, GQL, View } from '@gin-betting/core';\nimport { Filters } from '@gin-betting/filters';\nimport { alpha3ToAlpha2, getName } from 'i18n-iso-countries';\nimport { Map } from 'immutable';\nimport {\n concat,\n differenceBy,\n findIndex,\n flatMap,\n forEach,\n get,\n groupBy,\n includes,\n intersection,\n map,\n omit,\n partition,\n pickBy,\n sortBy,\n sumBy,\n without,\n} from 'lodash';\n\nimport {\n CategorizerTournamentMetaKey,\n LIVE_SPORTEVENT_STATUSES,\n OUTRIGHTS_ONLY_SPORTS,\n Product,\n} from 'app-constants';\nimport globalMessages from 'messages';\nimport features from 'services/feature-manager';\nimport localeManager from 'services/locale-manager';\nimport UserDevice from 'services/user-device';\nimport {\n checkIsDynamicCategorizer,\n checkKeyInObj,\n getByKey,\n getProductName,\n getRouteBySportType,\n getVariablesForLiveSportEvent,\n isFavoritePage,\n} from 'utils';\nimport { CategorizerWidgetOptions } from '../../types';\nimport {\n ACTIVE_COUNTRY_KEY_DIVIDER,\n CATEGORIZER_STATIC_SPORTS_BY_TYPE,\n customFlagsMapping,\n EXCLUDED_WORLD_REGIONS,\n ORDER_CATEGORIZER_ITEMS_MAPPING,\n UNGROUPED_CATEGORIES_KEY,\n WORLD_REGIONS,\n} from './constants';\nimport {\n CategorizerItemByOrganizations,\n LocationInfo,\n TournamentInfo,\n} from './types';\n\nconst {\n constants: { SportType },\n services: { stringify, getHistory },\n utils: {\n getAppliedFilters,\n checkOnRoute,\n isOneOfPages,\n isInnerPage,\n getSportsBySportType,\n getBettingOptions,\n getSportTypeBySportTags,\n getSportTypeFromLocation,\n getDefaultVariables,\n },\n} = core;\n\nexport function filterMatches(\n filters: Partial,\n pathname?: string\n): void {\n const searchObj = { ...getAppliedFilters(), ...filters };\n\n const history = getHistory();\n const validSearchObj: typeof searchObj = pickBy(searchObj, v => !!v);\n\n const search = stringify(validSearchObj);\n\n history.replace({\n ...history.location,\n hash: window.location.hash,\n search,\n ...(pathname && { pathname }),\n });\n}\n\nexport function canFilterByTournamentOnMobile(): boolean {\n return isOneOfPages(\n [\n App.Routes.UPCOMING_LIST,\n App.Routes.RESULTS_LIST,\n App.Routes.ESPORT,\n App.Routes.CLASSIC,\n ],\n { exact: true }\n );\n}\n\nexport function canFilterByTimePeriods(): boolean {\n return checkOnRoute(App.Routes.RESULTS_LIST);\n}\n\nexport function canFilterByLivePeriods(): boolean {\n return checkOnRoute(App.Routes.LIVE_LIST);\n}\n\nexport const getFormattedCountryCode = (countryCode: string): string | null =>\n getByKey(customFlagsMapping, countryCode) ||\n alpha3ToAlpha2(countryCode) ||\n null;\n\nexport function getTournamentCountryCode(\n { meta }: API.CategorizerItem,\n isAlpha3Format: boolean = false\n): string | null {\n const metaCountryCode = meta.find(\n ({ name }) => name === CategorizerTournamentMetaKey.CountryCode\n )?.value;\n\n if (!metaCountryCode) return null;\n\n if (metaCountryCode === 'EU') {\n return 'WW-EUR';\n }\n\n if (isAlpha3Format) {\n return getByKey(customFlagsMapping, metaCountryCode) || metaCountryCode;\n }\n\n if (metaCountryCode.length !== 3) {\n return metaCountryCode;\n }\n\n return getFormattedCountryCode(metaCountryCode);\n}\n\nexport function getSearchString(changedFilters: Partial): string {\n const currentFilters = getAppliedFilters();\n const nextFilters = {\n ...currentFilters,\n ...changedFilters,\n };\n\n return stringify(nextFilters);\n}\n\nexport function getSportsWithCheckedTournaments(\n sports: API.CategorizerItem[],\n tournamentIds: string[]\n): string[] {\n if (!tournamentIds.length) return [];\n\n return sports\n .filter(({ children }) =>\n children.some(({ value }) => tournamentIds.includes(value))\n )\n .map(item => item.value);\n}\n\nexport function getSortedSportsBySportType({\n sportType,\n sports,\n categorizerItems,\n sportsOrder,\n}: {\n sportType: App.SportType | null;\n sports: Map;\n categorizerItems: API.CategorizerItem[];\n sportsOrder: CategorizerWidgetOptions['sportsOrder'];\n}): API.CategorizerItem[] {\n if (!sportType) return [];\n\n const sportsByActiveTab = getSportsBySportType(sports, sportType);\n\n const sportsToSort = categorizerItems.filter(item =>\n sportsByActiveTab.get(item.value)\n );\n\n const isSortingApi = features.isActive(features.list.CategorizerSortingApi);\n\n if (isSortingApi) return sportsToSort;\n\n const matchOrder = {\n ...CATEGORIZER_STATIC_SPORTS_BY_TYPE,\n ...sportsOrder,\n }[sportType];\n\n const [staticSports, rest] = partition(\n sportsToSort,\n getCategorizerItemsForStaticSports(matchOrder)\n );\n const sortedStatic = staticSports.sort(\n (a, b) => matchOrder.indexOf(a.value) - matchOrder.indexOf(b.value)\n );\n\n const sortedRest = rest.sort(\n (a: API.CategorizerItem, b: API.CategorizerItem) =>\n a.name.localeCompare(b.name)\n );\n\n return sortedStatic.concat(sortedRest);\n}\n\nexport function getCategorizerItemsForStaticSports(\n staticSports: string[] | readonly string[]\n): (categorizerItem: API.CategorizerItem) => boolean {\n return (categorizerItem: API.CategorizerItem) =>\n staticSports.includes(categorizerItem.value);\n}\n\nexport const getI18nCounties = (): string => {\n const { locale } = getBettingOptions();\n\n return localeManager.convert(locale, { from: 'cms', to: 'i18nCountries' });\n};\n\nexport const getNameByCountryCode = (\n formatMessage: IntlFormatters['formatMessage'],\n countryCode?: string\n): string => {\n if (!countryCode) return '';\n\n const region = get(globalMessages, countryCode, undefined);\n\n if (region && countryCode !== 'US') {\n return formatMessage(region);\n }\n\n const countryName: string | undefined = getName(\n countryCode,\n getI18nCounties()\n );\n\n return countryName || countryCode;\n};\n\nconst getTournamentsInfo = (\n itemsByCountryCode: { [key in string]: API.CategorizerItem[] },\n formatMessage: IntlFormatters['formatMessage']\n): TournamentInfo[] =>\n map(itemsByCountryCode, (items, countryCode) => ({\n countryName: getNameByCountryCode(formatMessage, countryCode),\n countryCode,\n items,\n }));\n\nconst getRegionOrderRules = (\n sportId: string\n): { topRegionsOrder: string[]; topCountriesOrder: string[] } => {\n if (!checkKeyInObj(ORDER_CATEGORIZER_ITEMS_MAPPING, sportId)) {\n return { topRegionsOrder: [], topCountriesOrder: [] };\n }\n\n const productName = getProductName();\n\n const mappingByProduct = ORDER_CATEGORIZER_ITEMS_MAPPING[sportId];\n const topCountriesOrder =\n productName === Product.unknown ? [] : mappingByProduct[productName];\n\n return {\n topRegionsOrder: [\n WORLD_REGIONS_CODES['WW-EUR'],\n WORLD_REGIONS_CODES.WW,\n ],\n topCountriesOrder,\n };\n};\n\nfunction sortByCountryCode(\n list: T[],\n order: string[]\n) {\n return sortBy(list, ({ countryCode }) =>\n findIndex(order, rule => rule === countryCode)\n );\n}\n\nfunction sortByCountryName(list: T[]): T[] {\n return [...list].sort((a, b) =>\n a.countryName.localeCompare(b.countryName, getI18nCounties())\n );\n}\n\nconst getSortedTournamentsInfo = (\n tournaments: TournamentInfo[],\n sportId: string\n): TournamentInfo[] => {\n const { topRegionsOrder, topCountriesOrder } = getRegionOrderRules(sportId);\n\n const topRegions: TournamentInfo[] = [];\n const otherRegions: TournamentInfo[] = [];\n const excludedRegions: TournamentInfo[] = [];\n const topCountries: TournamentInfo[] = [];\n const otherCountries: TournamentInfo[] = [];\n\n forEach(tournaments, tournament => {\n const { countryCode } = tournament;\n\n switch (true) {\n case includes(topRegionsOrder, countryCode): {\n topRegions.push(tournament);\n break;\n }\n\n case includes(WORLD_REGIONS, countryCode): {\n otherRegions.push(tournament);\n break;\n }\n\n case includes(topCountriesOrder, countryCode): {\n topCountries.push(tournament);\n break;\n }\n\n default: {\n otherCountries.push(tournament);\n }\n }\n });\n\n return concat(\n sortByCountryCode(topRegions, topRegionsOrder),\n sortByCountryName(otherRegions),\n sortByCountryCode(excludedRegions, EXCLUDED_WORLD_REGIONS),\n sortByCountryCode(topCountries, topCountriesOrder),\n sortByCountryName(otherCountries)\n );\n};\n\nexport const getItemsByLocation = ({\n tournaments,\n sportId,\n formatMessage,\n}: {\n tournaments: API.CategorizerItem[];\n sportId: string;\n formatMessage: IntlFormatters['formatMessage'];\n}): LocationInfo => {\n const groupedTournaments = groupBy(tournaments, t =>\n getTournamentCountryCode(t)\n );\n\n const tournamentsInfo = getTournamentsInfo(\n omit(groupedTournaments, 'null'),\n formatMessage\n );\n\n return {\n tournamentsWithLocation: getSortedTournamentsInfo(\n tournamentsInfo,\n sportId\n ),\n tournamentsWithoutLocation: groupedTournaments.null || [],\n };\n};\n\nexport const groupCategorizerItemsByOrganizations = (\n categorizerItems: API.CategorizerItem[],\n sportId: string\n): CategorizerItemByOrganizations[] => {\n const organizations = ORGANIZATIONS_BY_SPORT[sportId] || [];\n const logoMaps: { [name: string]: string | null } = {};\n\n const groupedItems = groupBy(categorizerItems, ({ meta }) => {\n const organizationLocalized = meta.find(\n ({ name }) =>\n name === CategorizerTournamentMetaKey.OrganizationLocalized\n );\n\n const organizationName =\n organizationLocalized?.value || UNGROUPED_CATEGORIES_KEY;\n\n if (!logoMaps[organizationName]) {\n const organizationLogo = meta.find(\n ({ name }) =>\n name === CategorizerTournamentMetaKey.OrganizationLogo\n );\n\n logoMaps[organizationName] = organizationLogo?.value || null;\n }\n\n return organizationName;\n });\n\n const categorizerItemByOrganizations = map(groupedItems, (items, name) => {\n return {\n name,\n items,\n logo: logoMaps[name] || null,\n count: sumBy(items, ({ count }) => count),\n };\n });\n\n const lastIdx = organizations.length;\n\n return sortBy(categorizerItemByOrganizations, ({ name }) => {\n const idx = organizations.indexOf(name);\n\n if (name === UNGROUPED_CATEGORIES_KEY) return lastIdx + 1;\n\n return idx === -1 ? lastIdx : idx;\n });\n};\n\nexport const checkIsShowLiveLabel = (): boolean => {\n const { matchStatuses } = getCategorizerVars();\n\n if (!matchStatuses) {\n return !(\n isOneOfPages([App.Routes.OUTRIGHTS_LIST, App.Routes.OUTRIGHT]) ||\n isOneOfPages([App.Routes.ESPORT, App.Routes.CLASSIC], {\n exact: true,\n })\n );\n }\n\n return intersection(matchStatuses, LIVE_SPORTEVENT_STATUSES).length > 0;\n};\n\nexport const getSummaryPath = (\n sportId: string\n): { search: string; pathname: App.Routes } => {\n return {\n search: stringify({\n sportIds: [sportId],\n }),\n pathname: App.Routes.OUTRIGHTS_LIST,\n };\n};\n\nexport const getNextOpenedSportIds = (options: {\n actionType: Filters.CheckGameType;\n openedSportIds: string[];\n selectedSportIds: string[];\n triggeredSportId: string;\n}): string[] => {\n const { actionType, openedSportIds, triggeredSportId } = options;\n\n if (actionType === Filters.CheckGameType.Close) {\n return without(openedSportIds, triggeredSportId);\n }\n\n if (actionType === Filters.CheckGameType.Open) {\n const { selectedSportIds } = options;\n\n return intersection(openedSportIds, selectedSportIds).concat(\n triggeredSportId\n );\n }\n\n return [];\n};\n\nexport const isFreeBetVisibleInCategorizer = (pathname: string): boolean => {\n const sportTypeRoutes = [App.Routes.CLASSIC, App.Routes.ESPORT];\n const timeTypeRoutes = [App.Routes.LIVE_LIST, App.Routes.PREMATCH];\n\n const combinedRoutes = flatMap(sportTypeRoutes, sportTypeRoute =>\n timeTypeRoutes.map(timeTypeRout => `${sportTypeRoute}${timeTypeRout}`)\n );\n\n return concat(\n [App.Routes.UPCOMING_LIST],\n sportTypeRoutes,\n timeTypeRoutes,\n combinedRoutes\n ).includes(pathname);\n};\n\nexport const getNextPathname = (requestedSportType: App.SportType): string => {\n const history = getHistory();\n\n const slicedPathname = history.location.pathname\n .replace(App.Routes.ESPORT, '')\n .replace(App.Routes.CLASSIC, '');\n\n const parentPath = getRouteBySportType(requestedSportType);\n\n return `${parentPath}${slicedPathname}` || App.Routes.UPCOMING_LIST;\n};\n\nexport const getRequestedSportType = (\n sportIds: string[],\n sports: Map\n): App.SportType | null => {\n const sportType = getSportTypeFromLocation();\n\n if (\n sportType === SportType.Mix ||\n isOneOfPages([App.Routes.OUTRIGHTS_LIST, App.Routes.OUTRIGHT]) ||\n isFavoritePage() ||\n isInnerPage()\n ) {\n return null;\n }\n\n const nextSportType = getSportTypeBySelectedSportsIds(sports, sportIds);\n\n return nextSportType && sportType !== nextSportType ? nextSportType : null;\n};\n\nconst getSportTypeBySelectedSportsIds = (\n sports: Map,\n selectedSportIds: string[]\n): App.SportType | null => {\n if (!selectedSportIds.length) return null;\n\n return getSportTypeBySportTags(sports, selectedSportIds);\n};\n\nexport const getSelectedCountryKeyInfo = (\n activeCountryKey: string\n): {\n selectedCountryKey: string;\n isSelectedCountryCodeWithAll: boolean;\n} => {\n const [selectedCountryKey, allPrefix] = activeCountryKey.split(\n ACTIVE_COUNTRY_KEY_DIVIDER\n );\n\n return {\n selectedCountryKey: selectedCountryKey || '',\n isSelectedCountryCodeWithAll: Boolean(allPrefix),\n };\n};\n\nexport function sortByTopTournaments(\n categorizerItems: API.CategorizerItem[]\n): API.CategorizerItem[] {\n return sortBy(categorizerItems, item =>\n item.meta.find(\n el =>\n el.name === CategorizerTournamentMetaKey.IsTop &&\n el.value === 'true'\n )\n );\n}\n\nexport function getCategorizerVars(): GQL.GetCategorizerQueryVariables {\n const { selectedSportIds, sportIds: incomeSportIds } = getBettingOptions();\n const sportIds = UserDevice.getInstance()?.isDeviceMobile()\n ? selectedSportIds\n : incomeSportIds;\n const expand = {\n countLiveEventsBySport: true,\n countPreMatchEventsBySport: true,\n };\n\n if (checkIsDynamicCategorizer()) {\n const {\n marketStatuses,\n matchStatuses,\n ...restVariables\n } = getDefaultVariables();\n\n const {\n marketStatusesForLiveSportEvent,\n dateFrom: defaultDateFrom,\n } = getVariablesForLiveSportEvent(matchStatuses, marketStatuses);\n\n return {\n dateFrom: defaultDateFrom,\n matchStatuses,\n ...restVariables,\n marketStatuses: marketStatusesForLiveSportEvent,\n sportIds,\n expand,\n };\n }\n\n return {\n marketStatuses: [\n GQL.MarketStatus.ACTIVE,\n GQL.MarketStatus.SUSPENDED,\n GQL.MarketStatus.RESULTED,\n GQL.MarketStatus.CANCELLED,\n GQL.MarketStatus.DEACTIVATED,\n ],\n matchStatuses: [\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ],\n sportEventTypes: [GQL.SportEventType.MATCH],\n sportIds,\n expand,\n };\n}\n\nexport function hasAnyMetaEventsInCategorizer(\n meta: API.Pair[],\n metaName: CategorizerTournamentMetaKey\n): boolean {\n return meta.some(el => el.name === metaName && +el.value > 0);\n}\n\nexport const getSortedCategorizerItems = ({\n sportType,\n sports,\n sportsOrder,\n categorizerItems,\n outrightCategorizerItems,\n}: {\n sportType: App.SportType | null;\n sports: Map;\n sportsOrder: Partial> | undefined;\n categorizerItems: API.CategorizerItem[];\n outrightCategorizerItems: API.CategorizerItem[];\n}): API.CategorizerItem[] => {\n const outrightItems = outrightCategorizerItems.filter(({ value }) =>\n includes(OUTRIGHTS_ONLY_SPORTS, value)\n );\n\n const differenceOutrightCategorizer = differenceBy(\n outrightItems,\n categorizerItems,\n 'value'\n );\n\n const categorizerItemResult = [\n ...categorizerItems,\n ...differenceOutrightCategorizer,\n ];\n\n return getSortedSportsBySportType({\n sportType,\n sports,\n categorizerItems: categorizerItemResult,\n sportsOrder,\n });\n};\n","var arrayPush = require('./_arrayPush'),\n baseFlatten = require('./_baseFlatten'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray');\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nmodule.exports = concat;\n","\"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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilterStateRecord = exports.CategorizerStateRecord = void 0;\nvar immutable_1 = require(\"immutable\");\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar types_1 = require(\"./types\");\nvar constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\nvar _a = core_1.default.utils, isInnerPage = _a.isInnerPage, getFiltersFromLocation = _a.getFiltersFromLocation;\nexports.CategorizerStateRecord = immutable_1.Record({\n items: [],\n fetchStatus: core_1.App.FetchStatus.INITIAL,\n isOpen: false,\n openedGameIds: [],\n fixedTournamentIds: [],\n}, 'CategorizerState');\nexports.FilterStateRecord = immutable_1.Record({\n categorizer: new exports.CategorizerStateRecord(),\n isOpen: false,\n}, 'FilterState');\nvar initialState = new exports.FilterStateRecord();\nfunction reducer(state, action) {\n if (state === void 0) { state = initialState; }\n switch (action.type) {\n case constants_1.GET_CATEGORIZER_REQUEST: {\n var nextCategorizer = state.categorizer.set('fetchStatus', core_1.App.FetchStatus.LOADING);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.GET_CATEGORIZER_SUCCESS: {\n var data = action.payload.data;\n var nextCategorizer = state.categorizer\n .set('items', data.categorizer)\n .set('fetchStatus', core_1.App.FetchStatus.LOADED);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.GET_CATEGORIZER_FAIL: {\n var nextCateogrizer = state.categorizer.set('fetchStatus', core_1.App.FetchStatus.FAILED);\n return state.set('categorizer', nextCateogrizer);\n }\n case constants_1.TOGGLE_FILTERS: {\n return state.set('isOpen', !state.isOpen);\n }\n case constants_1.OPEN_CATEGORIZER: {\n if (state.categorizer.isOpen)\n return state;\n var nextCategorizer = state.categorizer.set('isOpen', true);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.CLOSE_CATEGORIZER: {\n if (!state.categorizer.isOpen)\n return state;\n var nextCategorizer = state.categorizer.set('isOpen', false);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.CHANGE_FIXED_TOURNAMENTS: {\n var fixedTournamentIds = action.payload.fixedTournamentIds;\n var nextCategorizer = state.categorizer.set('fixedTournamentIds', lodash_1.xor(state.categorizer.fixedTournamentIds, fixedTournamentIds));\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.SELECT_GAME: {\n var _a = action.payload, gameId = _a.gameId, type = _a.type, nextTournamentIds = _a.nextTournamentIds;\n var nextOpenedGameIds = state.categorizer.openedGameIds;\n if (type === types_1.CheckGameType.Close) {\n nextOpenedGameIds = lodash_1.xor(state.categorizer.openedGameIds, [\n gameId,\n ]);\n }\n else {\n nextOpenedGameIds = utils_1.getOpenedGameIds(state.categorizer.items, lodash_1.xor(state.categorizer.openedGameIds, [gameId]), nextTournamentIds, state.categorizer.fixedTournamentIds);\n }\n var nextCategorizer = state.categorizer.set('openedGameIds', nextOpenedGameIds);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS: {\n var items = state.categorizer.items;\n var _b = getFiltersFromLocation().tournamentIds, tournamentIds = _b === void 0 ? [] : _b;\n var nextOpenedGameIds = utils_1.getOpenedGameIds(items, [], tournamentIds, []);\n var nextCategorizer = state.categorizer.set('openedGameIds', nextOpenedGameIds);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.RESET_CATEGORIZER_CONTROL_FIELDS: {\n var nextCategorizer = state.categorizer\n .set('openedGameIds', [])\n .set('fixedTournamentIds', []);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.INIT_CATEGORIZER_CONTROLS_BY_LOCATION: {\n var nextOpenedGameIds = state.categorizer.openedGameIds;\n var nextFixedTournamentIds = state.categorizer.fixedTournamentIds;\n if (isInnerPage()) {\n nextOpenedGameIds = [];\n nextFixedTournamentIds = [];\n }\n else {\n var _c = getFiltersFromLocation().tournamentIds, tournamentIds_1 = _c === void 0 ? [] : _c;\n nextOpenedGameIds = utils_1.getOpenedGameIds(state.categorizer.items, [], tournamentIds_1, state.categorizer.fixedTournamentIds);\n nextFixedTournamentIds = state.categorizer.fixedTournamentIds.filter(function (fId) { return tournamentIds_1.includes(fId); });\n }\n var nextCategorizer = state.categorizer\n .set('openedGameIds', nextOpenedGameIds)\n .set('fixedTournamentIds', nextFixedTournamentIds);\n return state.set('categorizer', nextCategorizer);\n }\n default:\n return state;\n }\n}\nexports.default = reducer;\n//# sourceMappingURL=reducer.js.map","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseIteratee = require('./_baseIteratee'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n : [];\n});\n\nmodule.exports = differenceBy;\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 __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\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.filterMatchesPreview = exports.isVisibleFreeBetInCategorizer = exports.getOpenedGameIds = exports.getCountAppliedFilters = void 0;\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar _a = core_1.default.utils, getFiltersFromLocation = _a.getFiltersFromLocation, getDefaultVariables = _a.getDefaultVariables;\nvar getHistory = core_1.default.services.getHistory;\nfunction getCountAppliedFilters(calculationFields) {\n var searchObj = getFiltersFromLocation();\n return lodash_1.reduce(lodash_1.pick(searchObj, calculationFields), function (sum, curr) {\n if (!curr)\n return sum;\n if (lodash_1.isArray(curr))\n return (sum += curr.length);\n return ++sum;\n }, 0);\n}\nexports.getCountAppliedFilters = getCountAppliedFilters;\nfunction getOpenedGameIds(categorizerData, currentOpenedGameIds, selectedTournamentIds, fixedTournamentIds) {\n return lodash_1.reduce(categorizerData, function (acc, currentGame) {\n var currentGameId = currentGame.value;\n var currentTournamentIds = lodash_1.map(currentGame.children, function (child) { return child.value; });\n var isCurrentGameFixed = lodash_1.intersection(fixedTournamentIds, currentTournamentIds).length >\n 0;\n if (isCurrentGameFixed) {\n var nextAcc = __spreadArray([], acc);\n if (currentOpenedGameIds.includes(currentGameId)) {\n nextAcc.push(currentGameId);\n }\n return nextAcc;\n }\n if (lodash_1.intersection(currentTournamentIds, selectedTournamentIds)\n .length > 0) {\n return __spreadArray(__spreadArray([], acc), [currentGameId]);\n }\n return acc;\n }, []);\n}\nexports.getOpenedGameIds = getOpenedGameIds;\nfunction isVisibleFreeBetInCategorizer() {\n return getHistory().location.pathname === core_1.App.Routes.UPCOMING_LIST;\n}\nexports.isVisibleFreeBetInCategorizer = isVisibleFreeBetInCategorizer;\nvar filterMatchesPreview = function (vars) {\n if (vars === void 0) { vars = {}; }\n var apiClient = core_1.default.appServiceLocator.get('apiClient');\n var defaultVariables = getDefaultVariables();\n // eslint-disable-next-line no-unused-vars\n var withMarketsCount = defaultVariables.withMarketsCount, rest = __rest(defaultVariables, [\"withMarketsCount\"]);\n var variables = __assign(__assign({}, rest), vars);\n var method = 'getMatchesPreviewByFilters';\n return apiClient.makeRequest({\n method: method,\n variables: variables,\n });\n};\nexports.filterMatchesPreview = filterMatchesPreview;\n//# sourceMappingURL=utils.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"timer__container___1EjA6\",\"status\":\"timer__status___2ooCO\",\"time-unit\":\"timer__time-unit___2Hqmz\",\"days\":\"timer__days___tOoGT\",\"time-amount\":\"timer__time-amount___1J4Fb\",\"time-title\":\"timer__time-title___2TfSN\",\"list-unit\":\"timer__list-unit___13HNx\",\"divider\":\"timer__divider___3axxH\",\"time-unit-wrapper\":\"timer__time-unit-wrapper___2KLQs\"};","export enum ScrollShadow {\n Top = 'top',\n Both = 'both',\n Bottom = 'bottom',\n None = 'none',\n}\n","import React, { Fragment } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport core, { View } from '@gin-betting/core';\nimport { Freebet, FreebetDefault } from '@gin-betting/freebet';\nimport cn from 'classnames';\n\nimport { Icon, Toggler } from 'components';\nimport globalMsgs from 'messages';\nimport UserDevice from 'services/user-device';\n\nimport freeBetIcon from 'assets/svg/freebet.svg';\nimport './SingleFreebetRow.scss';\n\nconst {\n utils: { getCurrency },\n} = core;\n\ninterface Props {\n betslipFreebetId: Freebet.BetslipFreebet['id'];\n toggleFreebet: FreebetDefault['actions']['toggleActiveBetslipFreebet'];\n freebet: View.Freebet;\n isActive: boolean;\n isFreebetInProcess: boolean;\n}\n\nconst SingleFreeBetRowBody: React.FC = ({\n toggleFreebet,\n betslipFreebetId,\n isActive,\n isFreebetInProcess,\n freebet,\n}) => {\n const dispatch = useDispatch();\n const { currencyName } = getCurrency();\n\n const { id, amount } = freebet;\n\n const handlerToggle = () => {\n if (isFreebetInProcess) return;\n\n dispatch(\n toggleFreebet({\n betslipFreebetId,\n freebetId: id,\n })\n );\n };\n\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n return (\n \n
\n
\n \n \n {amount}\n {currencyName}\n
\n
\n \n \n \n
\n );\n};\n\nexport default React.memo(SingleFreeBetRowBody);\n","import React from 'react';\nimport { View } from '@gin-betting/core';\nimport { Freebet, FreebetDefault } from '@gin-betting/freebet';\nimport cn from 'classnames';\n\nimport UserDevice from 'services/user-device';\nimport SingleFreeBetRowBody from './SingleFreebetRowBody';\n\nimport './SingleFreebetRow.scss';\n\ninterface Props {\n betslipFreebetId: Freebet.BetslipFreebet['id'];\n toggleFreebet: FreebetDefault['actions']['toggleActiveBetslipFreebet'];\n freebet: View.Freebet;\n isActive: boolean;\n isFreebetInProcess: boolean;\n}\n\nconst SingleFreeBetRow: React.FC = ({\n isFreebetInProcess,\n betslipFreebetId,\n freebet,\n toggleFreebet,\n isActive,\n}) => {\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n return (\n \n \n \n );\n};\n\nexport default SingleFreeBetRow;\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core, { GQL, View } from '@gin-betting/core';\nimport freebetModule, { Freebet } from '@gin-betting/freebet';\nimport { Set } from 'immutable';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useDidUpdate, useMemoSelector } from 'hooks';\nimport { ScrollShadow } from './constants';\n\nconst {\n utils: { getIdsFromBetslipOddId, getBettingOptions },\n} = core;\n\nconst {\n selectors: {\n selectBetslipFreebetFromProps,\n selectFreebetsByBetslipFreebet,\n selectOddsByOddIds,\n },\n actions: { getApplicableFreebets },\n utils: { getSelectionByOdd },\n} = freebetModule;\n\ninterface Input {\n betslipOddIds: string[];\n betType: GQL.BetType;\n toggleFreebetCallback: (amount: View.Freebet['amount'] | null) => void;\n}\n\ninterface Output {\n odds: Array;\n betslipFreebet: Freebet.BetslipFreebet | undefined;\n freebets: View.Freebet[];\n scrollShadow: ScrollShadow;\n handleScrolling: React.UIEventHandler;\n isScrollable: boolean;\n}\n\ninterface ApplicableFreebets {\n betType: GQL.BetType;\n odds: Array;\n betslipFreebetId: Set;\n}\n\nconst useBetslipFreebet = ({\n betType,\n betslipOddIds,\n toggleFreebetCallback,\n}: Input): Output => {\n const dispatch = useDispatch();\n const betslipFreebetId = Set(betslipOddIds);\n const oddIds = betslipOddIds.map(\n betslipOddId => getIdsFromBetslipOddId(betslipOddId).oddId\n );\n\n const { odds, betslipFreebet, freebets } = useMemoSelector(\n makeSelectProps(),\n {\n oddIds,\n betslipFreebetId,\n }\n );\n\n const [scrollShadow, setScrollShadow] = useState(ScrollShadow.None);\n\n const isScrollable = freebets.length > 4;\n\n useEffect(() => {\n if (isScrollable) {\n setScrollShadow(ScrollShadow.Bottom);\n } else {\n setScrollShadow(ScrollShadow.None);\n }\n }, [isScrollable]);\n\n const handleScrolling = useCallback(e => {\n if (!e.target) return;\n\n const { scrollTop, offsetTop, scrollHeight, offsetHeight } = e.target;\n\n if (scrollTop === offsetTop) {\n setScrollShadow(ScrollShadow.Bottom);\n } else if (scrollTop > offsetTop) {\n setScrollShadow(ScrollShadow.Both);\n } else if (scrollTop === scrollHeight - offsetHeight) {\n setScrollShadow(ScrollShadow.Top);\n }\n }, []);\n\n const isActivatedFreeBetId = !!betslipFreebet?.activeFreebetId;\n\n const handleGetApplicableFreebets = useCallback(\n ({\n betslipFreebetId: id,\n betType: currBetType,\n odds: currOdds,\n }: ApplicableFreebets) => {\n const { isAuthorized } = getBettingOptions();\n\n if (!isAuthorized) return;\n\n const selections: GQL.Selection[] = [];\n currOdds.forEach((odd: View.Odd) => {\n if (!odd) return;\n\n const selection = getSelectionByOdd(odd);\n\n if (!selection) return;\n\n selections.push(selection);\n });\n\n if (selections.length < 1) return;\n\n dispatch(\n getApplicableFreebets(\n {\n selections,\n betType: currBetType,\n },\n { betslipFreebetId: id }\n )\n );\n },\n [dispatch]\n );\n\n const handleToggleFreebetCallback = useCallback(\n (amount: View.Freebet['amount'] | null) => {\n if (!toggleFreebetCallback) return;\n\n toggleFreebetCallback(amount);\n },\n [toggleFreebetCallback]\n );\n\n const handleGetApplicableFreebetsRef = useRef(handleGetApplicableFreebets);\n handleGetApplicableFreebetsRef.current = handleGetApplicableFreebets;\n\n const handleToggleFreebetCallbackRef = useRef(handleToggleFreebetCallback);\n handleToggleFreebetCallbackRef.current = handleToggleFreebetCallback;\n\n useEffect(() => {\n if (odds.length === 0 || betslipFreebet) return;\n\n handleGetApplicableFreebetsRef.current({\n betslipFreebetId,\n betType,\n odds,\n });\n }, [betType, betslipFreebet, odds, betslipFreebetId]);\n\n useEffect(() => {\n if (!betslipFreebet || !betslipFreebet.activeFreebetId) return;\n\n const currFreebet = freebets.find(\n freebet => freebet.id === betslipFreebet.activeFreebetId\n );\n\n if (!currFreebet) return;\n\n handleToggleFreebetCallbackRef.current(currFreebet.amount);\n }, [betslipFreebet, freebets]);\n\n useDidUpdate(() => {\n if (isActivatedFreeBetId) return;\n\n handleToggleFreebetCallbackRef.current(null);\n }, [isActivatedFreeBetId]);\n\n return {\n odds,\n betslipFreebet,\n freebets,\n scrollShadow,\n handleScrolling,\n isScrollable,\n };\n};\n\nconst makeSelectProps = () => {\n return createStructuredSelector({\n odds: selectOddsByOddIds,\n betslipFreebet: selectBetslipFreebetFromProps,\n freebets: selectFreebetsByBetslipFreebet,\n });\n};\n\nexport default useBetslipFreebet;\n","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars';\nimport { GQL, View } from '@gin-betting/core';\nimport freebetModule from '@gin-betting/freebet';\nimport cn from 'classnames';\nimport cd from 'debug';\n\nimport UserDevice from 'services/user-device';\nimport { ScrollShadow } from './constants';\nimport SingleFreebetRow from './SingleFreebetRow';\nimport useBetslipFreebet from './useBetslipFreebet';\n\nimport './betslipFreeBet.scss';\n\nconst {\n actions: { toggleActiveBetslipFreebet },\n} = freebetModule;\n\ninterface Props {\n betslipOddIds: string[];\n betType: GQL.BetType;\n isFreebetInProcess: boolean;\n toggleActiveBetslipFreebet?: typeof toggleActiveBetslipFreebet;\n toggleFreebetCallback: (amount: View.Freebet['amount'] | null) => void;\n}\n\nconst debug = cd('app:betslip:FreeBetListContainer');\n\nconst BetslipFreebet: React.FC = props => {\n debug('render', props);\n\n const {\n isFreebetInProcess,\n betType,\n betslipOddIds,\n toggleFreebetCallback,\n } = props;\n\n const {\n odds,\n betslipFreebet,\n freebets,\n scrollShadow,\n handleScrolling,\n isScrollable,\n } = useBetslipFreebet({\n betType,\n betslipOddIds,\n toggleFreebetCallback,\n });\n\n if (odds.length === 0 || !betslipFreebet) return null;\n\n const { id, activeFreebetId } = betslipFreebet;\n\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n const renderFreebets = freebets.map(freebet => (\n \n ));\n\n return (\n \n
\n {isMobile || !isScrollable ? (\n renderFreebets\n ) : (\n \n {renderFreebets}\n \n )}\n
\n \n );\n};\n\nexport default BetslipFreebet;\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core, { View } from '@gin-betting/core';\nimport freebetModule from '@gin-betting/freebet';\nimport matchList from '@gin-betting/match-list';\nimport { Map } from 'immutable';\n\nimport { ExtendedRouts } from 'app-constants';\nimport { useAppliedFilters, useMemoSelector } from 'hooks';\n\nconst {\n pagination: {\n actions: { dropPaginationState },\n },\n} = matchList;\nconst {\n services: { getHistory, stringify },\n} = core;\n\nconst {\n selectors: { selectFreebets },\n} = freebetModule;\n\ninterface Output {\n toggleFreeBet: VoidFunction;\n activeFreeBetId: string | undefined;\n onChangeFreeBetId: (freeBetId: string) => void;\n freeBets: Map;\n isFreeBetsEmpty: boolean;\n}\n\nconst useToggleFreeBetSelect = (): Output => {\n const dispatch = useDispatch();\n const { freeBetId: activeFreeBetId } = useAppliedFilters();\n\n const freeBets = useMemoSelector(selectFreebets);\n const freeBetId = freeBets.first()?.id;\n\n const onChangeFreeBetId = useCallback(\n (newFreeBetId: string | undefined) => {\n dispatch(dropPaginationState());\n getHistory().push({\n pathname: ExtendedRouts.UPCOMING_LIST,\n search: newFreeBetId\n ? stringify({ freeBetId: newFreeBetId })\n : undefined,\n });\n },\n [dispatch]\n );\n\n const toggleFreeBet = useCallback(() => {\n onChangeFreeBetId(activeFreeBetId ? '' : freeBetId);\n }, [activeFreeBetId, freeBetId, onChangeFreeBetId]);\n\n return {\n toggleFreeBet,\n activeFreeBetId,\n onChangeFreeBetId,\n freeBets,\n isFreeBetsEmpty: !freeBets || freeBets.size === 0,\n };\n};\n\nexport default useToggleFreeBetSelect;\n","import React, { useCallback } from 'react';\nimport { useIntl } from 'react-intl';\nimport { View } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { Currency } from 'components';\nimport msgs from 'messages';\n\nimport './freebetRow.scss';\n\ninterface Props {\n onCheck: (freeBetId: string) => void;\n freebet: View.Freebet;\n isCheck: boolean;\n}\n\nconst FreebetRow: React.FC = ({\n onCheck,\n isCheck,\n freebet: { amount, id },\n}) => {\n const { formatMessage } = useIntl();\n const handleCheck = useCallback(() => onCheck(id), [onCheck, id]);\n\n return (\n \n
\n
\n
\n\n
\n
{formatMessage(msgs.freebet)}
\n
\n {amount}\n \n
\n
\n
\n );\n};\n\nexport default FreebetRow;\n","import React from 'react';\n\nimport { useToggleFreeBetSelect } from '../../hooks';\nimport FreebetRow from '../FreebetRow';\n\nimport './freebetSelect.scss';\n\nconst FreebetSelect: React.FC = () => {\n const {\n activeFreeBetId,\n onChangeFreeBetId,\n freeBets,\n isFreeBetsEmpty,\n } = useToggleFreeBetSelect();\n\n if (isFreeBetsEmpty || !activeFreeBetId) return null;\n\n return (\n
\n {freeBets.valueSeq().map(freeBet => (\n \n ))}\n
\n );\n};\n\nexport default FreebetSelect;\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\": \"freebet-symbol_1ed3d\",\n \"use\": \"freebet-symbol_1ed3d-usage\",\n \"viewBox\": \"0 0 20 20\",\n \"content\": \"\\n \\n \\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { useLocation } from 'react-router';\nimport core from '@gin-betting/core';\n\nimport {\n CategorizerHeadingRow,\n CategorizerHeadingRowGroup,\n Icon,\n} from 'components';\nimport globalMessages from 'messages';\nimport { isFreeBetVisibleInCategorizer } from '../../../filters/utils';\nimport { useToggleFreeBetSelect } from '../../hooks';\nimport FreebetSelect from '../FreebetSelect';\n\nimport freeBetSymbol from 'assets/svg/freebet-symbol.svg';\nimport './freeBetCategorizer.scss';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nconst FreeBetCategorizer: React.FC = () => {\n const { pathname } = useLocation();\n const {\n activeFreeBetId,\n toggleFreeBet,\n isFreeBetsEmpty,\n } = useToggleFreeBetSelect();\n\n if (\n !isFreeBetVisibleInCategorizer(pathname) ||\n !getBettingOptions().isAuthorized ||\n isFreeBetsEmpty\n ) {\n return null;\n }\n\n return (\n \n
\n }\n isActive={!!activeFreeBetId}\n onClick={toggleFreeBet}\n >\n \n \n \n
\n
\n );\n};\n\nexport default FreeBetCategorizer;\n","import React, { memo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport globalMessages from 'messages';\nimport { useToggleFreeBetSelect } from '../../hooks';\n\nimport freeBetSymbol from 'assets/svg/freebet-symbol.svg';\nimport './freeBetMobileTitle.scss';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nconst FreeBetMobileTitle: React.FC = () => {\n const {\n activeFreeBetId,\n toggleFreeBet,\n isFreeBetsEmpty,\n } = useToggleFreeBetSelect();\n\n if (!getBettingOptions().isAuthorized || isFreeBetsEmpty) return null;\n\n return (\n
\n
\n \n\n \n \n \n
\n
\n );\n};\n\nexport default memo(FreeBetMobileTitle);\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n marketTypes: {\n defaultMessage: 'market type',\n id: 'FreebetPanel.ConditionRow.marketType'\n },\n competitors: {\n defaultMessage: 'competitor',\n id: 'FreebetPanel.ConditionRow.competitors'\n },\n oddValue: {\n defaultMessage: 'odd',\n id: 'FreebetPanel.ConditionRow.oddValue'\n },\n tournaments: {\n defaultMessage: 'tournament',\n id: 'FreebetPanel.ConditionRow.tournaments'\n },\n betType: {\n defaultMessage: 'bet type',\n id: 'FreebetPanel.ConditionRow.betType'\n },\n sportEvents: {\n defaultMessage: 'sport event',\n id: 'FreebetPanel.ConditionRow.sportEvents'\n },\n sports: {\n defaultMessage: 'sport type',\n id: 'FreebetPanel.ConditionRow.sports'\n },\n oddMax: {\n defaultMessage: 'over',\n id: 'FreebetPanel.ConditionRow.OddRatio.max'\n },\n oddMin: {\n defaultMessage: 'less',\n id: 'FreebetPanel.ConditionRow.OddRatio.min'\n },\n totalOddsCoef: {\n defaultMessage: 'total odds coefficient',\n id: 'FreebetPanel.ConditionRow.TotalOddsCoef.total'\n },\n oddsCount: {\n defaultMessage: 'odds count',\n id: 'FreebetPanel.ConditionRow.OddsCount.count'\n },\n freebet: {\n defaultMessage: 'free bet',\n id: 'FreebetPanel.title'\n },\n days: {\n defaultMessage: 'days',\n id: 'FreebetPanel.Timer.days'\n },\n hours: {\n defaultMessage: 'hours',\n id: 'FreebetPanel.Timer.hours'\n },\n minutes: {\n defaultMessage: 'minutes',\n id: 'FreebetPanel.Timer.minutes'\n },\n seconds: {\n defaultMessage: 'seconds',\n id: 'FreebetPanel.Timer.seconds'\n },\n freebetStatusAvailable: {\n defaultMessage: 'available',\n id: 'FreebetPanel.status.available'\n },\n freebetStatusNotAvailable: {\n defaultMessage: 'not available',\n id: 'FreebetPanel.status.notAvailable'\n },\n freeBetAvailable: {\n defaultMessage: 'Available FreeBet',\n id: 'freebet.BetslipFreebet.available'\n },\n freeBetPotential: {\n defaultMessage: 'Potential Win',\n id: 'freebet.BetslipFreebet.potentialWin'\n },\n freeBetUse: {\n defaultMessage: 'Use Freebet',\n id: 'freebet.BetslipFreebet.use'\n }\n});\n","import { useIntl } from 'react-intl';\nimport { GQL, View } from '@gin-betting/core';\nimport freebet from '@gin-betting/freebet';\nimport { floor } from 'lodash';\n\nimport messages from '../../../messages';\n\nconst {\n isSportEventCondition,\n isTournamentsCondition,\n isSportCondition,\n isCompetitorsCondition,\n isOddsCoefficientCondition,\n isOddsCountCondition,\n isTotalOddsCoefficientCondition,\n} = freebet.utils;\n\ninterface Output {\n value?: string | string[];\n title: string;\n}\n\ninterface Input {\n condition: View.FreebetBetDetailsCondition;\n}\n\nconst titles = {\n [GQL.FreebetBetDetailsConditionType.SPORT_EVENT]: messages.sportEvents,\n [GQL.FreebetBetDetailsConditionType.TOURNAMENT]: messages.tournaments,\n [GQL.FreebetBetDetailsConditionType.MARKET_TYPE]: messages.marketTypes,\n [GQL.FreebetBetDetailsConditionType.SPORT]: messages.sports,\n [GQL.FreebetBetDetailsConditionType.ODDS_COEFFICIENT]: messages.oddValue,\n [GQL.FreebetBetDetailsConditionType.COMPETITOR]: messages.competitors,\n [GQL.FreebetBetDetailsConditionType.ODDS_COUNT]: messages.oddsCount,\n [GQL.FreebetBetDetailsConditionType.TOTAL_ODDS_COEFFICIENT]:\n messages.totalOddsCoef,\n} as const;\n\nconst useConditionRow = ({ condition }: Input): Output => {\n const { formatMessage } = useIntl();\n\n const { type } = condition;\n const title = formatMessage(titles[type]);\n\n const getOddValueCondition = () => {\n if (isOddsCountCondition(condition)) {\n const { min, max } = condition;\n\n return [\n `${formatMessage(messages.oddMax)} ${floor(Number(min), 2)}`,\n `${formatMessage(messages.oddMin)} ${floor(Number(max), 2)}`,\n ];\n }\n\n if (isOddsCoefficientCondition(condition)) {\n const { minOddCoef, maxOddCoef } = condition;\n\n return [\n `${formatMessage(messages.oddMax)} ${floor(\n Number(minOddCoef),\n 2\n )}`,\n `${formatMessage(messages.oddMin)} ${floor(\n Number(maxOddCoef),\n 2\n )}`,\n ];\n }\n\n if (isTotalOddsCoefficientCondition(condition)) {\n const { maxTotalCoef, minTotalCoef } = condition;\n\n return [\n `${formatMessage(messages.oddMax)} ${floor(\n Number(minTotalCoef),\n 2\n )}`,\n `${formatMessage(messages.oddMin)} ${floor(\n Number(maxTotalCoef),\n 2\n )}`,\n ];\n }\n\n const value = getConditionValue(condition);\n\n if (!value) return;\n\n return value;\n };\n\n const value = getOddValueCondition();\n\n return {\n value,\n title,\n };\n};\n\nfunction getConditionValue(\n condition: View.FreebetBetDetailsCondition\n): Output['value'] {\n if (isSportEventCondition(condition)) {\n return condition.sportEvents.map(\n sportEvent => sportEvent.fixture.title\n );\n }\n\n if (isTournamentsCondition(condition)) {\n return condition.tournaments.map(tournament => tournament.name);\n }\n\n if (isSportCondition(condition)) {\n return condition.sports.map(sport => sport.name);\n }\n\n if (isCompetitorsCondition(condition)) {\n return condition.competitors.map(competitor => competitor.name);\n }\n}\n\nexport default useConditionRow;\n","import React from 'react';\nimport { View } from '@gin-betting/core';\n\nimport useConditionRow from './useConditionRow';\n\nimport './conditionRow.scss';\n\ninterface Props {\n condition: View.FreebetBetDetailsCondition;\n}\n\nconst ConditionRow: React.FC = ({ condition }) => {\n const { value, title } = useConditionRow({ condition });\n\n const values = Array.isArray(value) ? value : [value];\n\n return (\n
\n
{title}
\n
\n {values.map((val, idx) => (\n
\n {val}\n
\n ))}\n
\n
\n );\n};\n\nexport default ConditionRow;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport freebet, { Freebet } from '@gin-betting/freebet';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport messages from '../../../messages';\n\nimport './timer.scss';\n\nconst { convertSecondsToTimerFormat } = freebet.utils;\n\nexport default function Timer({ seconds }: { seconds: number }) {\n const needTimeUnits = [\n Freebet.TimerUnit.Day,\n Freebet.TimerUnit.Hour,\n Freebet.TimerUnit.Minute,\n Freebet.TimerUnit.Second,\n ];\n const splittedTimes = convertSecondsToTimerFormat(\n seconds,\n needTimeUnits\n ).split(':');\n\n return (\n
\n
\n {seconds > 0 ? (\n \n ) : (\n \n )}\n
\n
\n {map(needTimeUnits, (unit, index) => (\n \n {renderTimeUnit(unit, splittedTimes[index])}\n \n ))}\n
\n
\n );\n}\n\nfunction renderTimeUnit(\n timeUnit: Freebet.TimerUnit,\n amount: string | undefined\n): React.ReactNode {\n const withDivider = [\n Freebet.TimerUnit.Hour,\n Freebet.TimerUnit.Minute,\n ].includes(timeUnit);\n\n const msgDesc = mapUnitToTitle[timeUnit];\n\n const unitBody = (\n \n
{amount ?? '-'}
\n
\n \n
\n \n );\n\n if (!withDivider) return unitBody;\n\n return (\n
\n {unitBody}\n
:
\n
\n );\n}\n\nclass MapUnitToTitle implements Record {\n [Freebet.TimerUnit.Day] = 'days' as const;\n [Freebet.TimerUnit.Hour] = 'hours' as const;\n [Freebet.TimerUnit.Minute] = 'minutes' as const;\n [Freebet.TimerUnit.Second] = 'seconds' as const;\n}\n\nconst mapUnitToTitle = new MapUnitToTitle();\n","import React from 'react';\nimport freebet from '@gin-betting/freebet';\n\nimport Timer from './Timer';\n\nconst { getSecondsFromDate } = freebet.utils;\n\ninterface Props {\n expiresAt: string;\n}\n\ninterface State {\n leftSeconds: number;\n}\n\nclass TimerContainer extends React.Component {\n timerId: number | undefined;\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n leftSeconds: getSecondsFromDate(props.expiresAt),\n };\n }\n\n // set expiresAt in key prop if you want reset state\n // static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n // const nextLeftSeconds = getSecondsFromDate(nextProps.expiresAt);\n\n // if (prevState.leftSeconds !== nextLeftSeconds) {\n // return { leftSeconds: nextLeftSeconds };\n // }\n\n // return null;\n // }\n\n componentDidMount() {\n if (getSecondsFromDate(this.props.expiresAt) > 0) {\n this.timerId = window.setInterval(() => this.updateTimer(), 1000);\n }\n }\n\n componentWillUnmount() {\n if (this.timerId) {\n clearInterval(this.timerId);\n }\n }\n\n private updateTimer() {\n this.setState(\n {\n leftSeconds: getSecondsFromDate(this.props.expiresAt),\n },\n () => {\n if (this.state.leftSeconds <= 0) {\n clearInterval(this.timerId);\n }\n }\n );\n }\n\n render() {\n const { leftSeconds } = this.state;\n\n return React.createElement(Timer, {\n seconds: leftSeconds,\n });\n }\n}\n\nexport default TimerContainer;\n","import { View } from '@gin-betting/core';\nimport freebetModule from '@gin-betting/freebet';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n selectors: { selectFreeBetFromProps },\n} = freebetModule;\n\ninterface Output {\n freebet: View.Freebet | undefined;\n}\n\ninterface Input {\n freebetId: string;\n}\n\nconst useFreebetPanel = ({ freebetId }: Input): Output => {\n const { freebet } = useMemoSelector(selectProps, { freebetId });\n\n return {\n freebet,\n };\n};\n\nconst selectProps = createStructuredSelector({\n freebet: selectFreeBetFromProps,\n});\n\nexport default useFreebetPanel;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport core from '@gin-betting/core';\n\nimport { betTypesMessage } from 'app-constants';\nimport messages from '../../messages';\nimport ConditionRow from './ConditionRow';\nimport Timer from './Timer';\nimport useFreebetPanel from './useFreebetPanel';\n\nimport './freebetPanel.scss';\n\nconst {\n utils: { getCurrency, checkEquality },\n} = core;\n\ninterface Props {\n freebetId: string;\n}\n\nconst FreebetPanel: React.FC = ({ freebetId }) => {\n const { freebet } = useFreebetPanel({ freebetId });\n\n if (!freebet) return null;\n\n const { currencyName } = getCurrency();\n\n const { expiresAt, amount, conditions } = freebet;\n\n const { betDetails = [] } = conditions[0];\n const hasNoConditions =\n betDetails.length === 3 &&\n betDetails.every(d => d.conditions.length === 0);\n\n return (\n
\n {!hasNoConditions && (\n
\n {betDetails\n ?.filter(betDetail => betDetail.type !== 'SYSTEM')\n .map((betDetail, idxType) => (\n
\n
\n \n
\n {betDetail.conditions.map(\n (condition, idxCondition) => (\n \n )\n )}\n
\n ))}\n
\n )}\n
\n
\n
\n
\n
\n \n
\n\n
\n {amount} {currencyName}\n
\n
\n\n \n
\n
\n
\n );\n};\n\nexport default React.memo(FreebetPanel, (prevProps, nextProps) =>\n checkEquality(prevProps, nextProps, {\n maxDepth: 2,\n excludedKeys: ['expiresAt', 'amount'],\n })\n);\n","import React from 'react';\nimport core from '@gin-betting/core';\n\nconst {\n poller: { usePoller },\n utils: { getBettingOptions },\n entities: {\n actions: { getFreebets },\n },\n} = core;\n\nconst FREEBET_POLLER_NAME = 'freebet' as const;\n\nconst RequestFreebet: React.FC = () => {\n const { isAuthorized } = getBettingOptions();\n\n usePoller({\n executableAction: getFreebets,\n isPollingTurnedOff: !isAuthorized,\n pollerName: FREEBET_POLLER_NAME,\n skipInitialRequest: !isAuthorized,\n });\n\n return null;\n};\n\nexport default React.memo(RequestFreebet);\n","import core, { View } from '@gin-betting/core';\nimport { keys } from 'lodash';\nimport type { TypedAction } from 'redux';\nimport { TypedEpic } from 'redux-observable';\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/operator/mergeMap';\n\nconst {\n async: {\n constants: { UPDATE_BET },\n },\n entities: {\n actions: { getFreebets },\n },\n} = core;\n\ntype UpdateBetFn = (\n entities: Pick\n) => TypedAction<{\n entities: Pick;\n}>;\n\ntype GetFreebetsEpicEpic = TypedEpic<\n ReturnType,\n ReturnType\n>;\n\nexport const getFreebetsEpic$: GetFreebetsEpicEpic = 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 { freebetId } = bet;\n\n if (!freebetId) return Observable.empty();\n\n return Observable.of(getFreebets());\n });\n","import freebet, {\n Freebet as Types,\n FreebetDefault,\n} from '@gin-betting/freebet';\n\nimport moduleLocator from 'moduleLocator';\nimport * as components from './components';\nimport * as epics from './epics';\nimport * as hooks from './hooks';\n\nexport type { Types as Freebet, FreebetDefault };\n\nconst freebetModule = {\n ...freebet,\n components,\n hooks,\n epics,\n};\n\nmoduleLocator.set('freebet', { default: freebetModule });\n\nexport default freebetModule;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"freeBetCategorizer__container___2vX3q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"freebetSelect__container___3QSrn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"conditionRow__container___38NlA\",\"label\":\"conditionRow__label___2u_PN\",\"list\":\"conditionRow__list___Ny279\",\"list-item\":\"conditionRow__list-item___ewV1V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betslipFreeBet__container___2vJqR\",\"is-mobile\":\"betslipFreeBet__is-mobile___-_Lhx\",\"is-scroll\":\"betslipFreeBet__is-scroll___6JQIb\",\"is-bottom\":\"betslipFreeBet__is-bottom___Y2B2M\",\"is-top\":\"betslipFreeBet__is-top___KbatB\",\"list\":\"betslipFreeBet__list___3Zvvq\",\"scrollbar\":\"betslipFreeBet__scrollbar___wZ-6T\"};","\"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 constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\nvar _a = core_1.default.entities.constants, GET_FREE_BETS_FAIL = _a.GET_FREE_BETS_FAIL, GET_FREE_BETS_SUCCESS = _a.GET_FREE_BETS_SUCCESS, GET_FREE_BETS_REQUEST = _a.GET_FREE_BETS_REQUEST, UPDATE_BET = core_1.default.async.constants.UPDATE_BET, _b = core_1.default.utils, extendSearchString = _b.extendSearchString, getFiltersFromLocation = _b.getFiltersFromLocation, convertBetStatus = _b.convertBetStatus, moduleLocator = core_1.default.services.moduleLocator;\nvar FreebetStateRecord = immutable_1.Record({\n fetchStatus: core_1.App.FetchStatus.INITIAL,\n freebetIds: immutable_1.OrderedSet(),\n freebetIdsInProcess: immutable_1.OrderedSet(),\n betslipFreebets: immutable_1.OrderedMap(),\n}, 'FreebetState');\nvar initialState = new FreebetStateRecord();\nvar betslip;\nmoduleLocator.get('betslip').subscribe(function (module) {\n betslip = module;\n});\nfunction reducer(state, action) {\n if (state === void 0) { state = initialState; }\n if (betslip) {\n var _a = betslip.constants, CREATE_BETS_FAIL = _a.CREATE_BETS_FAIL, CREATE_BETS_SUCCESS = _a.CREATE_BETS_SUCCESS;\n switch (action.type) {\n case CREATE_BETS_FAIL: {\n var freebetId = action.payload.args.freebetId;\n if (!freebetId)\n return state;\n var freebetIdsInProcess = state.freebetIdsInProcess;\n var nextFreebetIdsInProcess = freebetIdsInProcess.delete(freebetId);\n return state.set('freebetIdsInProcess', nextFreebetIdsInProcess);\n }\n case CREATE_BETS_SUCCESS: {\n var _b = action.payload, betslipOddIds = _b.betslipOddIds, freebetId = _b.freebetId, entities = _b.entities;\n if (!freebetId)\n return state;\n var betslipFreebets = state.betslipFreebets;\n var betslipFreebetId = betslipOddIds.toSet();\n var betslipFreebet = betslipFreebets.get(betslipFreebetId);\n if (!betslipFreebet)\n return state;\n var bets = entities.bets;\n var betId = Object.keys(bets)[0];\n if (!betId)\n return state;\n var nextBetslipFreebet = __assign(__assign({}, betslipFreebet), { betId: betId });\n var nextBetslipFreebets = betslipFreebets.set(nextBetslipFreebet.id, nextBetslipFreebet);\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n default: {\n // Should stay break\n break;\n }\n }\n }\n switch (action.type) {\n case GET_FREE_BETS_REQUEST: {\n return state.set('fetchStatus', core_1.App.FetchStatus.LOADING);\n }\n case GET_FREE_BETS_SUCCESS: {\n var result = action.payload.result;\n return state\n .set('fetchStatus', core_1.App.FetchStatus.LOADED)\n .set('freebetIds', immutable_1.OrderedSet(result));\n }\n case GET_FREE_BETS_FAIL: {\n return state.set('fetchStatus', core_1.App.FetchStatus.FAILED);\n }\n case constants_1.SET_FREEBET_ID_IN_PROCESS: {\n var id = action.payload.id;\n var nextFreebetIdsInProcess = state.freebetIdsInProcess.add(id);\n return state.set('freebetIdsInProcess', nextFreebetIdsInProcess);\n }\n case constants_1.GET_APPLICABLE_FREE_BET_REQUEST: {\n var betslipFreebetId = action.payload.args.betslipFreebetId;\n var betslipFreebets = state.betslipFreebets;\n var nextBetslipFreebet = betslipFreebets.get(betslipFreebetId);\n if (!nextBetslipFreebet) {\n var newBetslipFreebet = utils_1.createBetslipFreebets(betslipFreebetId);\n nextBetslipFreebet = __assign(__assign({}, newBetslipFreebet), { fetchStatus: core_1.App.FetchStatus.LOADING });\n }\n else {\n nextBetslipFreebet = __assign(__assign({}, nextBetslipFreebet), { fetchStatus: core_1.App.FetchStatus.LOADING });\n }\n var nextBetslipFreebets = betslipFreebets.set(nextBetslipFreebet.id, nextBetslipFreebet);\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n case constants_1.GET_APPLICABLE_FREE_BET_SUCCESS: {\n var _c = action.payload, betslipFreebetId = _c.betslipFreebetId, result = _c.result;\n var betslipFreebets = state.betslipFreebets;\n var nextBetslipFreebet = betslipFreebets.get(betslipFreebetId);\n if (!nextBetslipFreebet) {\n var newBetslipFreebet = utils_1.createBetslipFreebets(betslipFreebetId);\n nextBetslipFreebet = __assign(__assign({}, newBetslipFreebet), { freebetIds: immutable_1.OrderedSet(result), fetchStatus: core_1.App.FetchStatus.LOADED });\n }\n else {\n var activeFreebetId = nextBetslipFreebet.activeFreebetId;\n var nextActiveFreebetId = activeFreebetId && result.includes(activeFreebetId)\n ? activeFreebetId\n : null;\n nextBetslipFreebet = __assign(__assign({}, nextBetslipFreebet), { freebetIds: immutable_1.OrderedSet(result), fetchStatus: core_1.App.FetchStatus.LOADED, activeFreebetId: nextActiveFreebetId });\n }\n var nextBetslipFreebets = betslipFreebets.set(nextBetslipFreebet.id, nextBetslipFreebet);\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n case constants_1.GET_APPLICABLE_FREE_BET_FAIL: {\n var betslipFreebetId = action.payload.args.betslipFreebetId;\n var betslipFreebets = state.betslipFreebets;\n var betslipFreebet = betslipFreebets.get(betslipFreebetId);\n if (!betslipFreebet)\n return state;\n var nextBetslipFreebets = betslipFreebets.delete(betslipFreebet.id);\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n case constants_1.ADD_BETSLIP_FREEBET: {\n var id = action.payload.id;\n var newBetslipFreebet = utils_1.createBetslipFreebets(id);\n var nextBetslipFreebets = state.betslipFreebets.set(newBetslipFreebet.id, newBetslipFreebet);\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n case constants_1.DELETE_BETSLIP_FREEBET: {\n var id = action.payload.id;\n var nextBetslipFreebets = state.betslipFreebets.delete(id);\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n case constants_1.TOGGLE_ACTIVE_BETSLIP_FREEBET: {\n var _d = action.payload, betslipFreebetId_1 = _d.betslipFreebetId, freebetId_1 = _d.freebetId;\n var betslipFreebets = state.betslipFreebets;\n var nextBetslipFreebets = betslipFreebets.map(function (betslipFreebet) {\n var id = betslipFreebet.id;\n var activeFreebetId = betslipFreebet.activeFreebetId;\n var nextActiveFreebetId = activeFreebetId;\n if (activeFreebetId === freebetId_1) {\n nextActiveFreebetId = null;\n }\n else {\n if (id === betslipFreebetId_1) {\n nextActiveFreebetId = freebetId_1;\n }\n }\n return __assign(__assign({}, betslipFreebet), { activeFreebetId: nextActiveFreebetId });\n });\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n case constants_1.DESELECT_ACTIVE_BETSLIP_FREEBET: {\n var betslipFreebetId = action.payload.betslipFreebetId;\n var betslipFreebets = state.betslipFreebets;\n var betslipFreebet = betslipFreebets.get(betslipFreebetId);\n if (!betslipFreebet) {\n return state;\n }\n var nextBetslipFreebet = __assign(__assign({}, betslipFreebet), { activeFreebetId: null });\n var nextBetslipFreebets = betslipFreebets.set(nextBetslipFreebet.id, nextBetslipFreebet);\n return state.set('betslipFreebets', nextBetslipFreebets);\n }\n case UPDATE_BET: {\n var entities = action.payload.entities;\n var bets = entities.bets;\n if (!bets) {\n console.warn(\"Can't find bets in entities from payload\");\n return state;\n }\n var betIdFromEntities_1 = Object.keys(bets)[0];\n if (!betIdFromEntities_1) {\n console.warn(\"Bets is empty in entities from payload\");\n return state;\n }\n var betFromEntities = bets[betIdFromEntities_1];\n if (!betFromEntities)\n return state;\n var status_1 = betFromEntities.status;\n var convertedStatus = convertBetStatus(status_1);\n if (convertedStatus !== core_1.App.BetslipStatus.ERROR &&\n convertedStatus !== core_1.App.BetslipStatus.SUCCESS) {\n return state;\n }\n var betslipFreebets = state.betslipFreebets, freebetIdsInProcess = state.freebetIdsInProcess, freebetIds = state.freebetIds;\n var currBetslipFreebet = betslipFreebets.find(function (betslipFreebet) { return betslipFreebet.betId === betIdFromEntities_1; });\n if (!currBetslipFreebet || !currBetslipFreebet.activeFreebetId) {\n return state;\n }\n var currActiveFreebetId_1 = currBetslipFreebet.activeFreebetId;\n var nextBetslipFreebets = betslipFreebets;\n var nextFreebetIdsInProcess = freebetIdsInProcess.delete(currActiveFreebetId_1);\n var nextFreebetIds = freebetIds.delete(currActiveFreebetId_1);\n if (convertedStatus === core_1.App.BetslipStatus.SUCCESS) {\n var activeFreebetIdFromLocation = getFiltersFromLocation().freeBetId;\n if (currActiveFreebetId_1 === activeFreebetIdFromLocation) {\n extendSearchString('freeBetId', '');\n }\n nextBetslipFreebets = nextBetslipFreebets.map(function (betslipFreebet) {\n var freebetIdsBetslip = betslipFreebet.freebetIds, activeFreebetId = betslipFreebet.activeFreebetId;\n if (activeFreebetId === currActiveFreebetId_1) {\n return betslipFreebet;\n }\n return __assign(__assign({}, betslipFreebet), { freebetIds: freebetIdsBetslip.delete(currActiveFreebetId_1) });\n });\n }\n return state\n .set('freebetIdsInProcess', nextFreebetIdsInProcess)\n .set('betslipFreebets', nextBetslipFreebets)\n .set('freebetIds', nextFreebetIds);\n }\n default:\n return state;\n }\n}\nexports.default = reducer;\n//# sourceMappingURL=reducer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimerUnit = void 0;\nvar TimerUnit;\n(function (TimerUnit) {\n TimerUnit[TimerUnit[\"Day\"] = 86400] = \"Day\";\n TimerUnit[TimerUnit[\"Hour\"] = 3600] = \"Hour\";\n TimerUnit[TimerUnit[\"Minute\"] = 60] = \"Minute\";\n TimerUnit[TimerUnit[\"Second\"] = 1] = \"Second\";\n})(TimerUnit = exports.TimerUnit || (exports.TimerUnit = {}));\n//# sourceMappingURL=types.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SingleFreebetRow__container___209iF\",\"is-block\":\"SingleFreebetRow__is-block___3joJV\",\"is-mobile\":\"SingleFreebetRow__is-mobile___2lddO\",\"is-active\":\"SingleFreebetRow__is-active___OVmOq\",\"left-side\":\"SingleFreebetRow__left-side___3-Fzu\",\"right-side\":\"SingleFreebetRow__right-side___2nJ3p\",\"primary-text\":\"SingleFreebetRow__primary-text___3TGUM\",\"amount\":\"SingleFreebetRow__amount___1Pfue\",\"secondary-text\":\"SingleFreebetRow__secondary-text___34C5t\",\"error-text\":\"SingleFreebetRow__error-text___3-f5x\",\"icon\":\"SingleFreebetRow__icon___3DigS\"};","\"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.selectOddsByOddIds = exports.selectOddIdsFromProps = exports.selectFreebetsByBetslipFreebet = exports.selectFreebetIdsInProcess = exports.selectBetslipFreebetFromProps = exports.selectBetslipFreebets = exports.selectBetslipFreebetIdFromProps = exports.selectOddValueFromProps = exports.selectBetTypeFromProps = exports.selectNotExpiredFreebets = exports.selectFreeBetFromProps = exports.selectFreebetIdFromProps = exports.selectFetchStatus = exports.selectFreebets = exports.selectFreebetIds = exports.selectFreebet = void 0;\nvar reselect_1 = require(\"reselect\");\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar utils_1 = require(\"./utils\");\nvar _a = core_1.default.entities.selectors, selectAllFreeBets = _a.selectAllFreeBets, selectOdds = _a.selectOdds;\nvar selectFreebet = function (state) { return state.freebet; };\nexports.selectFreebet = selectFreebet;\nexports.selectFreebetIds = reselect_1.createSelector(exports.selectFreebet, function (freebet) { return freebet.freebetIds; });\nexports.selectFreebets = reselect_1.createSelector(selectAllFreeBets, exports.selectFreebetIds, function (freebets, freebetIds) {\n return freebets.filter(function (freebet) { return freebetIds.includes(freebet.id); });\n});\nexports.selectFetchStatus = reselect_1.createSelector(exports.selectFreebet, function (freebet) { return freebet.fetchStatus; });\nvar selectFreebetIdFromProps = function (_, props) { return props.freebetId; };\nexports.selectFreebetIdFromProps = selectFreebetIdFromProps;\nexports.selectFreeBetFromProps = reselect_1.createSelector(exports.selectFreebetIdFromProps, exports.selectFreebets, function (freebetId, freebets) {\n if (!freebetId)\n return;\n return freebets.get(freebetId);\n});\nexports.selectNotExpiredFreebets = reselect_1.createSelector(exports.selectFreebets, function (freebets) {\n return freebets.filter(function (freebet) { return utils_1.getSecondsFromDate(freebet.expiresAt) > 0; });\n});\nvar selectBetTypeFromProps = function (_, props) {\n return props.betType;\n};\nexports.selectBetTypeFromProps = selectBetTypeFromProps;\nvar selectOddValueFromProps = function (_, props) {\n return props.oddValue;\n};\nexports.selectOddValueFromProps = selectOddValueFromProps;\nvar selectBetslipFreebetIdFromProps = function (_, props) { return props.betslipFreebetId; };\nexports.selectBetslipFreebetIdFromProps = selectBetslipFreebetIdFromProps;\nexports.selectBetslipFreebets = reselect_1.createSelector(exports.selectFreebet, function (freebet) { return freebet.betslipFreebets; });\nexports.selectBetslipFreebetFromProps = reselect_1.createSelector(exports.selectBetslipFreebetIdFromProps, exports.selectBetslipFreebets, function (betslipFreebetId, betslipFreebets) {\n if (!betslipFreebetId)\n return;\n return betslipFreebets.get(betslipFreebetId);\n});\nexports.selectFreebetIdsInProcess = reselect_1.createSelector(exports.selectFreebet, function (freebetState) { return freebetState.freebetIdsInProcess; });\nexports.selectFreebetsByBetslipFreebet = reselect_1.createSelector(exports.selectBetslipFreebetFromProps, selectAllFreeBets, exports.selectFreebetIdsInProcess, function (betslipFreebet, freebets, freebetIdsInProcess) {\n if (!betslipFreebet)\n return [];\n var freebetIds = betslipFreebet.freebetIds, activeFreebetId = betslipFreebet.activeFreebetId;\n return freebetIds.reduce(function (acc, freebetId) {\n if (freebetIdsInProcess.includes(freebetId) &&\n activeFreebetId !== freebetId) {\n return acc;\n }\n var freebet = freebets.get(freebetId);\n if (freebet)\n acc.push(freebet);\n return acc;\n }, []);\n});\n// TODO: move to core.entities.selectors\nvar selectOddIdsFromProps = function (_, props) {\n return props.oddIds;\n};\nexports.selectOddIdsFromProps = selectOddIdsFromProps;\n// TODO: move to core.entities.selectors\nexports.selectOddsByOddIds = reselect_1.createSelector(exports.selectOddIdsFromProps, selectOdds, function (oddIds, odds) {\n return oddIds.map(function (oddId) { return odds.get(oddId); });\n});\n//# sourceMappingURL=selectors.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 immutable_1 = require(\"immutable\");\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar selectors_1 = require(\"./selectors\");\nvar actions_1 = require(\"./actions\");\nvar _a = core_1.default.entities, selectAllFreeBets = _a.selectors.selectAllFreeBets, GET_FREE_BETS_SUCCESS = _a.constants.GET_FREE_BETS_SUCCESS, moduleLocator = core_1.default.services.moduleLocator;\nvar betslip;\nmoduleLocator.get('betslip').subscribe(function (module) {\n betslip = module;\n});\nfunction middleware() {\n return function (store) {\n var waitFreebetPromise = null;\n return function (next) { return function (action) {\n if (betslip) {\n var CREATE_BETS_REQUEST = betslip.constants.CREATE_BETS_REQUEST, createBet = betslip.actions.createBet;\n if (action.type === CREATE_BETS_REQUEST) {\n var getState = store.getState, dispatch = store.dispatch;\n var state = getState();\n var betslipFreebets = selectors_1.selectBetslipFreebets(state);\n var _a = action.payload, args = _a.args, variables = _a.variables;\n var betslipOddIds = (args || {\n betslipOddIds: immutable_1.OrderedSet(),\n }).betslipOddIds;\n var betslipFreebetId = betslipOddIds.toSet();\n var betslipFreebet = betslipFreebets.get(betslipFreebetId);\n if (variables.type !== core_1.GQL.BetType.SYSTEM &&\n betslipFreebet &&\n betslipFreebet.activeFreebetId) {\n var activeFreebetId = betslipFreebet.activeFreebetId;\n var nextVariables = __assign(__assign({}, variables), { freebetId: activeFreebetId });\n var nextArgs = __assign(__assign({}, args), { freebetId: activeFreebetId });\n action.payload = __assign(__assign({}, action.payload), { variables: nextVariables, args: nextArgs });\n dispatch(actions_1.setFreebetIdInProcess({ id: activeFreebetId }));\n return next(action);\n }\n }\n }\n if (action.type === GET_FREE_BETS_SUCCESS && waitFreebetPromise) {\n waitFreebetPromise\n .then(function (data) {\n var freebets = selectAllFreeBets(store.getState());\n return next(handleGetMatchesActionWithFreebet({\n action: data.action,\n freebets: freebets,\n }));\n })\n .catch(function (err) { return console.error(err); });\n }\n if (!lodash_1.get(action, 'payload.variables.freeBetId')) {\n return next(action);\n }\n var fetchStatus = selectors_1.selectFetchStatus(store.getState());\n if (fetchStatus !== core_1.App.FetchStatus.LOADED) {\n waitFreebetPromise = Promise.resolve({ action: action });\n }\n else {\n var freebets = selectAllFreeBets(store.getState());\n return next(handleGetMatchesActionWithFreebet({\n action: action,\n freebets: freebets,\n }));\n }\n }; };\n };\n}\nexports.default = middleware;\nfunction handleGetMatchesActionWithFreebet(props) {\n var action = props.action, freebets = props.freebets;\n var meta = action.meta, error = action.error, type = action.type;\n var _a = action.payload, variables = _a.variables, args = _a.args, method = _a.method;\n var currentFreebet = freebets.get(variables.freeBetId);\n if (!currentFreebet)\n return action;\n var nextVariables = __assign({}, lodash_1.omit(variables, ['freeBetId']));\n var conditions = currentFreebet.conditions;\n conditions.forEach(function (condition) {\n var competitors = condition.competitors, tournamentIds = condition.tournamentIds, sportIds = condition.sportIds;\n if (competitors && competitors.length > 0) {\n nextVariables.competitorIds = competitors.map(\n // TODO: competitor.id is not composed with match id\n function (competitor) { return competitor.id; });\n }\n // if (condition.marketTypes && condition.marketTypes.length > 0) {\n // nextVariables.marketTypes = condition.marketTypes.map(\n // marketType => +marketType\n // );\n // }\n if (tournamentIds && tournamentIds.length > 0) {\n nextVariables.tournamentIds = tournamentIds;\n }\n if (sportIds && sportIds.length > 0) {\n nextVariables.sportIds = sportIds;\n }\n });\n return {\n error: error,\n meta: meta,\n type: type,\n payload: {\n args: args,\n method: method,\n variables: nextVariables,\n },\n };\n}\n//# sourceMappingURL=middleware.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckGameType = void 0;\nvar CheckGameType;\n(function (CheckGameType) {\n CheckGameType[\"Open\"] = \"open\";\n CheckGameType[\"Close\"] = \"close\";\n CheckGameType[\"Set\"] = \"set\";\n})(CheckGameType = exports.CheckGameType || (exports.CheckGameType = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GET_APPLICABLE_FREE_BET_FAIL = exports.GET_APPLICABLE_FREE_BET_SUCCESS = exports.GET_APPLICABLE_FREE_BET_REQUEST = exports.DESELECT_ACTIVE_BETSLIP_FREEBET = exports.TOGGLE_ACTIVE_BETSLIP_FREEBET = exports.DELETE_BETSLIP_FREEBET = exports.ADD_BETSLIP_FREEBET = exports.SET_FREEBET_ID_IN_PROCESS = exports.NAME = void 0;\nexports.NAME = 'freebet';\nexports.SET_FREEBET_ID_IN_PROCESS = exports.NAME + \"/SET_FREEBET_ID_IN_PROCESS\";\nexports.ADD_BETSLIP_FREEBET = exports.NAME + \"/ADD_BETSLIP_FREEBET\";\nexports.DELETE_BETSLIP_FREEBET = exports.NAME + \"/DELETE_BETSLIP_FREEBET\";\nexports.TOGGLE_ACTIVE_BETSLIP_FREEBET = exports.NAME + \"/TOGGLE_ACTIVE_BETSLIP_FREEBET\";\nexports.DESELECT_ACTIVE_BETSLIP_FREEBET = exports.NAME + \"/DESELECT_ACTIVE_BETSLIP_FREEBET\";\nexports.GET_APPLICABLE_FREE_BET_REQUEST = exports.NAME + \"/GET_APPLICABLE_FREE_BET:REQUEST\";\nexports.GET_APPLICABLE_FREE_BET_SUCCESS = exports.NAME + \"/GET_APPLICABLE_FREE_BET:SUCCESS\";\nexports.GET_APPLICABLE_FREE_BET_FAIL = exports.NAME + \"/GET_APPLICABLE_FREE_BET:FAIL\";\n//# sourceMappingURL=constants.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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createBetslipFreebets = exports.getSelectionByOdd = exports.getEmptyTimeByDividers = exports.convertSecondsToTimerFormat = exports.zeroFill = exports.getSecondsFromDate = exports.isTotalOddsCoefficientCondition = exports.isOddsCoefficientCondition = exports.isOddsCountCondition = exports.isMarketTypeCondition = exports.isCompetitorsCondition = exports.isTournamentsCondition = exports.isSportCondition = exports.isSportEventCondition = void 0;\nvar immutable_1 = require(\"immutable\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar splitOddPath = core_1.default.utils.splitOddPath;\nfunction isSportEventCondition(condition) {\n return condition.type === core_1.GQL.FreebetBetDetailsConditionType.SPORT_EVENT;\n}\nexports.isSportEventCondition = isSportEventCondition;\nfunction isSportCondition(condition) {\n return condition.type === core_1.GQL.FreebetBetDetailsConditionType.SPORT;\n}\nexports.isSportCondition = isSportCondition;\nfunction isTournamentsCondition(condition) {\n return condition.type === core_1.GQL.FreebetBetDetailsConditionType.TOURNAMENT;\n}\nexports.isTournamentsCondition = isTournamentsCondition;\nfunction isCompetitorsCondition(condition) {\n return condition.type === core_1.GQL.FreebetBetDetailsConditionType.COMPETITOR;\n}\nexports.isCompetitorsCondition = isCompetitorsCondition;\nfunction isMarketTypeCondition(condition) {\n return condition.type === core_1.GQL.FreebetBetDetailsConditionType.MARKET_TYPE;\n}\nexports.isMarketTypeCondition = isMarketTypeCondition;\nfunction isOddsCountCondition(condition) {\n return condition.type === core_1.GQL.FreebetBetDetailsConditionType.ODDS_COUNT;\n}\nexports.isOddsCountCondition = isOddsCountCondition;\nfunction isOddsCoefficientCondition(condition) {\n return (condition.type === core_1.GQL.FreebetBetDetailsConditionType.ODDS_COEFFICIENT);\n}\nexports.isOddsCoefficientCondition = isOddsCoefficientCondition;\nfunction isTotalOddsCoefficientCondition(condition) {\n return (condition.type ===\n core_1.GQL.FreebetBetDetailsConditionType.TOTAL_ODDS_COEFFICIENT);\n}\nexports.isTotalOddsCoefficientCondition = isTotalOddsCoefficientCondition;\nfunction getSecondsFromDate(date) {\n return Math.floor((+new Date(date) - Date.now()) / 1000);\n}\nexports.getSecondsFromDate = getSecondsFromDate;\nfunction zeroFill(n) {\n if (n < 10)\n return \"0\" + n;\n return \"\" + n;\n}\nexports.zeroFill = zeroFill;\nfunction convertSecondsToTimerFormat(seconds, dividers, dividerIndex) {\n if (dividerIndex === void 0) { dividerIndex = 0; }\n var currentDivider = dividers[dividerIndex];\n if (!currentDivider)\n return '';\n if (seconds <= 0)\n return getEmptyTimeByDividers(dividers);\n var wholePart = Math.floor(seconds / currentDivider);\n var fractionPart = seconds % currentDivider;\n if (dividers.length === dividerIndex + 1)\n return zeroFill(wholePart);\n return zeroFill(wholePart)\n .concat(':')\n .concat(convertSecondsToTimerFormat(fractionPart, dividers, dividerIndex + 1));\n}\nexports.convertSecondsToTimerFormat = convertSecondsToTimerFormat;\nfunction getEmptyTimeByDividers(dividers) {\n return '00:'.repeat(dividers.length).slice(0, -1);\n}\nexports.getEmptyTimeByDividers = getEmptyTimeByDividers;\nfunction getSelectionByOdd(odd) {\n var ids = splitOddPath(odd.id);\n if (!ids)\n return null;\n var marketId = ids.marketId, matchId = ids.matchId, oddId = ids.oddId;\n return {\n marketId: marketId,\n matchId: matchId,\n oddId: oddId,\n ratio: \"\" + odd.value,\n };\n}\nexports.getSelectionByOdd = getSelectionByOdd;\nvar createBetslipFreebets = function (id) {\n return {\n id: id,\n freebetIds: immutable_1.OrderedSet(),\n fetchStatus: core_1.App.FetchStatus.INITIAL,\n activeFreebetId: null,\n betId: null,\n };\n};\nexports.createBetslipFreebets = createBetslipFreebets;\n//# sourceMappingURL=utils.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.Filters = void 0;\nvar actions = __importStar(require(\"./actions\"));\nvar selectors = __importStar(require(\"./selectors\"));\nvar FiltersType = __importStar(require(\"./types\"));\nexports.Filters = FiltersType;\nvar constants = __importStar(require(\"./constants\"));\nvar utils = __importStar(require(\"./utils\"));\nvar reducer_1 = __importDefault(require(\"./reducer\"));\nexports.default = { actions: actions, selectors: selectors, reducer: reducer_1.default, constants: constants, utils: utils };\n//# sourceMappingURL=index.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"freebetPanel__container___2xRoJ\",\"bet-type-wrapper\":\"freebetPanel__bet-type-wrapper___3XUZ5\",\"bet-type\":\"freebetPanel__bet-type___2klk_\",\"conditions-wrapper\":\"freebetPanel__conditions-wrapper___3lg-5\",\"info-wrapper\":\"freebetPanel__info-wrapper___3UeRa\",\"title-wrapper\":\"freebetPanel__title-wrapper___2-hA8\",\"title\":\"freebetPanel__title___3uCRy\",\"amount\":\"freebetPanel__amount___2GK21\",\"divider\":\"freebetPanel__divider___3WbGO\"};","\"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 });\nexports.searchMatchesByText = exports.Actions = exports.initControlsByLocation = exports.resetCategorizerControls = exports.unselectGamesWithoutSelectedTournaments = exports.selectGame = exports.changeFixedTournamentIds = exports.toggleCategorizer = exports.closeCategorizer = exports.openCategorizer = exports.toggleFilters = exports.getCategorizer = exports.filterMatches = void 0;\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar lodash_1 = require(\"lodash\");\nvar selectors_1 = require(\"./selectors\");\nvar constants_1 = require(\"./constants\");\nvar _a = core_1.default.utils, getAppliedFilters = _a.getAppliedFilters, setSearchString = _a.setSearchString, getDefaultVariables = _a.getDefaultVariables, makeAction = _a.makeAction, getMatchStatusesByLocation = _a.getMatchStatusesByLocation;\nvar makeSearchMatchesFn = core_1.default.entities.actions.makeSearchMatchesFn;\nvar searchMatches = makeSearchMatchesFn(constants_1.SEARCH_MATCHES_REQUEST);\nvar searchMatchesByFilters = makeSearchMatchesFn(constants_1.FILTER_MATCHES_REQUEST);\nvar filterMatches = function (filters) {\n setSearchString(__assign(__assign({}, getAppliedFilters()), filters));\n return searchMatchesByFilters();\n};\nexports.filterMatches = filterMatches;\nvar getCategorizer = function (inputVariables) {\n var variables = inputVariables || __assign(__assign({}, getDefaultVariables()), { matchStatuses: getMatchStatusesByLocation() });\n return {\n type: constants_1.GET_CATEGORIZER_REQUEST,\n payload: {\n method: 'getCategorizer',\n variables: variables,\n },\n meta: { isApiCall: true },\n };\n};\nexports.getCategorizer = getCategorizer;\nvar toggleFilters = function () { return makeAction(constants_1.TOGGLE_FILTERS); };\nexports.toggleFilters = toggleFilters;\nvar openCategorizer = function () { return makeAction(constants_1.OPEN_CATEGORIZER); };\nexports.openCategorizer = openCategorizer;\nvar closeCategorizer = function () { return makeAction(constants_1.CLOSE_CATEGORIZER); };\nexports.closeCategorizer = closeCategorizer;\nvar toggleCategorizer = function (isOpen) { return function (dispatch, getState) {\n var currentOpenStatus = selectors_1.selectCategorizerOpenStatus(getState());\n var nextOpenStatus = lodash_1.isBoolean(isOpen) ? isOpen : !currentOpenStatus;\n if (nextOpenStatus === currentOpenStatus)\n return;\n dispatch(nextOpenStatus ? exports.openCategorizer() : exports.closeCategorizer());\n}; };\nexports.toggleCategorizer = toggleCategorizer;\nvar changeFixedTournamentIds = function (options) { return makeAction(constants_1.CHANGE_FIXED_TOURNAMENTS, options); };\nexports.changeFixedTournamentIds = changeFixedTournamentIds;\nvar selectGame = function (options) {\n return makeAction(constants_1.SELECT_GAME, options);\n};\nexports.selectGame = selectGame;\nvar unselectGamesWithoutSelectedTournaments = function () {\n return makeAction(constants_1.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS);\n};\nexports.unselectGamesWithoutSelectedTournaments = unselectGamesWithoutSelectedTournaments;\nvar resetCategorizerControls = function () {\n return makeAction(constants_1.RESET_CATEGORIZER_CONTROL_FIELDS);\n};\nexports.resetCategorizerControls = resetCategorizerControls;\nvar initControlsByLocation = function () {\n return makeAction(constants_1.INIT_CATEGORIZER_CONTROLS_BY_LOCATION);\n};\nexports.initControlsByLocation = initControlsByLocation;\nexports.Actions = {\n filterMatches: exports.filterMatches,\n getCategorizer: exports.getCategorizer,\n toggleFilters: exports.toggleFilters,\n changeFixedTournamentIds: exports.changeFixedTournamentIds,\n selectGame: exports.selectGame,\n resetCategorizerControls: exports.resetCategorizerControls,\n initControlsByLocation: exports.initControlsByLocation,\n unselectGamesWithoutSelectedTournaments: exports.unselectGamesWithoutSelectedTournaments,\n closeCategorizer: exports.closeCategorizer,\n openCategorizer: exports.openCategorizer,\n};\nvar searchMatchesByText = function (filters) {\n setSearchString(__assign(__assign({}, getAppliedFilters()), filters));\n return searchMatches();\n};\nexports.searchMatchesByText = searchMatchesByText;\n//# sourceMappingURL=actions.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\": \"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","import { Sports, WORLD_REGIONS_CODES } from '@gin-betting/constants';\nimport core, { App } from '@gin-betting/core';\nimport { keys } from 'lodash';\n\nimport { Product } from 'app-constants';\nimport { TimeInterval, TimeIntervalBoundary } from './types';\n\nconst {\n constants: { SportType },\n} = core;\n\nexport const FILTER_TIME_PERIODS: App.TimePeriodVariants[] = [\n App.TimePeriodVariants.ONE_HOUR,\n App.TimePeriodVariants.TODAY,\n App.TimePeriodVariants.YESTERDAY,\n App.TimePeriodVariants.THREE_DAYS,\n App.TimePeriodVariants.WEEK,\n];\n\nexport const INTERVAL_ALL = 0;\n\nexport const TIME_INTERVAL_ALL: TimeInterval = {\n interval: INTERVAL_ALL,\n displayedValue: INTERVAL_ALL,\n unit: 'minute',\n};\n\nexport const customFlagsMapping = {\n ENG: 'GB',\n EU: 'EU',\n};\n\nexport const ACTIVE_COUNTRY_KEY_DIVIDER = '~' as const;\n\nexport const DEFAULT_TIME_PERIOD = App.TimePeriodVariants.YESTERDAY;\n\nexport const TIME_FILTER_NEXT_TO_GO_BOUNDARY: TimeIntervalBoundary = {\n filteringKey: 'dateTo',\n interval: 1,\n unit: 'day',\n};\n\nexport const UNGROUPED_CATEGORIES_KEY = 'other' as const;\n\nconst STATIC_SPORTS_ALL = [\n Sports.ESPORTS_COUNTER_STRIKE,\n Sports.ESPORTS_DOTA_2,\n Sports.FOOTBALL,\n Sports.BASKETBALL,\n Sports.TENNIS,\n Sports.ICE_HOCKEY,\n Sports.TABLE_TENNIS,\n Sports.ESPORTS_LEAGUE_OF_LEGENDS,\n Sports.ESPORTS_BASKETBALL,\n Sports.ESPORTS_FIFA,\n Sports.ESPORTS_VALORANT,\n Sports.ESPORTS_FORTNITE,\n] as const;\n\nconst STATIC_SPORTS_ESPORT = [\n Sports.ESPORTS_COUNTER_STRIKE,\n Sports.ESPORTS_DOTA_2,\n Sports.ESPORTS_FIFA,\n Sports.ESPORTS_LEAGUE_OF_LEGENDS,\n Sports.ESPORTS_FORTNITE,\n] as const;\n\nconst STATIC_SPORTS_CLASSIC = [\n Sports.FOOTBALL,\n Sports.BASKETBALL,\n Sports.TENNIS,\n Sports.ICE_HOCKEY,\n Sports.VOLLEYBALL,\n Sports.TABLE_TENNIS,\n Sports.HANDBALL,\n] as const;\n\nexport const CATEGORIZER_STATIC_SPORTS_BY_TYPE: Record<\n App.SportType,\n readonly string[]\n> = {\n [SportType.Mix]: STATIC_SPORTS_ALL,\n [SportType.Esport]: STATIC_SPORTS_ESPORT,\n [SportType.Classic]: STATIC_SPORTS_CLASSIC,\n};\n\nexport const EXCLUDED_WORLD_REGIONS = ['GB-ENG', 'GB-SCT', 'GB-WLS', 'GB-NIR'];\n\nexport const WORLD_REGIONS = keys(WORLD_REGIONS_CODES).filter(\n code => !EXCLUDED_WORLD_REGIONS.includes(code)\n);\n\nexport const ALL = 'all' as const;\n\nexport const ORDER_CATEGORIZER_ITEMS_MAPPING = {\n [Sports.FOOTBALL]: {\n [Product.ru]: ['RU', 'GB-ENG', 'ES', 'DE', 'IT', 'FR'],\n [Product.bet]: ['GB-ENG', 'ES', 'DE', 'IT', 'FR', 'RU', 'UA'],\n [Product.com]: ['GB-ENG', 'ES', 'DE', 'IT', 'FR', 'RU', 'UA'],\n [Product.ua]: ['UA', 'GB-ENG', 'ES', 'DE', 'IT', 'FR', 'RU'],\n },\n [Sports.BASKETBALL]: {\n [Product.ru]: ['RU', 'US', 'ES', 'PH', 'CN', 'DE', 'IT', 'FR'],\n [Product.bet]: ['US', 'CN', 'RU', 'ES', 'DE', 'IT', 'FR', 'PH', 'UA'],\n [Product.com]: ['US', 'CN', 'RU', 'ES', 'DE', 'IT', 'FR', 'PH', 'UA'],\n [Product.ua]: ['UA', 'US', 'ES', 'PH', 'CN', 'DE', 'IT', 'FR', 'RU'],\n },\n [Sports.ICE_HOCKEY]: {\n [Product.ru]: ['RU', 'US', 'BY', 'KZ', 'FI', 'SE', 'CH', 'UA'],\n [Product.bet]: ['US', 'RU', 'FI', 'SE', 'CH', 'BY', 'KZ', 'UA'],\n [Product.com]: ['US', 'RU', 'FI', 'SE', 'CH', 'BY', 'KZ', 'UA'],\n [Product.ua]: ['US', 'UA', 'RU', 'BY', 'KZ', 'FI', 'SE', 'CH'],\n },\n [Sports.VOLLEYBALL]: {\n [Product.ru]: ['RU', 'BY', 'KZ', 'US', 'PL', 'ES', 'IT', 'TR'],\n [Product.bet]: ['US', 'ES', 'IT', 'TR', 'PL', 'RU'],\n [Product.com]: ['US', 'ES', 'IT', 'TR', 'PL', 'RU'],\n [Product.ua]: ['UA', 'US', 'RU', 'BY', 'KZ', 'PL', 'ES', 'IT', 'TR'],\n },\n [Sports.TABLE_TENNIS]: {\n [Product.ru]: ['RU', 'UA'],\n [Product.bet]: ['RU', 'UA'],\n [Product.com]: ['RU', 'UA'],\n [Product.ua]: ['UA', 'RU'],\n },\n [Sports.HANDBALL]: {\n [Product.ru]: ['RU', 'HU', 'DE', 'DK', 'ES', 'FR', 'NO', 'PL'],\n [Product.bet]: ['DE', 'ES', 'FR', 'DK', 'RU', 'NO', 'HU', 'PL', 'UA'],\n [Product.com]: ['DE', 'ES', 'FR', 'DK', 'RU', 'NO', 'HU', 'PL', 'UA'],\n [Product.ua]: ['UA', 'DE', 'ES', 'FR', 'DK', 'RU', 'NO', 'HU', 'PL'],\n },\n};\n\nexport const SPORTS_ORGANIZATION = ['tennis'];\n\nexport enum CategorizerRowType {\n Subgroup = 'subgroup',\n Tournament = 'tournament',\n}\n\nexport enum OverlayType {\n NONE = 'NONE',\n TOURNAMENT_LIST = 'TOURNAMENT_LIST',\n FEATURED_TOURNAMENTS_LIST = 'FEATURED_TOURNAMENTS_LIST',\n}\n","\"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.Actions = exports.deselectActiveBetslipFreebet = exports.toggleActiveBetslipFreebet = exports.deleteBetslipFreebet = exports.addBetslipFreebet = exports.getApplicableFreebets = exports.setFreebetIdInProcess = void 0;\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar constants_1 = require(\"./constants\");\nvar makeAction = core_1.default.utils.makeAction;\nfunction setFreebetIdInProcess(payload) {\n return makeAction(constants_1.SET_FREEBET_ID_IN_PROCESS, payload);\n}\nexports.setFreebetIdInProcess = setFreebetIdInProcess;\nfunction getApplicableFreebets(variables, args) {\n return {\n type: constants_1.GET_APPLICABLE_FREE_BET_REQUEST,\n payload: {\n method: 'getApplicableFreeBets',\n variables: variables,\n args: args,\n },\n meta: {\n isApiCall: true,\n },\n };\n}\nexports.getApplicableFreebets = getApplicableFreebets;\nfunction addBetslipFreebet(payload) {\n return makeAction(constants_1.ADD_BETSLIP_FREEBET, payload);\n}\nexports.addBetslipFreebet = addBetslipFreebet;\nfunction deleteBetslipFreebet(payload) {\n return makeAction(constants_1.DELETE_BETSLIP_FREEBET, payload);\n}\nexports.deleteBetslipFreebet = deleteBetslipFreebet;\nfunction toggleActiveBetslipFreebet(payload) {\n return makeAction(constants_1.TOGGLE_ACTIVE_BETSLIP_FREEBET, payload);\n}\nexports.toggleActiveBetslipFreebet = toggleActiveBetslipFreebet;\nfunction deselectActiveBetslipFreebet(payload) {\n return makeAction(constants_1.DESELECT_ACTIVE_BETSLIP_FREEBET, payload);\n}\nexports.deselectActiveBetslipFreebet = deselectActiveBetslipFreebet;\nexports.Actions = {\n setFreebetIdInProcess: setFreebetIdInProcess,\n getApplicableFreebets: getApplicableFreebets,\n addBetslipFreebet: addBetslipFreebet,\n deleteBetslipFreebet: deleteBetslipFreebet,\n toggleActiveBetslipFreebet: toggleActiveBetslipFreebet,\n deselectActiveBetslipFreebet: deselectActiveBetslipFreebet,\n};\n//# sourceMappingURL=actions.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.selectEntityByCategorizerItem = exports.selectValueFromCategorizerItemProps = exports.selectFilterOpenStatus = exports.selectCategorizerOpenStatus = exports.selectCategorizerData = exports.selectCategorizerFetchStatus = exports.selectFixedTournamentIds = exports.selectOpenedGameIds = exports.selectCategorizer = exports.selectFilters = void 0;\nvar reselect_1 = require(\"reselect\");\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar fieldMapping = {\n sport_id: 'sports',\n 'tournament.id': 'tournaments',\n 'tournament.master_id': 'tournaments',\n};\nvar selectEntities = core_1.default.entities.selectors.selectEntities;\nvar selectFilters = function (state) { return state.filters; };\nexports.selectFilters = selectFilters;\nexports.selectCategorizer = reselect_1.createSelector(exports.selectFilters, function (filters) { return filters.categorizer; });\nexports.selectOpenedGameIds = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.openedGameIds; });\nexports.selectFixedTournamentIds = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.fixedTournamentIds; });\nexports.selectCategorizerFetchStatus = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.fetchStatus; });\nexports.selectCategorizerData = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.items; });\nexports.selectCategorizerOpenStatus = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.isOpen; });\nexports.selectFilterOpenStatus = reselect_1.createSelector(exports.selectFilters, function (filters) { return filters.isOpen; });\nvar selectValueFromCategorizerItemProps = function (_, props) { return ({\n field: props.categorizerItem.field,\n value: props.categorizerItem.value,\n}); };\nexports.selectValueFromCategorizerItemProps = selectValueFromCategorizerItemProps;\nexports.selectEntityByCategorizerItem = reselect_1.createSelector(exports.selectValueFromCategorizerItemProps, selectEntities, function (_a, entities) {\n var field = _a.field, value = _a.value;\n return entities.get(fieldMapping[field]).get(value);\n});\n//# sourceMappingURL=selectors.js.map","var baseIteratee = require('./_baseIteratee'),\n baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"freeBetMobileTitle__container___PKyy9\",\"wrapper\":\"freeBetMobileTitle__wrapper___B1YH8\",\"title\":\"freeBetMobileTitle__title___1yGkI\",\"active\":\"freeBetMobileTitle__active___a2d3I\"};","\"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.Freebet = void 0;\nvar actions = __importStar(require(\"./actions\"));\nvar constants = __importStar(require(\"./constants\"));\nvar middleware_1 = __importDefault(require(\"./middleware\"));\nvar reducer_1 = __importDefault(require(\"./reducer\"));\nvar selectors = __importStar(require(\"./selectors\"));\nvar types = __importStar(require(\"./types\"));\nexports.Freebet = types;\nvar utils = __importStar(require(\"./utils\"));\nvar module = {\n reducer: reducer_1.default,\n middleware: middleware_1.default,\n selectors: selectors,\n actions: actions,\n constants: constants,\n utils: utils,\n};\nexports.default = module;\n//# sourceMappingURL=index.js.map","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEARCH_MATCHES_FAIL = exports.SEARCH_MATCHES_SUCCESS = exports.SEARCH_MATCHES_REQUEST = exports.RESET_CATEGORIZER_CONTROL_FIELDS = exports.CHANGE_FIXED_TOURNAMENTS = exports.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS = exports.SELECT_GAME = exports.INIT_CATEGORIZER_CONTROLS_BY_LOCATION = exports.CLOSE_CATEGORIZER = exports.OPEN_CATEGORIZER = exports.TOGGLE_FILTERS = exports.GET_CATEGORIZER_FAIL = exports.GET_CATEGORIZER_SUCCESS = exports.GET_CATEGORIZER_REQUEST = exports.FILTER_MATCHES_FAIL = exports.FILTER_MATCHES_SUCCESS = exports.FILTER_MATCHES_REQUEST = exports.NAME = void 0;\nexports.NAME = 'filters';\nexports.FILTER_MATCHES_REQUEST = exports.NAME + \"/FILTER_MATCHES:REQUEST\";\nexports.FILTER_MATCHES_SUCCESS = exports.NAME + \"/FILTER_MATCHES:SUCCESS\";\nexports.FILTER_MATCHES_FAIL = exports.NAME + \"/FILTER_MATCHES:FAIL\";\nexports.GET_CATEGORIZER_REQUEST = exports.NAME + \"/GET_CATEGORIZER:REQUEST\";\nexports.GET_CATEGORIZER_SUCCESS = exports.NAME + \"/GET_CATEGORIZER:SUCCESS\";\nexports.GET_CATEGORIZER_FAIL = exports.NAME + \"/GET_CATEGORIZER:FAIL\";\nexports.TOGGLE_FILTERS = exports.NAME + \"/TOGGLE_FILTERS\";\nexports.OPEN_CATEGORIZER = exports.NAME + \"/OPEN_CATEGORIZER\";\nexports.CLOSE_CATEGORIZER = exports.NAME + \"/CLOSE_CATEGORIZER\";\nexports.INIT_CATEGORIZER_CONTROLS_BY_LOCATION = exports.NAME + \"/INIT_CATEGORIZER_CONTROLS_BY_LOCATION\";\nexports.SELECT_GAME = exports.NAME + \"/SELECT_GAME\";\nexports.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS = exports.NAME + \"/UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS\";\nexports.CHANGE_FIXED_TOURNAMENTS = exports.NAME + \"/CHANGE_FIXED_TOURNAMENTS\";\nexports.RESET_CATEGORIZER_CONTROL_FIELDS = exports.NAME + \"/RESET_CATEGORIZER_CONTROL_FIELDS\";\nexports.SEARCH_MATCHES_REQUEST = 'SEARCH/SEARCH_MATCHES:REQUEST';\nexports.SEARCH_MATCHES_SUCCESS = 'SEARCH/SEARCH_MATCHES:SUCCESS';\nexports.SEARCH_MATCHES_FAIL = 'SEARCH/SEARCH_MATCHES:FAIL';\n//# sourceMappingURL=constants.js.map"],"sourceRoot":""}