{"version":3,"file":"chunk-hxrg61u2.js","sources":["packages/sports/libs/odds/feature/src/odds/odds-formatter.service.ts","packages/sports/common/betslip/modules/picks/actions.ts","packages/sports/common/betslip/modules/single-bet/actions.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\n\nimport { BetslipConfig } from '@frontend/sports/common/client-config-data-access';\nimport { roundAmericanOdds } from '@frontend/sports/odds/feature/converters';\nimport { OddsDisplayFormat } from '@frontend/sports/types/models/user-settings';\nimport { Decimal } from 'decimal.js';\nimport { min } from 'lodash-es';\n\nimport { Fraction } from './fraction';\nimport { CalculatedOdds, Odds } from './odds';\nimport { OddsConverter } from './odds-converter';\nimport { OddsOperations } from './operations';\n\nconst DECIMAL_PLACES = 2;\nconst SUMMARY_VALUE_THRESHOLD = 1.01;\ntype PartialOdds = Partial | Partial;\nexport interface OddsFormatInput {\n displayFormat: OddsDisplayFormat;\n cutZero?: boolean;\n isSummary?: boolean;\n fromFormat?: OddsDisplayFormat;\n maxDecimalPlaces?: number;\n useOddsMultiplicationFormat?: boolean;\n roundPriceValues?: boolean;\n}\n\nexport const defaultOddsFormatInput = Object.freeze({\n cutZero: false,\n isSummary: false,\n maxDecimalPlaces: 3,\n useOddsMultiplicationFormat: false,\n});\n\n/**\n * Returns a default string representation for invalid odds based on the display format.\n * @param displayFormat - The format type for displaying odds.\n * @returns A string representing invalid odds for the specified format.\n */\nexport const formatInvalidOdds = (displayFormat: OddsDisplayFormat): string => {\n switch (displayFormat) {\n case OddsDisplayFormat.US:\n return '---';\n case OddsDisplayFormat.UK:\n return '-/-';\n default:\n return '-.--';\n }\n};\n\n/**\n * Checks if the given odds object is valid for a specific display format.\n * @param format - The odds display format (EU, UK, or US).\n * @param odds - The odds object containing potential decimal, fractional, or moneyline values.\n * @returns - True if the odds object is valid for the specified format, false otherwise.\n */\n//TODO below type guard should be improved, we need to have a type for valid format odds (something like ValidOdds to replace Odds | CalculatedOdds), because technically below function just ensures that the type is valid, which is true since we only care about selected format availability\nexport const isFormatValid = (format: OddsDisplayFormat, odds: PartialOdds): odds is Odds | CalculatedOdds => {\n switch (format) {\n case OddsDisplayFormat.EU:\n return odds.decimals ? OddsOperations.isDecimalOddsValid(odds.decimals) : false;\n case OddsDisplayFormat.UK:\n return odds.fractional ? OddsOperations.isFractionalOddsValid(odds.fractional) : false;\n case OddsDisplayFormat.US:\n return odds.moneyline ? OddsOperations.isMoneyLineOddsValid(odds.moneyline) : false;\n }\n};\n\n/**\n * Converts a fractional odds representation to the UK odds format with denominator of 1 (e.g., \"3/1\").\n * @param fractional - The fractional odds data.\n * @param maxDecimalPlaces - Maximum number of decimal places to use in formatting.\n * @param isSummary - Indicates if the summary format should be used.\n * @returns - The UK-formatted fractional odds with denominator of 1 as a string.\n */\nexport const toSimplifiedUKOdds = (\n fractional: { numerator: number; denominator: number } | Fraction,\n maxDecimalPlaces: number,\n isSummary: boolean,\n) => {\n const priceValue = new Decimal(fractional.numerator).dividedBy(new Decimal(fractional.denominator));\n const decimalOdds = OddsConverter.fractionToDecimal(Fraction.create(fractional));\n\n const numerator = priceValue.toFixed(\n priceValue.decimalPlaces() > DECIMAL_PLACES && (!isSummary || decimalOdds.lessThan(SUMMARY_VALUE_THRESHOLD))\n ? maxDecimalPlaces\n : min([priceValue.decimalPlaces(), DECIMAL_PLACES]) || 0,\n Decimal.ROUND_DOWN,\n );\n\n return `${numerator}/1`;\n};\n\n/**\n * Formats odds based on the specified display format.\n * @param format - The odds display format (EU, UK, or US).\n * @param odds - The odds object containing decimal, fractional, or moneyline values.\n * @param input - Input parameters for formatting options.\n * @returns - Formatted odds string based on the specified format.\n */\nexport const formatOddsInternal = (format: OddsDisplayFormat, odds: PartialOdds, input: Required) => {\n switch (format) {\n case OddsDisplayFormat.EU:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return formatDecimals(odds.decimals!, input.cutZero, input.isSummary, input.maxDecimalPlaces);\n case OddsDisplayFormat.UK:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return formatFractional(odds.fractional!, input.isSummary, input.maxDecimalPlaces, input.useOddsMultiplicationFormat);\n case OddsDisplayFormat.US:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return formatMoneyLine(odds.moneyline!, input.roundPriceValues);\n }\n};\n\n/**\n * Formats moneyline odds as a string, with an option for rounding values.\n * @param moneyline - The moneyline odds value.\n * @param roundPriceValues - If true, round moneyline odds according to configuration.\n * @returns - Formatted moneyline odds string.\n */\nexport const formatMoneyLine = (moneyline: number | Decimal, roundPriceValues: boolean) => {\n if (typeof moneyline === 'number') {\n moneyline = new Decimal(moneyline);\n }\n\n const moneyLineString = roundAmericanOdds(moneyline, roundPriceValues);\n\n return moneyline.greaterThan(0) ? `+${moneyLineString}` : `${moneyLineString}`;\n};\n\n/**\n * Formats decimal odds to a string, applying specified formatting rules.\n * @param decimals - The decimal odds value.\n * @param cutZero - If true, removes trailing zeros from the decimal value.\n * @param isSummary - Indicates if the summary format should be used.\n * @param maxDecimalPlaces - Maximum number of decimal places to display.\n * @returns - Formatted decimal odds string.\n */\nexport const formatDecimals = (decimals: number | Decimal, cutZero: boolean, isSummary: boolean, maxDecimalPlaces: number) => {\n if (typeof decimals === 'number') {\n if (decimals > 1 && decimals < 1.01) {\n return decimals.toFixed(3);\n }\n decimals = new Decimal(decimals);\n }\n\n if (cutZero && decimals.decimalPlaces() > DECIMAL_PLACES) {\n const result = decimals.toFixed(decimals.decimalPlaces() > DECIMAL_PLACES ? maxDecimalPlaces : DECIMAL_PLACES, Decimal.ROUND_DOWN);\n\n return result.endsWith('0') ? decimals.toFixed(DECIMAL_PLACES, Decimal.ROUND_DOWN) : result;\n }\n\n return decimals.toFixed(\n decimals.decimalPlaces() > DECIMAL_PLACES && (!isSummary || decimals.lessThan(SUMMARY_VALUE_THRESHOLD)) ? maxDecimalPlaces : DECIMAL_PLACES,\n Decimal.ROUND_DOWN,\n );\n};\n\n/**\n * Formats fractional odds to a string based on summary or multiplication format options.\n * @param - The fractional odds data.\n * @param isSummary - Indicates if the summary format should be used.\n * @param maxDecimalPlaces - Maximum number of decimal places to use in formatting.\n * @param useOddsMultiplicationFormat - Indicates if multiplication format should be used.\n * @returns - Formatted fractional odds string.\n */\nexport const formatFractional = (\n fractional: { numerator: number; denominator: number } | Fraction,\n isSummary: boolean,\n maxDecimalPlaces: number,\n useOddsMultiplicationFormat: boolean,\n) => {\n if (isSummary || useOddsMultiplicationFormat) {\n return toSimplifiedUKOdds(fractional, maxDecimalPlaces, isSummary);\n }\n const decimalPlaces = min([new Decimal(fractional.numerator).decimalPlaces(), maxDecimalPlaces]) || 0;\n\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n return `${fractional.numerator.toFixed(decimalPlaces)}/${fractional.denominator}`;\n};\n\n/**\n * Attempts to format odds in the main format; if not valid, falls back to alternative formats.\n * @param mainFormat - The primary format to attempt.\n * @param fallbackFormats - List of fallback formats to use if the main format is invalid.\n * @param odds - The odds object containing potential decimal, fractional, or moneyline values.\n * @param input - Formatting options for the odds.\n * @returns - Formatted odds string based on main or fallback format.\n */\nexport const formatOddsWithFallback = (\n mainFormat: OddsDisplayFormat,\n fallbackFormats: OddsDisplayFormat[],\n odds: PartialOdds,\n input: Required,\n) => {\n if (isFormatValid(mainFormat, odds)) {\n return formatOddsInternal(mainFormat, odds, input);\n }\n for (const format of fallbackFormats) {\n if (isFormatValid(format, odds)) {\n const newOdds = OddsConverter.convertOdds(mainFormat, format, odds);\n\n return formatOddsInternal(mainFormat, newOdds, input);\n }\n }\n\n return formatInvalidOdds(mainFormat);\n};\n\n/**\n * Formats user odds by attempting to match the display format, with fallbacks for invalid formats.\n * @param odds - The odds object to format, which may contain decimals, fractional, or moneyline values.\n * @param input - Formatting options including display format and fallback settings.\n * @returns - Formatted odds as a string.\n */\nexport const toFormattedOdds = (odds: PartialOdds, input: Required) => {\n switch (input.displayFormat) {\n case OddsDisplayFormat.EU: {\n return formatOddsWithFallback(OddsDisplayFormat.EU, [OddsDisplayFormat.UK, OddsDisplayFormat.US], odds, input);\n }\n case OddsDisplayFormat.UK: {\n return formatOddsWithFallback(OddsDisplayFormat.UK, [OddsDisplayFormat.EU, OddsDisplayFormat.US], odds, input);\n }\n case OddsDisplayFormat.US: {\n return formatOddsWithFallback(OddsDisplayFormat.US, [OddsDisplayFormat.UK, OddsDisplayFormat.EU], odds, input);\n }\n }\n};\n\n/**\n * Formats odds using configuration input, converting formats if needed and handling invalid odds.\n * @param odds - The odds object, which may contain decimals, fractional, moneyline, or all.\n * @param _input - Input parameters for odds display formatting.\n * @returns - The fully formatted odds string based on provided configuration.\n */\nexport const formatOdds = (odds: CalculatedOdds | Odds, _input: OddsFormatInput) => {\n const input = { ...defaultOddsFormatInput, ..._input } as Required;\n\n if (!odds || !OddsOperations.isOddsValid(odds)) {\n return formatInvalidOdds(input.displayFormat);\n }\n\n if (input.fromFormat && input.displayFormat !== input.fromFormat) {\n const convertedOdds = OddsConverter.convertOdds(input.displayFormat, input.fromFormat, odds);\n\n return toFormattedOdds(convertedOdds, input);\n }\n\n return toFormattedOdds(odds, input);\n};\n\n@Injectable({ providedIn: 'root' })\nexport class OddsFormatterService {\n betslipConfig = inject(BetslipConfig);\n\n /**\n * Formats odds according to user input, including optional conversion to another format.\n * @param odds - The odds object to format.\n * @param input - Input parameters to customize the odds formatting process.\n * @returns - The formatted odds as a string, or an invalid representation if odds are not valid.\n */\n format(odds: Odds | CalculatedOdds | null | undefined, input: OddsFormatInput): string {\n if (!odds || !OddsOperations.isOddsValid(odds)) {\n return formatInvalidOdds(input.displayFormat);\n }\n\n return formatOdds(odds, {\n ...input,\n roundPriceValues: this.betslipConfig.roundPriceValues,\n });\n }\n}\n","import { TemplateRef } from '@angular/core';\n\nimport { Fixture } from '@cds/betting-offer';\nimport { PicksView } from '@cds/betting-offer/domain-specific';\nimport { EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { createAction, props } from '@ngrx/store';\nimport { BetBuilderMarket } from 'packages/sports/web/app/src/betbuilder/model/bet-builder.model';\nimport { OptionRequest } from 'packages/sports/web/app/src/navigation-core/pick-uri.model';\nimport { NumpadAction } from 'packages/sports/web/app/src/numpad/model';\n\nimport BetslipActions from '../../base/store/actions';\nimport { BetslipType } from '../../core/betslip-type';\nimport { BABAdditionalInfo, BetBuilderV1EventData, PickAddPayload } from '../../core/external-betslip-actions';\nimport { BetslipGroupInformation } from '../../core/groups/betslip-group-information';\nimport { BetslipBetBuilderPick } from '../../core/picks/betslip-bet-builder-pick';\nimport { BaseBetslipGroupPick } from '../../core/picks/betslip-group-pick';\nimport { BetslipPick } from '../../core/picks/betslip-pick';\nimport { BetslipV1Pick } from '../../core/picks/betslip-v1-pick';\nimport { BetslipV2Pick } from '../../core/picks/betslip-v2-pick';\nimport { BetBuilderPickId, PickId, V1PickId, V2OptionMarketPickId, V2OptionMarketXCastPickId, V2ParticipantPickId } from '../../core/picks/pick-id';\nimport { IPickTracking, PickUpdateType } from '../../core/picks/pick-models';\nimport { ReplacePickPayload } from './replace-pick-payload';\n\nexport default class BetslipPickActions {\n static readonly ACTION_SCHEMA = `${BetslipActions.ACTION_SCHEMA}/pick`;\n\n private static readonly REQUEST_ADD_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_ADD_PICK`;\n private static readonly REQUEST_ADD_GROUP_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_ADD_GROUP_PICK`;\n private static readonly REQUEST_ADD_BET_BUILDER_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_ADD_BET_BUILDER_PICK`;\n private static readonly REQUEST_ADD_ENTAIN_UI_BET_BUILDER_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_ADD_ENTAIN_UI_BET_BUILDER_PICK`;\n private static readonly ADD_ENTAIN_UI_BET_BUILDER_PICK = `${BetslipPickActions.ACTION_SCHEMA}/ADD_ENTAIN_UI_BET_BUILDER_PICK`;\n private static readonly REQUEST_REMOVE_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_REMOVE_PICK`;\n private static readonly REQUEST_REMOVE_BET_BUILDER_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_REMOVE_BET_BUILDER_PICK`;\n private static readonly REQUEST_REPLACE_PRE_CREATED_BET_BUILDER_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_REPLACE_PRE_CREATED_BET_BUILDER_PICK`;\n private static readonly CHECK_PRECREATED_BAB_CONVERSION = `${BetslipPickActions.ACTION_SCHEMA}/CHECK_PRECREATED_BAB_CONVERSION`;\n\n private static readonly ADD_PICK = `${BetslipPickActions.ACTION_SCHEMA}/ADD_PICK`;\n private static readonly REMOVE_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_PICK`;\n private static readonly REMOVE_MULTIPLE_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_MULTIPLE_PICKS`;\n private static readonly REMOVED_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REMOVED_PICK`;\n private static readonly REMOVED_MULTIPLE_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REMOVED_MULTIPLE_PICK`;\n private static readonly REQUEST_REMOVE_MULTIPLE_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_REMOVE_MULTIPLE_PICKS`;\n private static readonly REQUEST_REMOVE_ALL_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_REMOVE_ALL_PICKS`;\n private static readonly REQUEST_REMOVE_PICKS_FROM_GROUP = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_REMOVE_PICKS_FROM_GROUP`;\n private static readonly REQUEST_REMOVE_PLACED_PICKS_FROM_GROUP = `${BetslipPickActions.ACTION_SCHEMA}/REQUEST_REMOVE_PLACED_PICKS_FROM_GROUP`;\n private static readonly TOGGLE_PICK = `${BetslipPickActions.ACTION_SCHEMA}/TOGGLE_PICK`;\n private static readonly TOGGLE_PICK_FOR_TYPE = `${BetslipPickActions.ACTION_SCHEMA}/TOGGLE_PICK_FOR_TYPE`;\n private static readonly TOGGLE_ALL_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/TOGGLE_ALL_PICKS`;\n private static readonly SELECT_PICK = `${BetslipPickActions.ACTION_SCHEMA}/SELECT_PICK`;\n private static readonly DESELECT_PICK = `${BetslipPickActions.ACTION_SCHEMA}/DESELECT_PICK`;\n private static readonly CHANGE_SELECTION = `${BetslipPickActions.ACTION_SCHEMA}/CHANGE_SELECTION`;\n private static readonly SET_FIXED_PRICE = `${BetslipPickActions.ACTION_SCHEMA}/SET_FIXED_PRICE`;\n private static readonly SET_STARTING_PRICE = `${BetslipPickActions.ACTION_SCHEMA}/SET_STARTING_PRICE`;\n private static readonly TOGGLE_WIN_PICK = `${BetslipPickActions.ACTION_SCHEMA}/TOGGLE_WIN_PICK`;\n private static readonly ACCEPT_CURRENT_PRICE = `${BetslipPickActions.ACTION_SCHEMA}/ACCEPT_CURRENT_PRICE`;\n private static readonly ADD_PICK_HIGHLIGHT = `${BetslipPickActions.ACTION_SCHEMA}/ADD_PICK_HIGHLIGHT`;\n private static readonly ADD_PICKS_HIGHLIGHT = `${BetslipPickActions.ACTION_SCHEMA}/ADD_PICKS_HIGHLIGHT`;\n private static readonly REMOVE_PICK_HIGHLIGHT = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_PICK_HIGHLIGHT`;\n private static readonly REMOVE_PICKS_HIGHLIGHT = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_PICKS_HIGHLIGHT`;\n private static readonly SCROLL_TO_PICK = `${BetslipPickActions.ACTION_SCHEMA}/SCROLL_TO_PICK`;\n private static readonly EXPAND_BET_BUILDER_LEGS = `${BetslipPickActions.ACTION_SCHEMA}/EXPAND_BET_BUILDER_LEGS`;\n private static readonly COLLAPSE_BET_BUILDER_LEGS = `${BetslipPickActions.ACTION_SCHEMA}/COLLAPSE_BET_BUILDER_LEGS`;\n\n private static readonly UPDATE_V1_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/UPDATE_V1_PICKS`;\n private static readonly UPDATE_V2_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/UPDATE_V2_PICKS`;\n private static readonly UPDATE_GROUP_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/UPDATE_GROUP_PICKS`;\n private static readonly UPDATE_GROUP_PICK_LEGS = `${BetslipPickActions.ACTION_SCHEMA}/UPDATE_GROUP_PICK_LEGS`;\n\n private static readonly REPLACE_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REPLACE_PICK`;\n\n private static readonly SET_SOURCE_OF_BET = `${BetslipPickActions.ACTION_SCHEMA}/SET_SOURCE_OF_BET`;\n private static readonly SET_SOURCE_OF_BET_SUFFIX = `${BetslipPickActions.ACTION_SCHEMA}/SET_SOURCE_OF_BET_SUFFIX`;\n private static readonly SET_MULTIPLE_SOURCE_OF_BET_SUFFIX = `${BetslipPickActions.ACTION_SCHEMA}/SET_MULTIPLE_SOURCE_OF_BET_SUFFIX`;\n private static readonly SET_NUMPAD_ACTION = `${BetslipPickActions.ACTION_SCHEMA}/SET_NUMPAD_ACTION`;\n private static readonly ADD_AFFILIATE_REQUEST = `${BetslipPickActions.ACTION_SCHEMA}/PROCESS_AFFILIATE_REQUEST`;\n private static readonly SHARE_AFFILIATE_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/SHARE_AFFILIATE_PICKS`;\n static readonly PICK_SELECTION_CHANGED = `${BetslipPickActions.ACTION_SCHEMA}/PICK_SELECTION_CHANGED`;\n private static readonly ADD_WEB_APP_PICK = `${BetslipPickActions.ACTION_SCHEMA}/ADD_WEB_APP_PICK`;\n private static readonly REMOVE_WEB_APP_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_WEB_APP_PICK`;\n\n private static readonly PICKS_REFRESHED = `${BetslipPickActions.ACTION_SCHEMA}/PICKS_REFRESHED`;\n private static readonly REFRESH_GROUP_PICK = `${BetslipPickActions.ACTION_SCHEMA}/REFRESH_GROUP_PICK`;\n\n private static readonly CHANGE_LOCK_STATE = `${BetslipPickActions.ACTION_SCHEMA}/CHANGE_LOCK_STATE`;\n\n private static readonly ADD_LAST_PICK_ERROR = `${BetslipPickActions.ACTION_SCHEMA}/ADD_LAST_PICK_ERROR`;\n private static readonly REMOVE_LAST_PICK_ERROR = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_LAST_PICK_ERROR`;\n private static readonly LAST_PICK_ERROR_REMOVE_PICK_ID = `${BetslipPickActions.ACTION_SCHEMA}/LAST_PICK_ERROR_REMOVE_PICK_ID`;\n private static readonly REMOVE_LAST_PICK_FROM_PICK_LIST = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_LAST_PICK_FROM_PICK_LIST`;\n\n private static readonly REMOVE_TYPE_PICKS = `${BetslipPickActions.ACTION_SCHEMA}/REMOVE_TYPE_PICKS`;\n\n /**\n * Action called with request to add v1 or option market pick to betslip\n */\n static requestAddPick = createAction(\n BetslipPickActions.REQUEST_ADD_PICK,\n props<{\n pickId: V1PickId | V2OptionMarketPickId | V2ParticipantPickId | V2OptionMarketXCastPickId;\n tracking: IPickTracking;\n sportId?: number;\n priceId?: number;\n isPriceBoosted?: boolean;\n groupInfo?: BetslipGroupInformation;\n parentLinkedEventId?: string;\n isBetBuilderEnabled: boolean;\n }>(),\n );\n\n /**\n * Action called with request to add several v1 or option market picks in a SGP group to betslip\n */\n static requestAddGroupPick = createAction(\n BetslipPickActions.REQUEST_ADD_GROUP_PICK,\n props<{ payload: PickAddPayload[]; headerTemplate?: TemplateRef }>(),\n );\n\n /**\n * Action called with request to add bet builder pick to betslip, when v1\n */\n static requestAddBetBuilderPick = createAction(\n BetslipPickActions.REQUEST_ADD_BET_BUILDER_PICK,\n props<{ pickId: BetBuilderPickId; tracking: IPickTracking; eventData: BetBuilderV1EventData | null; additionalInfo?: BABAdditionalInfo }>(),\n );\n\n /**\n * Action called with request to add entain ui bet builder pick\n */\n static requestAddEntainUiBetBuilderPick = createAction(\n BetslipPickActions.REQUEST_ADD_ENTAIN_UI_BET_BUILDER_PICK,\n props<{\n pickId: BetBuilderPickId;\n tracking: IPickTracking;\n eventData: BetBuilderV1EventData;\n eventModel: EventModel;\n market: BetBuilderMarket;\n longId: string[];\n headerTemplate?: TemplateRef;\n isPrecreatedBAB?: boolean;\n }>(),\n );\n\n /**\n * Action called with request to remove entain ui bet builder pick\n */\n static requestRemoveEntainUiBetBuilderPick = createAction(\n BetslipPickActions.REQUEST_REMOVE_BET_BUILDER_PICK,\n props<{\n pickId: BetBuilderPickId;\n longId: string;\n eventId: string;\n eventName?: string;\n }>(),\n );\n\n /**\n * Action called with request to check if there is already a customized BAB for the event on the betslip\n */\n static checkPrecreatedBABConversion = createAction(\n BetslipPickActions.CHECK_PRECREATED_BAB_CONVERSION,\n props<{\n pickId: BetBuilderPickId;\n headerTemplate: TemplateRef;\n eventModel?: EventModel;\n market?: BetBuilderMarket;\n eventData?: BetBuilderV1EventData;\n longId?: string[];\n isBetslip?: boolean;\n }>(),\n );\n\n /**\n * Action called with request to replace Pre-created BAB with customized BAB\n */\n static requestReplacePreCreatedBetBuilderPick = createAction(\n BetslipPickActions.REQUEST_REPLACE_PRE_CREATED_BET_BUILDER_PICK,\n props<{\n pickId: BetBuilderPickId;\n headerTemplate: TemplateRef;\n tracking: IPickTracking;\n }>(),\n );\n\n /**\n * Add new pick to the slip.\n */\n static addPick = createAction(BetslipPickActions.ADD_PICK, props<{ pick: BetslipPick }>());\n\n /**\n * Request Remove pick from the slip\n */\n static requestRemovePick = createAction(BetslipPickActions.REQUEST_REMOVE_PICK, props<{ pickId: PickId; eventName?: string }>());\n\n /**\n * Remove pick from the slip\n */\n static removePick = createAction(\n BetslipPickActions.REMOVE_PICK,\n props<{\n pickId: PickId;\n eventName?: string;\n skipPickTypeStateCleanup?: boolean;\n skipPickSubscriptionCleanup?: boolean;\n groupInfo?: BetslipGroupInformation;\n //Relevant in case of groups, we pass it to take care of relevant state changes, for example subscriptions and bet types pick state\n childrenPickIds?: PickId[];\n }>(),\n );\n\n /**\n * Removed pick from the slip\n */\n static removedPick = createAction(BetslipPickActions.REMOVED_PICK, props<{ pickId: PickId }>());\n\n /**\n * Request remove multiple picks from the slip\n */\n static requestRemoveMultiplePicks = createAction(BetslipPickActions.REQUEST_REMOVE_MULTIPLE_PICKS, props<{ pickIds: PickId[] }>());\n\n /**\n * Request remove all picks from the slip\n */\n static requestRemoveAllPicks = createAction(BetslipPickActions.REQUEST_REMOVE_ALL_PICKS);\n\n /**\n * Remove multiple picks from the slip\n */\n static removeMultiplePicks = createAction(BetslipPickActions.REMOVE_MULTIPLE_PICKS, props<{ pickIds: PickId[] }>());\n\n /**\n * Removed multiple picks from the slip\n */\n static removedMultiplePicks = createAction(BetslipPickActions.REMOVED_MULTIPLE_PICK, props<{ pickIds: PickId[] }>());\n\n /**\n * Action called with request to remove several picks from a SGP group to betslip\n */\n static requestRemovePicksFromGroup = createAction(BetslipPickActions.REQUEST_REMOVE_PICKS_FROM_GROUP, props<{ pickIds: PickId[] }>());\n\n /**\n * Action called with request to remove several picks after bet placement\n */\n static requestRemovePlacedPicksFromGroup = createAction(\n BetslipPickActions.REQUEST_REMOVE_PLACED_PICKS_FROM_GROUP,\n props<{ pickIds: PickId[] }>(),\n );\n\n /**\n * Toggle pick selection\n */\n static togglePick = createAction(BetslipPickActions.TOGGLE_PICK, props<{ pickId: PickId }>());\n\n /**\n * Toggle pick selection\n */\n static togglePickForType = createAction(\n BetslipPickActions.TOGGLE_PICK_FOR_TYPE,\n props<{ pickId: PickId; betslipType: BetslipType; newSelectionState: boolean }>(),\n );\n\n /**\n * Toggle all picks\n */\n static toggleAllPicks = createAction(BetslipPickActions.TOGGLE_ALL_PICKS, props<{ select: boolean }>());\n\n /**\n * Select pick, Use the pick in bet placement\n */\n static selectPick = createAction(BetslipPickActions.SELECT_PICK, props<{ pickId: PickId }>());\n\n /**\n * De select pick. The pick will continue be in the slip, but will not be used in the placement\n */\n static deselectPick = createAction(BetslipPickActions.DESELECT_PICK, props<{ pickId: PickId }>());\n\n /**\n * Change selection for list of picks, if selection is true select picks, if selection is false deselect them\n */\n static changeSelection = createAction(BetslipPickActions.CHANGE_SELECTION, props<{ pickIds: PickId[]; selection: boolean }>());\n\n static changeLockState = createAction(BetslipPickActions.CHANGE_LOCK_STATE, props<{ pickIds: PickId[]; isLocked: boolean }>());\n\n /**\n * Use Fixed price for the pick\n */\n static setFixedPrice = createAction(BetslipPickActions.SET_FIXED_PRICE, props<{ pickId: PickId }>());\n\n /**\n * Use starting price for the pick\n */\n static setStartingPrice = createAction(BetslipPickActions.SET_STARTING_PRICE, props<{ pickId: PickId }>());\n\n /**\n * Toggle win or sp pick\n */\n static toggleWinPick = createAction(\n BetslipPickActions.TOGGLE_WIN_PICK,\n props<{ pickId: V1PickId | V2OptionMarketPickId | V2ParticipantPickId | V2OptionMarketXCastPickId }>(),\n );\n\n /**\n * Accept current price\n */\n static acceptCurrentPrice = createAction(BetslipPickActions.ACCEPT_CURRENT_PRICE, props<{ pickIds: PickId[]; isManuallyAccepted: boolean }>());\n\n /**\n * Updates the pick UI state by setting the legs state to expanded\n */\n static expandBetBuilderLegs = createAction(BetslipPickActions.EXPAND_BET_BUILDER_LEGS, props<{ pickId: PickId }>());\n\n /**\n * Updates the pick UI state by setting the legs state to collapsed\n */\n static collapseBetBuilderLegs = createAction(BetslipPickActions.COLLAPSE_BET_BUILDER_LEGS, props<{ pickId: PickId }>());\n\n /**\n * Highlight pick\n */\n static addPickHighlight = createAction(BetslipPickActions.ADD_PICK_HIGHLIGHT, props<{ pickId: PickId; autoRestore: boolean }>());\n\n /**\n * Highlight multiple picks at same time\n */\n static addPicksHighlight = createAction(\n BetslipPickActions.ADD_PICKS_HIGHLIGHT,\n props<{ payload: { pickIds: PickId[]; autoRestore: boolean } }>(),\n );\n\n /**\n * Remove highlighting of the pick\n */\n static removePickHighlight = createAction(BetslipPickActions.REMOVE_PICK_HIGHLIGHT, props<{ pickId: PickId }>());\n\n /**\n * Remove highlighting of multiple picks\n */\n static removePicksHighlight = createAction(BetslipPickActions.REMOVE_PICKS_HIGHLIGHT, props<{ pickIds: PickId[] }>());\n\n /**\n * Scroll to pick\n */\n static scrollToPick = createAction(BetslipPickActions.SCROLL_TO_PICK, props<{ pickId: PickId }>());\n\n /**\n * Update V1 Picks\n */\n static updateV1Picks = createAction(\n BetslipPickActions.UPDATE_V1_PICKS,\n props<{ pickUpdates: { pick: BetslipV1Pick; updateType: PickUpdateType }[]; byPassErrorClear?: boolean }>(),\n );\n\n /**\n * Update V2 Picks\n */\n static updateV2Picks = createAction(\n BetslipPickActions.UPDATE_V2_PICKS,\n props<{ pickUpdates: { pick: BetslipV2Pick; updateType: PickUpdateType }[]; byPassErrorClear?: boolean }>(),\n );\n\n /**\n * Update Group Picks\n */\n static updateGroupPicks = createAction(\n BetslipPickActions.UPDATE_GROUP_PICKS,\n props<{ pickUpdates: { pick: BaseBetslipGroupPick; updateType: PickUpdateType }[]; byPassErrorClear?: boolean }>(),\n );\n\n static updateGroupPickLegs = createAction(\n BetslipPickActions.UPDATE_GROUP_PICK_LEGS,\n props<{ pickUpdates: { pick: BetslipPick; updateType: PickUpdateType }[] }>(),\n );\n\n /**\n * Replaces the pick in the state. Payload contains the Id of the pick to be replaced and the new pick.\n * TODO (optional) atBetPlacement prop added to fix INC1471873, but overall we should aim to have quick bet ui state set to QuickBetUiState.Place (in the future)\n */\n static replacePick = createAction(BetslipPickActions.REPLACE_PICK, props());\n\n /**\n * Set SourceOfBet\n */\n static setSourceOfBet = createAction(BetslipPickActions.SET_SOURCE_OF_BET, props<{ pickId: PickId; source: string; affiliate?: boolean }>());\n\n /**\n * Set setSourceOfBetSuffix\n */\n static setSourceOfBetSuffix = createAction(BetslipPickActions.SET_SOURCE_OF_BET_SUFFIX, props<{ pickId: PickId; suffix: string }>());\n\n static setMultipleSourceOfBetSuffix = createAction(\n BetslipPickActions.SET_MULTIPLE_SOURCE_OF_BET_SUFFIX,\n props<{ pickIds: PickId[]; suffix: string }>(),\n );\n\n /**\n * Set Tracking Numpad Action\n */\n static setTrackingNumpadAction = createAction(BetslipPickActions.SET_NUMPAD_ACTION, props<{ pickIds: PickId[]; action: NumpadAction }>());\n\n /**\n * Add Affiliate Picks\n */\n static addAffiliatePicks = createAction(BetslipPickActions.ADD_AFFILIATE_REQUEST, props<{ request: OptionRequest; picksView: PicksView }>());\n\n /**\n * Add Affiliate Picks\n */\n static shareAffiliatePicks = createAction(BetslipPickActions.SHARE_AFFILIATE_PICKS);\n\n /**\n * Action when selection is changed b/w WIN and SP markets in betslip area\n */\n static pickSelectionChanged = createAction(BetslipPickActions.PICK_SELECTION_CHANGED, props());\n\n /*\n * Add Pick via web bridge service (e.g. used for AB testing)\n */\n static addWebAppPick = createAction(BetslipPickActions.ADD_WEB_APP_PICK, props<{ fixture: Fixture; option: number }>());\n\n static picksRefreshed = createAction(BetslipPickActions.PICKS_REFRESHED);\n static removeWebAppPick = createAction(BetslipPickActions.REMOVE_WEB_APP_PICK, props<{ fixture: Fixture; option: number }>());\n\n static addLastPickError = createAction(BetslipPickActions.ADD_LAST_PICK_ERROR, props<{ pickId: PickId }>());\n static removeLastPickError = createAction(BetslipPickActions.REMOVE_LAST_PICK_ERROR);\n static lastPickErrorRemovePickId = createAction(BetslipPickActions.LAST_PICK_ERROR_REMOVE_PICK_ID);\n static removeLastPickFromPickList = createAction(BetslipPickActions.REMOVE_LAST_PICK_FROM_PICK_LIST);\n static refreshGroupPick = createAction(BetslipPickActions.REFRESH_GROUP_PICK, props<{ pick: BaseBetslipGroupPick }>());\n static addEntainUiBetBuilderPick = createAction(\n BetslipPickActions.ADD_ENTAIN_UI_BET_BUILDER_PICK,\n props<{ pick: BetslipBetBuilderPick; isPrecreatedBAB: boolean; headerTemplate?: TemplateRef }>(),\n );\n\n static removeTypePicks = createAction(BetslipPickActions.REMOVE_TYPE_PICKS, props<{ pickIds: PickId[] }>());\n}\n","import { createAction, props } from '@ngrx/store';\n\nimport { PickId } from '../../core/picks/pick-id';\nimport { BetslipTypesActions } from '../types/actions';\nimport { ISingleBetPickState } from './state';\n\nexport enum stakeSource {\n QuickBet,\n Betslip,\n}\nexport default class BetslipSingleBetActions {\n static readonly ACTION_SCHEMA = `${BetslipTypesActions.ACTION_SCHEMA}/single-bet`;\n\n private static readonly ADD_PICK = `${BetslipSingleBetActions.ACTION_SCHEMA}/ADD_PICK`;\n private static readonly REQUEST_REMOVE_PICK = `${BetslipSingleBetActions.ACTION_SCHEMA}/REQUEST_REMOVE_PICK`;\n private static readonly REMOVE_PICK = `${BetslipSingleBetActions.ACTION_SCHEMA}/REMOVE_PICK`;\n private static readonly UPDATE_PICK_ORDER = `${BetslipSingleBetActions.ACTION_SCHEMA}/UPDATE_PICK_ORDER`;\n private static readonly SET_SINGLE_BET_STAKE = `${BetslipSingleBetActions.ACTION_SCHEMA}/SET_SINGLE_BET_STAKE`;\n private static readonly SET_SINGLE_BET_PICK_STAKE = `${BetslipSingleBetActions.ACTION_SCHEMA}/SET_SINGLE_BET_PICK_STAKE`;\n private static readonly SET_SINGLE_BET_PICK_REWARD_TOKEN = `${BetslipSingleBetActions.ACTION_SCHEMA}/SET_SINGLE_BET_PICK_REWARD_TOKEN`;\n private static readonly REMOVE_ALL_SINGLE_BET_PICK_REWARD_TOKENS = `${BetslipSingleBetActions.ACTION_SCHEMA}/REMOVE_ALL_SINGLE_BET_PICK_REWARD_TOKENS`;\n private static readonly TOGGLE_SINGLE_BET_PICK_EACH_WAY = `${BetslipSingleBetActions.ACTION_SCHEMA}/TOGGLE_SINGLE_BET_PICK_EACH_WAY`;\n private static readonly SET_SINGLE_BET_PICK_EACH_WAY = `${BetslipSingleBetActions.ACTION_SCHEMA}/SET_SINGLE_BET_PICK_EACH_WAY`;\n private static readonly SET_SINGLE_BET_PICKS_EACH_WAY = `${BetslipSingleBetActions.ACTION_SCHEMA}/SET_SINGLE_BET_PICKS_EACH_WAY`;\n private static readonly TOGGLE_SINGLE_BET_PICK = `${BetslipSingleBetActions.ACTION_SCHEMA}/TOGGLE_SINGLE_BET_PICK`;\n private static readonly ADD_PICK_WITH_NEW_PICKID = `${BetslipSingleBetActions.ACTION_SCHEMA}/ADD_PICK_WITH_NEW_PICKID`;\n\n static setSingleBetStake = createAction(\n BetslipSingleBetActions.SET_SINGLE_BET_STAKE,\n props<{ stake: number | null; silent?: boolean; stakeStr?: string }>(),\n );\n\n static setSingleBetPickStake = createAction(\n BetslipSingleBetActions.SET_SINGLE_BET_PICK_STAKE,\n props<{ pickId: string; stake: number | null; silent?: boolean; stakeStr?: string; stakeSource?: stakeSource }>(),\n );\n\n static setSingleBetPickRewardToken = createAction(\n BetslipSingleBetActions.SET_SINGLE_BET_PICK_REWARD_TOKEN,\n props<{ pickId: string; rewardTokenId: string | null }>(),\n );\n\n static removeAllSingleBetPickRewardTokens = createAction(BetslipSingleBetActions.REMOVE_ALL_SINGLE_BET_PICK_REWARD_TOKENS);\n\n static toggleSingleBetPickEachWay = createAction(BetslipSingleBetActions.TOGGLE_SINGLE_BET_PICK_EACH_WAY, props<{ pickId: PickId }>());\n\n /**\n * Invoked from the epic when golf pick is added. it sets the each way status automatically\n *\n * @param index pick index\n * @param isEachWay isEachWay value.\n */\n static setSingleBetPickEachWay = createAction(\n BetslipSingleBetActions.SET_SINGLE_BET_PICK_EACH_WAY,\n props<{ pickId: PickId; isEachWay: boolean }>(),\n );\n\n static setSingleBetPicksEachWay = createAction(\n BetslipSingleBetActions.SET_SINGLE_BET_PICKS_EACH_WAY,\n props<{ pickIds: PickId[]; isEachWay: boolean }>(),\n );\n\n static toggleSingleBetPick = createAction(BetslipSingleBetActions.TOGGLE_SINGLE_BET_PICK, props<{ pickId: PickId }>());\n static addPick = createAction(BetslipSingleBetActions.ADD_PICK, props<{ pickId: string; pickState: Partial }>());\n static updateOrder = createAction(BetslipSingleBetActions.UPDATE_PICK_ORDER, props<{ pickId: string; order: number }>());\n static requestRemovePick = createAction(BetslipSingleBetActions.REQUEST_REMOVE_PICK, props<{ pickId: string }>());\n static removePick = createAction(BetslipSingleBetActions.REMOVE_PICK, props<{ pickId: string }>());\n static addPickWithNewPickId = createAction(BetslipSingleBetActions.ADD_PICK_WITH_NEW_PICKID);\n}\n"],"names":["DECIMAL_PLACES","SUMMARY_VALUE_THRESHOLD","defaultOddsFormatInput","Object","freeze","cutZero","isSummary","maxDecimalPlaces","useOddsMultiplicationFormat","formatInvalidOdds","displayFormat","isFormatValid","format","odds","decimals","OddsOperations","isDecimalOddsValid","fractional","isFractionalOddsValid","moneyline","isMoneyLineOddsValid","toSimplifiedUKOdds","priceValue","Decimal","numerator","dividedBy","denominator","decimalOdds","OddsConverter","fractionToDecimal","Fraction","create","toFixed","decimalPlaces","lessThan","min","ROUND_DOWN","formatOddsInternal","input","formatDecimals","formatFractional","formatMoneyLine","roundPriceValues","moneyLineString","roundAmericanOdds","greaterThan","result","endsWith","formatOddsWithFallback","mainFormat","fallbackFormats","newOdds","convertOdds","toFormattedOdds","formatOdds","_input","__spreadValues","A","isOddsValid","fromFormat","convertedOdds","OddsFormatterService","constructor","betslipConfig","inject","BetslipConfig","__spreadProps","U","factory","ɵfac","providedIn","_OddsFormatterService","BetslipPickActions","_BetslipPickActions","ACTION_SCHEMA","BetslipActions","REQUEST_ADD_PICK","REQUEST_ADD_GROUP_PICK","REQUEST_ADD_BET_BUILDER_PICK","REQUEST_ADD_ENTAIN_UI_BET_BUILDER_PICK","ADD_ENTAIN_UI_BET_BUILDER_PICK","REQUEST_REMOVE_PICK","REQUEST_REMOVE_BET_BUILDER_PICK","REQUEST_REPLACE_PRE_CREATED_BET_BUILDER_PICK","CHECK_PRECREATED_BAB_CONVERSION","ADD_PICK","REMOVE_PICK","REMOVE_MULTIPLE_PICKS","REMOVED_PICK","REMOVED_MULTIPLE_PICK","REQUEST_REMOVE_MULTIPLE_PICKS","REQUEST_REMOVE_ALL_PICKS","REQUEST_REMOVE_PICKS_FROM_GROUP","REQUEST_REMOVE_PLACED_PICKS_FROM_GROUP","TOGGLE_PICK","TOGGLE_PICK_FOR_TYPE","TOGGLE_ALL_PICKS","SELECT_PICK","DESELECT_PICK","CHANGE_SELECTION","SET_FIXED_PRICE","SET_STARTING_PRICE","TOGGLE_WIN_PICK","ACCEPT_CURRENT_PRICE","ADD_PICK_HIGHLIGHT","ADD_PICKS_HIGHLIGHT","REMOVE_PICK_HIGHLIGHT","REMOVE_PICKS_HIGHLIGHT","SCROLL_TO_PICK","EXPAND_BET_BUILDER_LEGS","COLLAPSE_BET_BUILDER_LEGS","UPDATE_V1_PICKS","UPDATE_V2_PICKS","UPDATE_GROUP_PICKS","UPDATE_GROUP_PICK_LEGS","REPLACE_PICK","SET_SOURCE_OF_BET","SET_SOURCE_OF_BET_SUFFIX","SET_MULTIPLE_SOURCE_OF_BET_SUFFIX","SET_NUMPAD_ACTION","ADD_AFFILIATE_REQUEST","SHARE_AFFILIATE_PICKS","PICK_SELECTION_CHANGED","ADD_WEB_APP_PICK","REMOVE_WEB_APP_PICK","PICKS_REFRESHED","REFRESH_GROUP_PICK","CHANGE_LOCK_STATE","ADD_LAST_PICK_ERROR","REMOVE_LAST_PICK_ERROR","LAST_PICK_ERROR_REMOVE_PICK_ID","REMOVE_LAST_PICK_FROM_PICK_LIST","REMOVE_TYPE_PICKS","requestAddPick","createAction","props","requestAddGroupPick","requestAddBetBuilderPick","requestAddEntainUiBetBuilderPick","requestRemoveEntainUiBetBuilderPick","checkPrecreatedBABConversion","requestReplacePreCreatedBetBuilderPick","addPick","requestRemovePick","removePick","removedPick","requestRemoveMultiplePicks","requestRemoveAllPicks","removeMultiplePicks","removedMultiplePicks","requestRemovePicksFromGroup","requestRemovePlacedPicksFromGroup","togglePick","togglePickForType","toggleAllPicks","selectPick","deselectPick","changeSelection","changeLockState","setFixedPrice","setStartingPrice","toggleWinPick","acceptCurrentPrice","expandBetBuilderLegs","collapseBetBuilderLegs","addPickHighlight","addPicksHighlight","removePickHighlight","removePicksHighlight","scrollToPick","updateV1Picks","updateV2Picks","updateGroupPicks","updateGroupPickLegs","replacePick","setSourceOfBet","setSourceOfBetSuffix","setMultipleSourceOfBetSuffix","setTrackingNumpadAction","addAffiliatePicks","shareAffiliatePicks","pickSelectionChanged","addWebAppPick","picksRefreshed","removeWebAppPick","addLastPickError","removeLastPickError","lastPickErrorRemovePickId","removeLastPickFromPickList","refreshGroupPick","addEntainUiBetBuilderPick","removeTypePicks","stakeSource","BetslipSingleBetActions","_BetslipSingleBetActions","BetslipTypesActions","UPDATE_PICK_ORDER","SET_SINGLE_BET_STAKE","SET_SINGLE_BET_PICK_STAKE","SET_SINGLE_BET_PICK_REWARD_TOKEN","REMOVE_ALL_SINGLE_BET_PICK_REWARD_TOKENS","TOGGLE_SINGLE_BET_PICK_EACH_WAY","SET_SINGLE_BET_PICK_EACH_WAY","SET_SINGLE_BET_PICKS_EACH_WAY","TOGGLE_SINGLE_BET_PICK","ADD_PICK_WITH_NEW_PICKID","setSingleBetStake","setSingleBetPickStake","setSingleBetPickRewardToken","removeAllSingleBetPickRewardTokens","toggleSingleBetPickEachWay","setSingleBetPickEachWay","setSingleBetPicksEachWay","toggleSingleBetPick","updateOrder","addPickWithNewPickId"],"mappings":"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"}