{"version":3,"file":"suntech-innovation-tadpole-common.mjs","sources":["../../../projects/tadpole-common/src/entities/artemis.colors.ts","../../../projects/tadpole-common/src/entities/bet-state.ts","../../../projects/tadpole-common/src/entities/bet.ts","../../../projects/tadpole-common/src/entities/colors.ts","../../../projects/tadpole-common/src/entities/crimes.entities.ts","../../../projects/tadpole-common/src/entities/data-source.entities.ts","../../../projects/tadpole-common/src/entities/market-types.ts","../../../projects/tadpole-common/src/entities/market.ts","../../../projects/tadpole-common/src/entities/params.ts","../../../projects/tadpole-common/src/entities/price-chart-bet.ts","../../../projects/tadpole-common/src/entities/provider.ts","../../../projects/tadpole-common/src/entities/virtual-prices.ts","../../../projects/tadpole-common/src/pipes/format-price/format-price.pipe.ts","../../../projects/tadpole-common/src/pipes/format-amount/format-amount.pipe.ts","../../../projects/tadpole-common/src/pipes/enum-key-value.pipe.ts","../../../projects/tadpole-common/src/pipes/format-line/format-line.pipe.ts","../../../projects/tadpole-common/src/helpers/data-source.ts","../../../projects/tadpole-common/src/helpers/providers.ts","../../../projects/tadpole-common/src/helpers/bets.helper.ts","../../../projects/tadpole-common/src/helpers/price-helper.ts","../../../projects/tadpole-common/src/helpers/utils.ts","../../../projects/tadpole-common/src/helpers/virtual-price.helper.ts","../../../projects/tadpole-common/src/components/data-source/data-source.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-cursors/components/chart-cursor/chart-cursor.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-cursors/components/chart-cursor/chart-cursor.component.html","../../../projects/tadpole-common/src/modules/chart/utils/operators.ts","../../../projects/tadpole-common/src/modules/chart/base/chart.base.ts","../../../projects/tadpole-common/src/modules/chart/utils/decorators.ts","../../../projects/tadpole-common/src/modules/chart/entities/chart-entities.ts","../../../projects/tadpole-common/src/modules/chart/utils/chart.helper.ts","../../../projects/tadpole-common/src/modules/chart/utils/chart-safe.helper.ts","../../../projects/tadpole-common/src/modules/chart/utils/chart-date-params.ts","../../../projects/tadpole-common/src/modules/chart/utils/chart-scale.util.ts","../../../projects/tadpole-common/src/modules/chart/services/chart-configurator.service.ts","../../../projects/tadpole-common/src/modules/chart/services/chart.service.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-cursors/chart-cursors.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-cursors/chart-cursors.component.html","../../../projects/tadpole-common/src/modules/chart/modules/chart-cursors/chart-cursors.helper.ts","../../../projects/tadpole-common/src/modules/chart/components/chart-date-markers/chart-date-markers.component.ts","../../../projects/tadpole-common/src/modules/chart/components/chart-line/chart-line.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-bets/chart-bets.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-histogram/chart-histogram.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-volume-axis/chart-volume-axis.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-volume-axis/chart-volume-axis.component.html","../../../projects/tadpole-common/src/modules/chart/modules/chart-price-axis/chart-price-axis.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-price-axis/chart-price-axis.component.html","../../../projects/tadpole-common/src/modules/chart/modules/chart-menu/components/chart-menu-item/chart-menu-item.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-menu/components/chart-menu-item/chart-menu-item.component.html","../../../projects/tadpole-common/src/modules/chart/modules/chart-menu/chart-menu.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-menu/chart-menu.component.html","../../../projects/tadpole-common/src/modules/chart/modules/chart-zones/chart-zones.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-timeline/chart-timeline.component.ts","../../../projects/tadpole-common/src/modules/chart/modules/chart-timeline/chart-timeline.component.html","../../../projects/tadpole-common/src/modules/chart/chart.component.ts","../../../projects/tadpole-common/src/modules/chart/chart.component.html","../../../projects/tadpole-common/src/modules/chart/chart-canvas/chart-canvas.component.ts","../../../projects/tadpole-common/src/modules/price-stack/price-stack/price-stack.component.ts","../../../projects/tadpole-common/src/modules/price-stack/price-stack/price-stack.component.html","../../../projects/tadpole-common/src/modules/price-stack/price-stack-fancy/price-stack-fancy.component.ts","../../../projects/tadpole-common/src/modules/price-stack/price-stack-fancy/price-stack-fancy.component.html","../../../projects/tadpole-common/src/modules/price-stack/display-price-stack.component.ts","../../../projects/tadpole-common/src/modules/price-stack/display-price-stack.component.html","../../../projects/tadpole-common/src/modules/price-stack/price-stack.module.ts","../../../projects/tadpole-common/src/public-api.ts","../../../projects/tadpole-common/src/suntech-innovation-tadpole-common.ts"],"sourcesContent":["export enum MemberColor {\n  RED = 'RED',\n  ORANGE = 'ORANGE',\n  LIGHT_BLUE = 'LIGHT_BLUE',\n  PINK = 'PINK',\n  GREEN = 'GREEN',\n  WHITE = 'WHITE',\n}\n\nexport const ArtemisColorMap: Record<MemberColor, string> = {\n  [MemberColor.RED]: '#FF0000',\n  [MemberColor.ORANGE]: '#FFC000',\n  [MemberColor.LIGHT_BLUE]: '#8DA9DB',\n  [MemberColor.PINK]: '#FF99FF',\n  [MemberColor.GREEN]: '#70AD47',\n  [MemberColor.WHITE]: '#FFFFFF',\n};\n\nexport interface ArtemisMemberMark {\n  color: MemberColor;\n  label: string;\n}\n","export enum BetStateType {\n  Unknown,\n  PlacedNothingFilled,\n  PlacedPartiallyFilled,\n  PlacedCompletelyFilled,\n  FilledPartially,\n  FilledCompletely,\n  CancelledNothingFilled,\n  CancelledPartiallyFilled,\n  StillLive,\n}\n","import { DataSource } from './data-source.entities';\nimport { Crime } from './crimes.entities';\n\n\nexport enum BetStatus {\n  UNSETTLED = 'Unsettled',\n  CANCELLED = 'Cancelled',\n  VOIDED = 'Voided',\n  LAPSED = 'Lapsed',\n  SETTLED = 'Settled',\n  FAIL = 'Fail',\n  CASHOUT = 'Cashout',\n}\n\nexport interface MarketBet extends Partial<ArtemisMarketBet> {\n  agentId: number;\n  agentName: string;\n  agentPnl: number;\n  agentPT: number;\n  betId: string;\n  betPlacedSource: BetPlacedSource;\n  betPnl: number;\n  betPnlF: number;\n  cancelled: number;\n  cancelledClientId: string;\n  cancelledCountry: string;\n  cancelledIp: string;\n  cancelledSize: number;\n  coyPnl: number;\n  coyPT: number;\n  dataSource: DataSource;\n  errorCode: string;\n  eventName: string;\n  exchangeCancelledSize: number;\n  exchangeMatchedSize: number;\n  exchangeRequestedSize: number;\n  finished: number;\n  flags: Array<BetFlagDto>;\n  invalidated: boolean;\n  lastMatch: number;\n  lastSettledTime: string;\n  line: number;\n  loading: boolean;\n  maPnl: number;\n  maPT: number;\n  marketId?: string;\n  marketName: string;\n  masterAgentId: number;\n  masterAgentName: string;\n  matchedSize: number;\n  memberId: number;\n  memberName: string;\n  memberTrackerPresence: boolean;\n  opsFlags: BetFeedbackDto[];\n  placed: number;\n  placedClientId: string;\n  placedCountry: string;\n  placedInPlay: boolean;\n  placedIp: string;\n  positionBreakdown: string;\n  providerPnl: number;\n  providerPT: number;\n  requestedPrice: number;\n  requestedSize: number;\n  runnerId: number;\n  runnerName: string;\n  side: Side;\n  smaPnl: number;\n  smaPT: number;\n  smaType: SMAType;\n  sport: string;\n  states: Array<BetStates>;\n  status: BetStatus;\n  superMasterAgentId: number;\n  superMasterAgentName: string;\n  whitelabel: string;\n}\n\ninterface ArtemisMarketBet {\n  betDelay: number;\n  voidMsg: string;\n  voidReason: string;\n}\n\nexport enum BetPlacedSource {\n  Unknown = 'Unknown',\n  Desktop = 'Desktop',\n  Mobile = 'Mobile',\n}\n\nexport interface BetFlagDto {\n  betId?: null | string;\n  crime?: Crime;\n}\n\nexport interface BetFeedbackDto {\n  betId: string;\n  crime: Crime;\n  dataSource: DataSource;\n  isFlag: boolean;\n  marketId: string;\n  memberId: number;\n  timestamp: number;\n}\n\nexport enum Side {\n  Back = 'Back',\n  Lay = 'Lay',\n}\n\nexport interface BetStates {\n  fillPrice?: null | number;\n  from?: number;\n  matched?: number;\n  matchedExchange?: number;\n  remaining?: number;\n  remainingExchange?: number;\n  to?: number;\n}\n\nexport enum SMAType {\n  'B2B' = 1,\n  'B2C' = 2,\n}\n","import { SMAType } from './bet';\n\n\nexport enum Color {\n  RED = '#FFE6E5',\n  GREEN = '#E5FFE8',\n  BLUE = '#E5F5FF',\n  ORANGE = '#FFD9B2',\n  YELLOW = '#FFFAB2',\n  BACK_COLOR = '#A6D8FF',\n  LAY_COLOR = '#FAC9D4',\n}\n\nexport const WL_COLOR = new Map([\n  [SMAType.B2C, '#ff00003b'],\n]);\n","export enum Crime {\n  NoFlag = 'NO_FLAG',\n  Profitability = 'PROFITABILITY',\n  Spike = 'SPIKE',\n  LargeBet = 'LARGE_BET',\n  Sniping = 'SNIPING',\n  Reversal = 'REVERSAL',\n  BestExecution = 'BEST_EXECUTION',\n  CidipLimit = 'CIDIP_LIMIT',\n  LivePassing = 'LIVE_PASSING',\n  LiveSniping = 'LIVE_SNIPING',\n  PassingLiveLowLiquidity = 'PASSING_LIVE_LOW_LIQUIDITY',\n  PassingLiveFalsePrice = 'PASSING_LIVE_FALSE_PRICE',\n  PassingLiveBackLay = 'PASSING_LIVE_BACK_LAY',\n  SnipingLiveKnownOutcomeConfirmedMatched = 'SNIPING_LIVE_KNOWN_OUTCOME_CONFIRMED_MATCHED',\n  SnipingLiveUnknownOutcomeConfirmedMatched = 'SNIPING_LIVE_UNKNOWN_OUTCOME_CONFIRMED_MATCHED',\n  SnipingLiveKnownOutcomeUnsuccessfulMatched = 'SNIPING_LIVE_KNOWN_OUTCOME_UNSUCCESSFUL_MATCHED',\n  SnipingLiveUnknownOutcomeUnsuccessfulMatched = 'SNIPING_LIVE_UNKNOWN_OUTCOME_UNSUCCESSFUL_MATCHED',\n  SnipingLiveKnownOutcomeAttempted = 'SNIPING_LIVE_KNOWN_OUTCOME_ATTEMPTED',\n  SnipingLiveUnknownOutcomeAttempted = 'SNIPING_LIVE_UNKNOWN_OUTCOME_ATTEMPTED',\n  SnipingLiveNoFeedConfirmedMatched = 'SNIPING_LIVE_NO_FEED_CONFIRMED_MATCHED',\n  SnipingLiveNoFeedUnsuccessfulMatched = 'SNIPING_LIVE_NO_FEED_UNSUCCESSFUL_MATCHED',\n  SnipingLiveNoFeedAttempted = 'SNIPING_LIVE_NO_FEED_ATTEMPTED',\n  Passing = 'PASSING',\n  Shadow = 'SHADOW',\n}\n\nexport const CrimeTextCollection = new Map([\n  [Crime.NoFlag, 'No Flag'],\n  [Crime.Profitability, 'Profitability'],\n  [Crime.Spike, 'Spike'],\n  [Crime.LargeBet, 'Large Bet'],\n  [Crime.Sniping, 'Snipe'],\n  [Crime.Reversal, 'Reversal'],\n  [Crime.BestExecution, 'Best Execution'],\n  [Crime.CidipLimit, 'Cidip Limit'],\n  [Crime.LivePassing, 'Live Passing'],\n  [Crime.LiveSniping, 'Live Snipe'],\n  [Crime.PassingLiveLowLiquidity, 'Passing LL'],\n  [Crime.PassingLiveFalsePrice, 'Passing FP'],\n  [Crime.PassingLiveBackLay, 'Passing BL'],\n  [Crime.SnipingLiveKnownOutcomeConfirmedMatched, 'S Snipe'],\n  [Crime.SnipingLiveUnknownOutcomeConfirmedMatched, 'S Snipe'],\n  [Crime.SnipingLiveKnownOutcomeUnsuccessfulMatched, 'F Snipe'],\n  [Crime.SnipingLiveUnknownOutcomeUnsuccessfulMatched, 'F Snipe'],\n  [Crime.SnipingLiveKnownOutcomeAttempted, 'A Snipe'],\n  [Crime.SnipingLiveUnknownOutcomeAttempted, 'A Snipe'],\n  [Crime.SnipingLiveNoFeedConfirmedMatched, 'S Snipe'],\n  [Crime.SnipingLiveNoFeedUnsuccessfulMatched, 'F Snipe'],\n  [Crime.SnipingLiveNoFeedAttempted, 'A Snipe'],\n  [Crime.Passing, 'Passing'],\n  [Crime.Shadow, 'Shadow'],\n]);\n","export enum DataSource {\n  DEFAULT = 'DEFAULT',\n  APOLLO = 'APOLLO',\n  APOLLO2 = 'APOLLO2',\n  KISMA = 'KISMA',\n\n  ARTEMIS_BRUCEBETS = 'ARTEMIS_BRUCEBETS',\n  ARTEMIS_FAIR999 = 'ARTEMIS_FAIR999',\n  ARTEMIS_LOGICASPORTS = 'ARTEMIS_LOGICASPORTS',\n  ARTEMIS_LOTUSIM = 'ARTEMIS_LOTUSIM',\n  ARTEMIS_MOLLYBET = 'ARTEMIS_MOLLYBET',\n  ARTEMIS_S1BOOKMAKER = 'ARTEMIS_S1BOOKMAKER',\n  ARTEMIS_TX2ODDS = 'ARTEMIS_TX2ODDS',\n  ARTEMIS_XT1ODDS = 'ARTEMIS_XT1ODDS',\n  ARTEMIS_XTODDS = 'ARTEMIS_XTODDS',\n  ARTEMIS_FORSYT = 'ARTEMIS_FORSYT',\n}\n\nexport enum DataSourceShortcuts {\n  DEFAULT = '',\n  APOLLO = 'A',\n  APOLLO2 = 'A2',\n  KISMA = 'KS',\n\n  ARTEMIS_BRUCEBETS = 'BB',\n  ARTEMIS_FAIR999 = 'F9',\n  ARTEMIS_LOGICASPORTS = 'LS',\n  ARTEMIS_LOTUSIM = 'LOT',\n  ARTEMIS_MOLLYBET = 'MB',\n  ARTEMIS_S1BOOKMAKER = 'S1',\n  ARTEMIS_TX2ODDS = 'TX',\n  ARTEMIS_XT1ODDS = 'T1O',\n  ARTEMIS_XTODDS = 'TO',\n  ARTEMIS_FORSYT = 'FST',\n}\n\nexport const ArtemisDataSources = [\n  DataSource.ARTEMIS_BRUCEBETS,\n  DataSource.ARTEMIS_FAIR999,\n  DataSource.ARTEMIS_LOGICASPORTS,\n  DataSource.ARTEMIS_LOTUSIM,\n  DataSource.ARTEMIS_MOLLYBET,\n  DataSource.ARTEMIS_S1BOOKMAKER,\n  DataSource.ARTEMIS_TX2ODDS,\n  DataSource.ARTEMIS_XT1ODDS,\n  DataSource.ARTEMIS_XTODDS,\n  DataSource.ARTEMIS_FORSYT,\n];\n\n\nexport type DataSourceMap<T> = Partial<Record<DataSource, T>>;\n\nexport interface DataID<T = number> {\n  dataSource: DataSource;\n  memberId: T;\n}\n\nexport interface DataName {\n  dataSource: DataSource;\n  memberName: string;\n}\n","export enum MarketDefinition {\n  EXCHANGE = 'EXCHANGE',\n  FANCY = 'FANCY',\n  SPORTSBOOK = 'SPORTSBOOK',\n  EXCHANGE_RUNS = 'EXCHANGE_RUNS', // Exchange runs markets (hybrid of Exchange and Fancy types)\n}\n\nexport enum LineMarketTypes {\n  'INNINGS_RUNS_SB' = 'INNINGS_RUNS_SB',\n  '1ST_INNINGS_RUNS_EX' = '1ST_INNINGS_RUNS_EX',\n  '2ND_INNINGS_RUNS_EX' = '2ND_INNINGS_RUNS_EX',\n  'INNINGS_RUNS$' = '*_INNINGS_RUNS',\n  'RUNS_LINE$' = '*_RUNS_LINE',\n  '\\\\d+_INNING_\\\\d+_OVR_LINE' = '*_INNING_**_OVR_LINE',\n  '\\\\d+_INN_\\\\d+_BALL_LINE' = '*_INN_**_BALL_LINE',\n}\n","import { MarketDefinition } from './market-types';\n\n\nexport enum MarketStatus {\n  SUSPENDED = 'SUSPENDED',\n  ACTIVE = 'ACTIVE',\n  INACTIVE = 'INACTIVE',\n  OPEN = 'OPEN',\n  CLOSED = 'CLOSED',\n  LOCK = 'LOCK',\n  SAFE = 'SAFE',\n  BALL_RUNNING = 'BALL_RUNNING',\n  READY = 'READY',\n  NEW = 'NEW',\n}\n\nexport function getMarketStatus(input?: string): MarketStatus | string {\n  switch (input?.toLowerCase()) {\n    case 'o':\n    case 'open':\n      return MarketStatus.OPEN;\n    case 's':\n    case 'suspended':\n      return MarketStatus.SUSPENDED;\n    case 'c':\n    case 'close':\n    case 'closed':\n      return MarketStatus.CLOSED;\n    case 'inactive':\n      return MarketStatus.INACTIVE;\n    case 'ball_running':\n      return MarketStatus.BALL_RUNNING;\n    case 'safe':\n      return MarketStatus.SAFE;\n    case 'lock':\n      return MarketStatus.LOCK;\n    case 'a':\n    case 'active':\n      return MarketStatus.ACTIVE;\n    case 'ready':\n      return MarketStatus.READY;\n    default:\n      return input || '';\n  }\n}\n\nexport interface MarketDefCollection {\n  isExchange: boolean;\n  isFancy: boolean;\n  isLineExchange: boolean;\n  isSportsBook: boolean;\n  value: MarketDefinition;\n}\n","export enum Param {}\n","import { DateTime } from 'luxon';\nimport { BetStateType } from './bet-state';\n\n\nexport class BetState {\n  constructor(\n    public time: DateTime,\n    public type: BetStateType,\n    public price: number\n  ) { }\n}\n\nexport interface PriceChartBet {\n  betStates: BetState[];\n  d_from: DateTime;\n  d_to: DateTime;\n  id?: string;\n  label: string;\n  line?: number;\n  side: 'Back' | 'Lay' | string;\n}\n","export enum Provider {\n  BETFAIR = 'BETFAIR',\n  FANCY = 'FANCY',\n  ARTEMIS = 'ARTEMIS',\n  ION = 'ION',\n  ALPS = 'ALPS',\n  MATCHBOOK = 'MATCHBOOK',\n  UNSUPPORTED = 'UNSUPPORTED',\n}\n","import { MarketStatus } from './market';\n\n\nexport enum ChartLine {\n  BACK = 'back',\n  LAY = 'lay',\n  LAST_PRICE = 'lastPrice',\n  BF_BACK = 'betfairBack',\n  BF_LAY = 'betfairLay',\n  FANCY_BACK = 'fancyBack',\n  FANCY_LAY = 'fancyLay',\n  BF_LAST_PRICE = 'betfairLastPrice',\n  EV = 'ev',\n  EV_COY = 'evCoy',\n  ION_BACK = 'ionBack',\n  ION_LAY = 'ionLay',\n  MEMBER_BETS = 'memberBets',\n}\n\nexport interface VirtualPricesWithRunner {\n  ps?: Array<BFPrices>;\n  runnerId?: number;\n  runnerName?: string;\n}\n\nexport interface VirtualPriceStack extends ExchangeStack, FancyStack {\n  displayLines: ChartLine[];\n  lines: Partial<Record<ChartLine, [number, number][]>>;\n  ms?: MarketStatus | string; // market status\n  ts: number;\n}\n\nexport interface ExchangeStack {\n  con?: boolean; // connected\n  ip?: boolean; // in play\n  ml?: number; // max lay\n  mtt?: number; // market total traded\n  rl?: number; // runner last traded\n  rtt?: number; // runner total traded\n  t?: [number, number][]; // traded price\n  tsDel?: number; // time since last update\n}\n\nexport interface FancyStack {\n  mb?: number; // max bet\n  mm?: number; // max market\n}\n\nexport interface BFPrices {\n  b: [number, number][];\n  con?: boolean;\n  ip?: boolean;\n  l: [number, number][];\n  ltp?: number;\n  mb?: number;\n  ml?: number;\n  mm?: number;\n  ms?: string;\n  mtt?: number;\n  rl?: number;\n  rs?: string;\n  rtt?: number;\n  t?: [number, number][];\n  ts?: number;\n  tsDel?: number;\n}\n\nexport interface FacelessPrice {\n  back?: number;\n  backSize?: number;\n  lay?: number;\n  laySize?: number;\n  maxBet?: number;\n  maxMarket?: number;\n  status?: string;\n  ts?: number;\n}\n\nexport interface ArtemisPrice {\n  actualRetreat: number;\n  back: number;\n  backLine: number;\n  bfMid: number;\n  changeTime: string;\n  lay: number;\n  layLine: number;\n  marketId: number;\n  maxBet: number;\n  maxMarket: number;\n  mid: number;\n  modelMid: number;\n  priceOffset: number;\n  runnerId: number;\n  status: string;\n}\n\nexport interface IonPrice {\n  availableToBack: [number, number][];\n  availableToLay: [number, number][];\n  selectionId: number;\n  timestamp: string;\n}\n\nexport interface IonSelection {\n  adjustmentFactor: string;\n  betfairSelectionId: string;\n  name: string;\n  removalTime: string;\n  selectionId: number;\n  status: string;\n  timestamp: string;\n  winnerState: string;\n}\n\nexport interface FancyPrice {\n  back: number;\n  backSize: number;\n  betfairMarketId?: null | string;\n  gameType?: null | string;\n  inPlay?: boolean;\n  lay: number;\n  laySize: number;\n  maxBet?: number;\n  maxMarket?: number;\n  minBet?: number;\n  mStatus?: null | string;\n  remark?: null | string;\n  sectionId?: number;\n  status?: null | string;\n  totalTraded?: number;\n  ts?: number;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DecimalPipe } from '@angular/common';\n\n\n@Pipe({\n  name: 'formatPrice',\n  standalone: true,\n})\nexport class FormatPricePipe implements PipeTransform {\n\n  private decimalPipe = new DecimalPipe('en-GB');\n\n  transform(\n    price: number,\n    marketBettingType?: string,\n    isAveragePrice = false,\n    isIntermediatePrice = false\n  ): string {\n    if (!price || price <= 0) return '  ';\n    marketBettingType = marketBettingType?.toLowerCase() || '';\n\n    if (marketBettingType === 'fancy') {\n      return this.decimalPipe.transform(price, '1.0-2') || '';\n    } else if (['asian_handicap_single_line', 'asian_handicap_double_line'].includes(marketBettingType)) {\n      return this.formatHandicap(price, isAveragePrice, isIntermediatePrice);\n    } else {\n      return this.formatOdds(price, isAveragePrice, isIntermediatePrice);\n    }\n  }\n\n  formatHandicap(price: number, isAveragePrice: boolean, isIntermediatePrice: boolean): string {\n    if (price < 1.01 || price > 1000) {\n      return '';\n    }\n\n    if (isAveragePrice) {\n      return this.round(price, 0.000001, '1.6-6');\n    }\n\n    if (isIntermediatePrice) {\n      return this.round(price, 0.001, '1.3-3');\n    }\n\n    return this.round(price, 0.01, '1.2-2');\n  }\n\n\n  formatOdds(price: number, isAveragePrice: boolean, isIntermediatePrice: boolean): string {\n    if (price < 1.01) {\n      return '';\n    }\n    if (price <= 2) {\n      if (isAveragePrice) {\n        return this.round(price, 0.000001, '1.2-6');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.0001, '1.2-4');\n      }\n\n      return this.round(price, 0.01, '1.2-2');\n    }\n    if (price <= 3) {\n      if (isAveragePrice) {\n        return this.round(price, 0.000001, '1.2-6');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.001, '1.2-3');\n      }\n\n      return this.round(price, 0.02, '1.2-2');\n    }\n    if (price <= 4) {\n      if (isAveragePrice) {\n        return this.round(price, 0.000001, '1.2-6');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.001, '1.2-3');\n      }\n\n      return this.round(price, 0.05, '1.2-2');\n    }\n    if (price <= 6) {\n      if (isAveragePrice) {\n        return this.round(price, 0.00001, '1.1-5');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.01, '1.1-2');\n      }\n\n      return this.round(price, 0.1, '1.1-1');\n    }\n    if (price <= 10) {\n      if (isAveragePrice) {\n        return this.round(price, 0.00001, '1.1-5');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.01, '1.1-2');\n      }\n\n      return this.round(price, 0.2, '1.1-1');\n    }\n    if (price <= 20) {\n      if (isAveragePrice) {\n        return this.round(price, 0.00001, '1.1-5');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.01, '1.1-2');\n      }\n\n      return this.round(price, 0.5, '1.1-1');\n    }\n    if (price <= 30) {\n      if (isAveragePrice) {\n        return this.round(price, 0.0001, '1.0-4');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.1, '1.0-1');\n      }\n\n      return this.round(price, 1, '1.0-0');\n    }\n    if (price <= 50) {\n      if (isAveragePrice) {\n        return this.round(price, 0.0001, '1.0-4');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.1, '1.0-1');\n      }\n\n      return this.round(price, 2, '1.0-0');\n    }\n    if (price <= 100) {\n      if (isAveragePrice) {\n        return this.round(price, 0.0001, '1.0-4');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.1, '1.0-1');\n      }\n\n      return this.round(price, 5, '1.0-0');\n    }\n    if (price <= 1000) {\n      if (isAveragePrice) {\n        return this.round(price, 0.001, '1.0-3');\n      }\n      if (isIntermediatePrice) {\n        return this.round(price, 0.1, '1.0-1');\n      }\n\n      return this.round(price, 10, '1.0-0');\n    }\n\n    return '';\n  }\n\n  round(num: number, roundTo: number, format: string): string {\n    const roundedNum = Math.round(num / roundTo) * roundTo;\n\n    return this.decimalPipe.transform(roundedNum, format, 'en-GB') ?? '';\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DecimalPipe } from '@angular/common';\n\n\n@Pipe({\n  name: 'formatAmount',\n  standalone: true,\n})\nexport class FormatAmountPipe implements PipeTransform {\n\n  private decimalPipe = new DecimalPipe('en-GB');\n\n  transform(value: number | null | undefined, args?: any): string {\n\n    if (!value || value == null || value === undefined || value <= 0) {\n      return '  ';\n    }\n\n    if (value < 1_000) {\n      return '£' + this.decimalPipe.transform(value, '1.2-2', 'en-GB');\n    } // Max £999.99 7 chars\n\n    if (value < 100_000) {\n      return '£' + this.decimalPipe.transform(value, '1.1-1', 'en-GB');\n    } // Max £99,999.9 8 chars\n\n    if (value < 1_000_000) {\n      return '£' + this.decimalPipe.transform(value / 1_000, '1.2-2', 'en-GB') + 'k';\n    } // Max £999.99k 8 chars\n\n    if (value < 100_000_000) {\n      return '£' + this.decimalPipe.transform(value / 1_000, '1.0-0', 'en-GB') + 'k';\n    } // Max £99,999k 8 chars\n\n    if (value < 1_000_000_000) {\n      return '£' + this.decimalPipe.transform(value / 1_000_000, '1.2-2', 'en-GB') + 'm';\n    } // Max £999.99m 8 chars\n\n    return '£' + this.decimalPipe.transform(value / 1_000_000, '1.0-0', 'en-GB') + 'm';\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KeyValue } from '@angular/common';\n\n\n@Pipe({\n  name: 'enumkeyvalue',\n  standalone: true,\n})\nexport class EnumKeyValuePipe implements PipeTransform {\n  transform<T extends object>(obj: T): KeyValue<string, string>[] {\n    // Include keys that don't look like integers or...\n    // ...include keys whose values do not appear as keys also\n    return Object.entries(obj)\n      .filter(([key, value]) => !/^\\d+$/.test(key) || !Object.hasOwn(obj, value))\n      .map(([key, value]) => ({ key, value }));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DecimalPipe } from '@angular/common';\n\n\n@Pipe({\n  name: 'formatLine',\n  standalone: true,\n})\nexport class FormatLinePipe implements PipeTransform {\n\n  private decimalPipe = new DecimalPipe('en-GB');\n\n  transform(\n    price: number,\n    isAveragePrice = false,\n    isIntermediatePrice = false\n  ): string {\n    return this.formatLine(price, isAveragePrice, isIntermediatePrice);\n  }\n\n  formatLine(price: number, isAveragePrice: boolean, isIntermediatePrice: boolean): string {\n    if (price < 0.5 || price > 999.5) {\n      return '';\n    }\n\n    if (isAveragePrice) {\n      return this.round(price, 0.0001, '1.4-4');\n    }\n\n    if (isIntermediatePrice) {\n      return this.round(price, 0.001, '1.3-3');\n    }\n\n    const roundedNum = Math.round(price + 0.5) - 0.5;\n\n    return this.round(roundedNum, 0.1, '1.1-1');\n  }\n\n  round(num: number, roundTo: number, format: string): string {\n    const roundedNum = Math.round(num / roundTo) * roundTo;\n\n    return this.decimalPipe.transform(roundedNum, format, 'en-GB') ?? '';\n  }\n}\n","import { entries, groupBy, toNumber, toString } from 'lodash';\nimport { KeyValue } from '@angular/common';\nimport { ArtemisDataSources, DataID, DataName, DataSource, DataSourceMap } from '../entities';\n\n\nexport function createDataSourceMap<T>(input: KeyValue<T, DataSource>[]): DataSourceMap<T[]> {\n  return entries(groupBy(input, i => i.value)).reduce((acc, [source, list]) => {\n    return { ...acc, [source]: list.map(i => i.key) };\n  }, { });\n}\n\nexport function parseSource<T = number>(str: string, converter: (v: string) => T): [DataSource, T] {\n  return String(str).includes('-')\n    ? (([source, id]) => [DataSource[source], converter(id)])(str.split('-', 2) as [keyof typeof DataSource, string])\n    : [DataSource.DEFAULT, converter(str)];\n}\n\nexport function parseDataMarketId(str: string): [DataSource, string] {\n  return (str.includes('-') && !str.includes('FY')\n    ? str.split('-', 2)\n    : [DataSource.DEFAULT, str]) as [DataSource, string];\n}\n\nexport function createDataMemberId<T extends DataID>(bet: T): string {\n  try {\n    return bet.dataSource === DataSource.DEFAULT\n      ? bet.memberId.toString()\n      : bet.dataSource.concat('-', bet.memberId.toString());\n  } catch (e) {\n    return '';\n  }\n}\n\nexport function createDataMemberName<T extends DataName>(bet: T): string {\n  return bet.dataSource === DataSource.DEFAULT\n    ? bet.memberName\n    : bet.dataSource.concat('-', bet.memberName);\n}\n\nexport function createDataMarketId(dataSource = DataSource.DEFAULT, marketId: string): string {\n  return dataSource === DataSource.DEFAULT\n    ? marketId\n    : dataSource.concat('-', marketId);\n}\n\nexport function getValueOnly(value: string): string {\n  return parseSource(value, toString).pop()!;\n}\n\nexport function isArtemisDataSource(value: DataSource):boolean {\n  return ArtemisDataSources.some(i => i === value);\n}\n\nexport class Converter {\n  static betsToKeyValue<T extends DataID>(bets: T[]): KeyValue<number, DataSource>[] {\n    return bets.map(i => ({ key: i.memberId, value: i.dataSource }));\n  }\n\n  static sourceToBet(list: string[]): DataID[] {\n    return list\n      ?.map(id => parseSource(id, toNumber))\n      .map(([dataSource, id]) => ({ dataSource, memberId: id })) || [];\n  }\n\n  static sourceToKeyValue(list: string[]): KeyValue<number, DataSource>[] {\n    return this.betsToKeyValue(this.sourceToBet(list));\n  }\n\n  static idOnly(id: string): string {\n    return parseDataMarketId(id).pop()!;\n  }\n}\n","import { keys } from 'lodash';\nimport { LineMarketTypes, MarketDefinition, Provider } from '../entities';\nimport { Converter } from './data-source';\n\n\nexport class ProviderHelper {\n  private static readonly lineTypes = keys(LineMarketTypes);\n\n  static findProvider(marketId: string): Provider {\n    if (/FY/.test(marketId)) return Provider.FANCY;\n    if (marketId?.toString().startsWith('1.')) return Provider.BETFAIR;\n    if (marketId?.toString().startsWith('9.')) return Provider.ARTEMIS;\n    if (marketId?.toString().startsWith('10.')) return Provider.ION;\n    if (marketId?.toString().startsWith('14.')) return Provider.ALPS;\n    if (!marketId.includes('.')) return Provider.MATCHBOOK;\n\n    return Provider.UNSUPPORTED;\n  }\n\n  static getMarketDefinition(marketId: string, subMarketType?: string): MarketDefinition {\n    const provider = ProviderHelper.findProvider(Converter.idOnly(marketId));\n    const isExchangeLineMarket = subMarketType && ProviderHelper.lineTypes.some(i => new RegExp(i).test(subMarketType));\n    const isMatchOdds = /match(_)?odds/.test(subMarketType?.toLowerCase() || '');\n\n    if (provider === Provider.FANCY) return MarketDefinition.FANCY;\n    if (provider === Provider.ARTEMIS && isMatchOdds) return MarketDefinition.SPORTSBOOK;\n    if (provider === Provider.ARTEMIS) return MarketDefinition.FANCY;\n    if (isExchangeLineMarket) return MarketDefinition.EXCHANGE_RUNS;\n\n    return MarketDefinition.EXCHANGE;\n  }\n\n  static getArtemisMarketId(id: string): string {\n    return id.replace(/(APOLLO2-)?9\\./, '');\n  }\n\n  static isSuspension(status: string): boolean {\n    return ['suspended', 'ball_running', 's'].includes(status?.toLowerCase());\n  }\n}\n","import { DateTime } from 'luxon';\nimport { BetState, BetStates, BetStateType, MarketBet, MarketDefinition, PriceChartBet } from '../entities';\nimport { ProviderHelper } from './providers';\n\n\nclass Option<T> {\n  constructor(public value: T) {}\n\n  unwrap_or(input: NonNullable<T>) {\n    return this.value ?? input;\n  }\n}\n\nexport class BetsHelper {\n  static processChartBet<B extends Pick<MarketBet,\n    'states' | 'placed' | 'requestedPrice' | 'requestedSize' | 'finished' | 'line' | 'side' | 'betId'>>(\n    bet: B,\n    getPrice: (bet: B, state: BetStates) => number\n  ): PriceChartBet {\n    const betStates = new Array<BetState>();\n\n    let hasHadFirstMatch = false;\n    for (let i = 0; i < bet.states.length; i++) {\n      const state = bet.states[i];\n      const time = DateTime.fromMillis(new Option(state.from).unwrap_or(Date.now()));\n\n      let type: BetStateType;\n\n      if (i === 0) {\n        // If it's the first entry it must be place\n        if (state.fillPrice && new Option(state.matched).unwrap_or(0) > 0) {\n          type = new Option(state.remaining).unwrap_or(0) <= 0\n            ? BetStateType.PlacedCompletelyFilled\n            : BetStateType.PlacedPartiallyFilled;\n        } else if (new Option(state.remaining).unwrap_or(0) <= 0 && new Option(state.matched).unwrap_or(0) <= 0) {\n          type = BetStateType.CancelledNothingFilled;\n        } else if (new Option(state.matched).unwrap_or(0) <= 0) {\n          type = BetStateType.PlacedNothingFilled;\n        } else {\n          type = BetStateType.Unknown;\n        }\n\n        // If we have a fill set two bet states if the fill price is different\n        if (state.fillPrice && state.fillPrice !== bet.requestedPrice) {\n          betStates.push(new BetState(time, BetStateType.PlacedNothingFilled, bet.requestedPrice));\n          betStates.push(new BetState(time, type, state.fillPrice));\n        } else {\n          betStates.push(new BetState(time, type, getPrice(bet, state)));\n        }\n      } else {\n        // It's not the first entry, let's look at what\n        if (state.fillPrice && new Option(state.remaining).unwrap_or(0) > 0\n          && new Option(state.matched).unwrap_or(0) < new Option(bet.requestedSize).unwrap_or(0)) {\n          type = BetStateType.FilledPartially;\n        } else if (state.fillPrice && new Option(state.matched).unwrap_or(0) >=\n          bet.requestedSize && new Option(state.remaining).unwrap_or(0) <= 0) {\n          type = BetStateType.FilledCompletely;\n        } else if (state.fillPrice && new Option(state.matched).unwrap_or(0) > 0\n          && new Option(state.remaining).unwrap_or(0) <= 0) {\n          type = BetStateType.CancelledPartiallyFilled;\n        } else if (!state.fillPrice && new Option(state.matched).unwrap_or(0) <= 0\n          && new Option(state.remaining).unwrap_or(0) <= 0) {\n          type = BetStateType.CancelledNothingFilled;\n        } else if (!state.fillPrice && new Option(state.matched).unwrap_or(0) > 0) {\n          // Specific case for Artemis\n          type = BetStateType.FilledCompletely;\n        } else {\n          type = BetStateType.Unknown;\n        }\n        // If it's fancy market type we need to use line as price\n        // TODO: To be carefully with it, could led to bugs\n        // const price = state.fillPrice && !hasHadFirstMatch ? state.fillPrice : bet.requestedPrice;\n        const price = getPrice(bet, state);\n\n        betStates.push(new BetState(time, type, price));\n      }\n\n      if (!hasHadFirstMatch && new Option(state.matchedExchange).unwrap_or(0) > 0) {\n        hasHadFirstMatch = true;\n      }\n    }\n\n    let to!: DateTime;\n    if (bet.finished) {\n      to = DateTime.fromMillis(bet.finished);\n    } else {\n      to = DateTime.fromMillis(new Option(bet.states.at(-1)?.to).unwrap_or(Date.now()));\n      betStates.push(new BetState(to, BetStateType.StillLive, new Option(betStates.at(-1)?.price).unwrap_or(0)));\n    }\n\n    return {\n      id: bet.betId,\n      label: `Bet ${bet.betId}`,\n      d_from: DateTime.fromMillis(bet.placed),\n      d_to: to,\n      side: bet.side,\n      line: bet.line,\n      betStates,\n    };\n  }\n\n  static getProviderRequestedPrice(marketId: string, marketType: string): (bet: MarketBet, state: BetStates) => number {\n    return (bet: Pick<MarketBet, 'line' | 'requestedPrice'>, state: BetStates) => {\n      return [MarketDefinition.FANCY, MarketDefinition.EXCHANGE_RUNS]\n        .includes(ProviderHelper.getMarketDefinition(marketId, marketType))\n        ? bet.line\n        : BetsHelper.getFillPrice(bet, state);\n    };\n  }\n\n  static getFillPrice(bet: Pick<MarketBet, 'requestedPrice'>, state: BetStates): number {\n    return state.fillPrice || bet.requestedPrice;\n  }\n}\n","import { FacelessPrice, VirtualPriceStack } from '../entities';\nimport { get } from 'lodash';\n\n\nexport class PriceHelper {\n  static facelessVirtualPriceStack(stack: VirtualPriceStack): FacelessPrice {\n    return {\n      ts: stack.ts,\n      status: stack.ms,\n      lay: get(stack.lines.lay, [0, 0]),\n      back: get(stack.lines.back, [0, 0]),\n      maxBet: stack.mb,\n      maxMarket: stack.mm,\n    };\n  }\n}\n","export const intToShortString = (input: number, dp = 0): string => {\n  const num = Number(input.toFixed(dp).replace(/[^0-9.-]/g, ''));\n\n  if (Math.abs(num) < 1000) return num.toString();\n\n  const si = [\n    { v: 1E3, s: 'K' },\n    { v: 1E6, s: 'M' },\n    { v: 1E9, s: 'B' },\n    { v: 1E12, s: 'T' },\n    { v: 1E15, s: 'P' },\n    { v: 1E18, s: 'E' },\n  ];\n  let index;\n  for (index = si.length - 1; index > 0; index--) {\n    if (num >= si[index].v) {\n      break;\n    }\n  }\n\n  return (num / si[index].v).toFixed(2).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[index].s;\n};\n","import {\n  ArtemisPrice,\n  BFPrices,\n  ChartLine,\n  FancyPrice,\n  getMarketStatus,\n  IonPrice,\n  MarketDefinition,\n  VirtualPriceStack,\n} from '../entities';\nimport { DateTime } from 'luxon';\nimport { clone } from 'lodash';\n\n\nexport class VirtualPriceHelper {\n  static convertBfPrices(input: BFPrices[]): VirtualPriceStack[] {\n    return input.map(i => ({\n      lines: {\n        [ChartLine.BACK]: i.b,\n        [ChartLine.LAY]: i.l,\n        ...(i.ltp ? { [ChartLine.LAST_PRICE]: [[i.ltp, NaN]] } : {}),\n      },\n      displayLines: [ChartLine.BACK, ChartLine.LAY, ChartLine.LAST_PRICE],\n      ms: getMarketStatus(i.ms || ''),\n      ts: i.ts || Date.now(),\n      t: i.t,\n      con: i.con,\n      tsDel: i.tsDel,\n      ip: i.ip,\n      mtt: i.mtt,\n      rtt: i.rtt,\n      rl: i.rl,\n      ml: i.ml,\n    }));\n  }\n\n  static convertArtemisPrices(input: ArtemisPrice[], def: MarketDefinition): VirtualPriceStack[] {\n    const isFancy = def === MarketDefinition.FANCY;\n    const getBackPrice = (stack: ArtemisPrice) => isFancy ? stack.backLine : stack.back;\n    const getLayPrice = (stack: ArtemisPrice) => isFancy ? stack.layLine : stack.lay;\n\n    return input.map((stack: ArtemisPrice) => {\n      return {\n        lines: {\n          [ChartLine.BACK]: [[getBackPrice(stack), NaN]],\n          [ChartLine.LAY]: [[getLayPrice(stack), NaN]],\n          [ChartLine.FANCY_BACK]: [[stack.back, NaN]],\n          [ChartLine.FANCY_LAY]: [[stack.lay, NaN]],\n        },\n        displayLines: [ChartLine.BACK, ChartLine.LAY],\n        ts: new Date(stack.changeTime).getTime(),\n        ms: getMarketStatus(stack.status),\n        mm: stack.maxMarket,\n        mb: stack.maxBet,\n      };\n    });\n  }\n\n  static convertFancyPrices(input: FancyPrice[]): VirtualPriceStack[] {\n    return input.map(i => ({\n      ts: i.ts || Date.now(),\n      lines: {\n        [ChartLine.BACK]: [[i.back, NaN]],\n        [ChartLine.LAY]: [[i.lay, NaN]],\n        [ChartLine.FANCY_BACK]: [[i.backSize, NaN]],\n        [ChartLine.FANCY_LAY]: [[i.laySize, NaN]],\n      },\n      displayLines: [ChartLine.BACK, ChartLine.LAY],\n      ms: getMarketStatus(i.status || ''),\n      mb: i.maxBet,\n      mm: i.maxMarket,\n    }));\n  }\n\n  static convertIonPrices(input: IonPrice[]): VirtualPriceStack[] {\n    return input.map(i => ({\n      lines: {\n        [ChartLine.BACK]: i.availableToBack,\n        [ChartLine.LAY]: i.availableToLay,\n      },\n      displayLines: [ChartLine.BACK, ChartLine.LAY],\n      ltp: null,\n      ts: new Date(i.timestamp).getTime(),\n    }));\n  }\n\n  static expandPriceStack<T>(\n    stack: T[],\n    from: DateTime,\n    to: DateTime,\n    getDate: (item: T) => DateTime,\n    patcher: (item: T, date: DateTime) => T,\n  ): T[] {\n    if (!stack.length) return [];\n\n    const collection = new Map(stack.map((i) => [getDate(i), i]));\n    const { start, end } = ((list) => ({ start: list.at(0)!, end: list.at(-1)! }))(Array.from(collection.entries()));\n\n    if (from > start[0] && to < end[0]) return stack;\n    if (!from || !to) return stack;\n\n    let output = stack;\n\n    if (from < start[0]) {\n      output = [patcher(clone(start[1]), from), ...output];\n    }\n    if (to > end[0]) {\n      output = [...output, patcher(clone(end[1]), to)];\n    }\n\n    return output;\n  }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { startCase } from 'lodash';\nimport { DataSource } from '../../entities';\n\n\n@Component({\n  selector: 'app-data-source',\n  template: `<ng-content></ng-content>`,\n  styleUrls: ['./data-source.component.scss'],\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataSourceComponent {\n  @HostBinding('class')\n  @Input() dataSource = DataSource.DEFAULT;\n\n  @HostBinding('attr.title')\n  get title() {\n    return startCase(this.dataSource?.toLowerCase());\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ChartCursorConfig } from '../../chart-cursors.entities';\n\n\n@Component({\n  selector: 'app-chart-cursor',\n  templateUrl: './chart-cursor.component.html',\n  styleUrls: ['./chart-cursor.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartCursorComponent {\n  @Input() config!: ChartCursorConfig;\n  @Output() move = new EventEmitter<number>();\n}\n","","import { distinctUntilChanged, filter, map, throttleTime } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\n\nexport function findIndex(func: (offset: number) => number, padding = 0) {\n  return (stream: Observable<MouseEvent>): Observable<number> => {\n    return stream.pipe(\n      map(i => i.clientX),\n      distinctUntilChanged(),\n      map((clientX: number) => func(clientX - padding)),\n      filter(index => index >= 0),\n      throttleTime(40),\n      distinctUntilChanged(),\n    );\n  };\n}\n","import { None } from '@suntech-innovation/option';\n\n\nexport abstract class ChartBase {\n  ctx = None<CanvasRenderingContext2D>();\n  canvasElem = None<HTMLCanvasElement>();\n\n  get sizes(): { width: number; height: number } {\n    return {\n      width: this.canvasElem.map(el => el.width).unwrap_or(0),\n      height: this.canvasElem.map(el => el.height).unwrap_or(0),\n    };\n  }\n\n  abstract get nativeElement(): HTMLElement;\n\n  protected clearHolst({ width, height } = this.sizes): void {\n    this.ctx.expect('ClearHolst. ctx should be defined').clearRect(0, 0, width, height);\n  }\n\n  abstract render(args?: any): void;\n}\n","import { ChartBase } from '../base/chart.base';\nimport { Option } from '@suntech-innovation/option';\n\n\nexport function SetCanvasSize<T>(query?: { id: string }) {\n  return (target: T & ChartBase, propertyKey: string, descriptor: PropertyDescriptor) => {\n    const instance = descriptor.value;\n\n    descriptor.value = function(...args: any[]) {\n      const that = this as ChartBase;\n      const el = Option.from(query?.id)\n        .and_then(id => Option.from(document.getElementById(id)))\n        .unwrap_or(that.nativeElement);\n\n      that.canvasElem.map((canvas: HTMLCanvasElement) => {\n        canvas.height = el.clientHeight * 2;\n        canvas.width = el.clientWidth * 2;\n      });\n\n      instance.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\n\nexport function CatchError({ output }: { output: any }) {\n  return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n    const instance = descriptor.value;\n\n    descriptor.value = function(...args: any[]) {\n      try {\n        return instance.apply(this, args);\n      } catch (error) {\n        return output;\n      }\n    };\n\n    return descriptor;\n  };\n}\n","import { Option } from '@suntech-innovation/option';\nimport { MarketStatus } from '../../../entities';\nimport { ScaleConfig } from '../utils';\n\n\nexport type Timestamp = number;\n\nexport interface DateRange<T = number> {\n  from: T;\n  to: T;\n}\n\nexport class ChartRangeDebug {\n  from: string;\n  to: string;\n\n  constructor(range: DateRange) {\n    this.from = new Date(range.from!).toJSON();\n    this.to = new Date(range.to!).toJSON();\n  }\n}\n\nexport interface ChartOffset {\n  left: number;\n  right: number;\n}\n\nexport interface ChartRangeConfig {\n  date: DateRange;\n  price: DateRange;\n}\n\nexport type ChartPoint = [date: Timestamp, price: Option<number>, status: Option<MarketStatus>];\n\nexport class ChartPointHelper {\n  static getDate(point: ChartPoint) {\n    return point[0];\n  }\n\n  static getPrice(point: ChartPoint) {\n    return point[1];\n  }\n\n  static getMarketStatus(point: ChartPoint) {\n    return point[2];\n  }\n}\n\nexport type ChantZoneFiguresStore = Map<ChantZoneFigureKey, ChantZoneFigure>;\n\nexport enum ChantZoneFigureKey {\n  FOOTBALL_1ST_HALF_END = 'FOOTBALL_1ST_HALF_END',\n  NOT_STARTED = 'NOT_STARTED',\n  SAFE = 'SAFE',\n}\n\nexport interface ChantZoneFigure {\n  color?: string;\n  from: number; // Used date timestamp\n  to: number; // Used date timestamp\n}\n\nexport enum ChartLineStrategy {\n  DOT_DOT,\n  TILL_PRICE_CHANGED,\n}\n\nexport interface ChartConfig {\n  debug?: boolean;\n  hasHorizontalLines?: boolean;\n  minPriceStep?: number;\n  priceAxisPosition?: 'right' | 'left';\n  priceColor?: string;\n  scale?: boolean; // Zoom in price axis\n  showCursor?: boolean;\n  zeroPosition?: number; // It used to set orientation from nested view chard (to get same 0 position)\n  zoom?: boolean; // Zoom in date axis\n  drawDateAxis?: boolean; // Prevent of drawing dates axis on the bottom of the chart\n  drawPricesAxis?: boolean; // Prevent of drawing price axis\n  scaleConfig?: Partial<ScaleConfig>; // allow user to set scale initial values and negative values for axis\n}\n","import { compact, get, head, last } from 'lodash';\nimport { ChartBase } from '../base/chart.base';\nimport { ChartPoint, ChartPointHelper, DateRange } from '../entities/chart-entities';\nimport { Decimal } from 'decimal.js';\nimport { CatchError } from './decorators';\nimport { None, Option, Some } from '@suntech-innovation/option';\nimport { MarketStatus } from '../../../entities';\n\n\nexport function getLineDates(line: ChartPoint[]): number[] {\n  return line.map(i => ChartPointHelper.getDate(i));\n}\n\nexport class ChartHelper {\n  static findClosesDatePoints(line: ChartPoint[], range: DateRange): DateRange {\n    const fromIndex = this.findClosestIndex(getLineDates(line), range.from);\n    const toIndex = this.findClosestIndex(getLineDates(line), range.to);\n    const getDate = (index: number): number => get(line, [index, 0]);\n\n    return {\n      from: getDate(fromIndex),\n      to: getDate(toIndex === fromIndex ? toIndex + 1 : toIndex),\n    };\n  }\n\n  static findClosestIndex(line: number[], input: number): number {\n    if (input < head(line)!) return 0;\n    if (input > last(line)!) return line.length - 1;\n\n    for (let i = 0; i < line.length; i++) {\n      const curr = line[i];\n      const next = line[i + 1];\n\n      // If even in thousands items above values is still less than our input - skip this items\n      if (line[i + 25_000] < input) {\n        i = i + 25_000 - 1;\n        continue;\n      }\n\n      if (input === curr || line.length === 1)\n        return i;\n\n      if (input > curr)\n        if (next && input < next)\n          return next - input >= input - curr ? i : i + 1;\n    }\n\n    return 0;\n  }\n\n  @CatchError({ output: [] })\n  static filterLineForDateRange(line: ChartPoint[], { from, to }: DateRange): ChartPoint[] {\n    return line.filter(([date]) => date >= from && date <= to);\n  }\n\n  static isEqual<T>(i: T, j: T): boolean {\n    return JSON.stringify(i) === JSON.stringify(j);\n  }\n\n  static preventSameDate({ from, to }: DateRange, padding = 0): DateRange {\n    const diff = to - from;\n\n    return diff === 0\n      ? { from: from - 1000, to: to + 1000 }\n      // Set small time-paddings to add small borders around bordered values\n      : { from: from - (diff * padding), to: to + (diff * padding) };\n  }\n\n  @CatchError({ output: { from: 0, to: 0 } })\n  static setPaddingsForPrice({ from, to }: Partial<DateRange>): DateRange {\n    const dp = Math.max(...[from, to].map(i => new Decimal(i!).decimalPlaces())) + 1;\n    const average = new Decimal(from!).minus(new Decimal(from!).minus(Math.abs(to!)).div(2)).abs();\n    const offset = average.mul(new Decimal(average.div(100).clamp(.01, 0.1))).toDecimalPlaces(dp).toNumber() || 1;\n\n    return {\n      from: new Decimal(from!).plus(offset).toNumber(),\n      to: new Decimal(to!).minus(offset).toNumber(),\n    };\n  }\n\n  static compactStatuses(prices: ChartPoint[], output: any[] = []): ChartPoint[] {\n    if (!prices?.length) return [];\n\n    let prev = head(prices)![2];\n    for (const item of prices) {\n      if (item[2] === prev) continue;\n\n      item !== last(prices)! && output.push(item);\n      prev = item[2];\n    }\n\n    return [head(prices)!, ...output, last(prices)!];\n  }\n\n  static findRangeByStatus(line: ChartPoint[], status: MarketStatus): ChartPoint[][] {\n    return compact(line.map((item, index) => {\n      return ChartPointHelper.getMarketStatus(item).map(pointStatus => {\n        return pointStatus === status ? [item, line[index + 1] || item] : null;\n      }).unwrap_or(null);\n    })) as ChartPoint[][];\n  }\n\n  /**\n   * returns value from 0 to 1 as percent of a position\n   */\n  static getPosition(value: number, { from, to }: DateRange, convert?: (i: number) => number): Option<number> {\n    try {\n      return Some((fn => fn((value - from) / (to - from)))(convert || ((i: number) => i)));\n    } catch (_) {\n      return None();\n    }\n  }\n\n  static shortNumber(n: number): string {\n    if (n < 1e3) return n.toString();\n    if (n >= 1e3 && n < 1e6) return +(n / 1e3).toFixed(1) + 'K';\n    if (n >= 1e6 && n < 1e9) return +(n / 1e6).toFixed(1) + 'M';\n    if (n >= 1e9 && n < 1e12) return +(n / 1e9).toFixed(1) + 'B';\n    if (n >= 1e12) return +(n / 1e12).toFixed(1) + 'T';\n\n    return '-';\n  }\n}\n\n\nexport class ChartPainter extends ChartBase {\n  get nativeElement(): HTMLElement {\n    throw new Error('Method not implemented.');\n  }\n\n  render(args?: any): void {\n    throw new Error('Method not implemented.');\n  }\n\n  drawCircle(x: number, y: number, radius: number): void {\n    this.ctx.if_some(ctx => {\n      ctx.beginPath();\n      ctx.arc(x, y, radius, 0, 2 * Math.PI);\n      ctx.fill();\n    });\n  }\n\n  drawTriangle(x: number, y: number, size: number): void {\n    this.ctx.if_some(ctx => {\n      ctx.beginPath();\n      ctx.moveTo(x + size / 2, y);\n      ctx.lineTo(x, y + size);\n      ctx.lineTo(x + size, y + size);\n      ctx.fill();\n    });\n  }\n\n  drawPlus(x: number, y: number, size: number): void {\n    this.ctx.if_some(ctx => {\n      ctx.beginPath();\n      ctx.fillRect(x, y + size * .28, size, size * .42);\n      ctx.fillRect(x + size * .28, y, size * .42, size);\n    });\n  }\n\n  drawStar(cx: any, cy: any, spikes: any, outerRadius: any, innerRadius: any) {\n    this.ctx.if_some(ctx => {\n      let rot = Math.PI / 2 * 3;\n      let x = cx;\n      let y = cy;\n      const step = Math.PI / spikes;\n\n      ctx.beginPath();\n      ctx.moveTo(cx, cy - outerRadius);\n      for (let i: any = 0; i < spikes; i++) {\n        x = cx + Math.cos(rot) * outerRadius;\n        y = cy + Math.sin(rot) * outerRadius;\n        ctx.lineTo(x, y);\n        rot += step;\n\n        x = cx + Math.cos(rot) * innerRadius;\n        y = cy + Math.sin(rot) * innerRadius;\n        ctx.lineTo(x, y);\n        rot += step;\n      }\n\n      ctx.lineTo(cx, cy - outerRadius);\n      ctx.fill();\n    });\n  }\n}\n","import { compact, get } from 'lodash';\nimport { ChartPoint, DateRange } from '../entities/chart-entities';\nimport { Option, OptionUtils } from '@suntech-innovation/option';\nimport { MarketStatus } from '../../../entities';\n\n/**\n * Safe version of ChartHelper methods using Option<T>\n * This demonstrates how to replace unsafe operations with safe Option-based ones\n */\nexport class ChartSafeHelper {\n  /**\n   * Safe version of findClosesDatePoints - replaces unsafe array access\n   */\n  static findClosesDatePoints(line: ChartPoint[], range: DateRange): Option<DateRange> {\n    const fromIndex = this.findClosestIndex(line.map(i => i[0]), range.from);\n    const toIndex = this.findClosestIndex(line.map(i => i[0]), range.to);\n    \n    const fromDate = OptionUtils.at(line, fromIndex).map(point => point[0]);\n    const toDate = OptionUtils.at(line, toIndex === fromIndex ? toIndex + 1 : toIndex).map(point => point[0]);\n\n    return OptionUtils.all([fromDate, toDate]).map(([from, to]) => ({ from, to }));\n  }\n\n  /**\n   * Safe version of findClosestIndex - returns Option instead of null\n   */\n  static findClosestIndex(line: number[], input: number): number {\n    const firstElement = OptionUtils.head(line).unwrap_or(input);\n    const lastElement = OptionUtils.last(line).unwrap_or(input);\n\n    if (input < firstElement) return 0;\n    if (input > lastElement) return line.length - 1;\n\n    for (let i = 0; i < line.length; i++) {\n      const curr = line[i];\n      const next = OptionUtils.at(line, i + 1);\n\n      // If no price and we already have some buffer with prices\n      if (line[i + 25_000] < input) {\n        i = i + 25_000 - 1;\n        continue;\n      }\n\n      if (input === curr || line.length === 1) {\n        return i;\n      }\n\n      if (input > curr) {\n        const nextValue = next.unwrap_or(curr);\n        if (input < nextValue) {\n          return nextValue - input >= input - curr ? i : i + 1;\n        }\n      }\n    }\n\n    return 0; // Safe default instead of null\n  }\n\n  /**\n   * Safe array head operation\n   */\n  static safeHead<T>(array: T[]): Option<T> {\n    return OptionUtils.head(array);\n  }\n\n  /**\n   * Safe array last operation  \n   */\n  static safeLast<T>(array: T[]): Option<T> {\n    return OptionUtils.last(array);\n  }\n\n  /**\n   * Safe property access using Option\n   */\n  static safeGet<T>(obj: unknown, path: string | string[]): Option<T> {\n    return OptionUtils.try_catch(() => get(obj, path) as T)\n      .filter(value => value !== undefined);\n  }\n\n  /**\n   * Safe price range calculation\n   */\n  static setPaddingsForPriceSafe(range: { from?: number; to?: number }): Option<DateRange> {\n    const fromOpt = Option.from(range.from);\n    const toOpt = Option.from(range.to);\n\n    return OptionUtils.all([fromOpt, toOpt])\n      .and_then(([from, to]) => {\n        return OptionUtils.try_catch(() => {\n          const dp = Math.max(\n            ...[from, to].map(i => {\n              const str = i.toString();\n\n              return str.includes('.') ? str.split('.')[1].length : 0;\n            })\n          ) + 1;\n          \n          const average = Math.abs((from + to) / 2);\n          const offset = Math.max(average * 0.01, 1);\n\n          return {\n            from: from + offset,\n            to: to - offset,\n          };\n        });\n      });\n  }\n\n  /**\n   * Safe status compaction\n   */\n  static compactStatusesSafe(prices: ChartPoint[]): Option<ChartPoint[]> {\n    const firstPoint = OptionUtils.head(prices);\n    const lastPoint = OptionUtils.last(prices);\n\n    return OptionUtils.all([firstPoint, lastPoint])\n      .map(([first, last]) => {\n        const output: ChartPoint[] = [];\n        let prev = first[2];\n\n        for (const item of prices) {\n          if (item[2] === prev) continue;\n          \n          if (item !== last) {\n            output.push(item);\n          }\n          prev = item[2];\n        }\n\n        return [first, ...output, last];\n      });\n  }\n\n  /**\n   * Safe range finder by status\n   */\n  static findRangeByStatusSafe(line: ChartPoint[], status: MarketStatus): Option<ChartPoint[][]> {\n    if (line.length === 0) {\n      return Option.none();\n    }\n\n    const result = compact(line.map((item: ChartPoint, index: number) => {\n      // return item[2]\n      //   .filter(pointStatus => pointStatus === status)\n      //   .map(() => {\n      //     const nextItem = OptionUtils.at(line, index + 1).unwrap_or(item);\n      //     return [item, nextItem];\n      //   })\n\n      if (item[2].unwrap() === status) {\n        const nextItem = OptionUtils.at(line, index + 1).unwrap_or(item);\n\n        return [item, nextItem];\n      }\n\n      return null;\n    }));\n\n    return result.length > 0 ? Option.some(result as ChartPoint[][]) : Option.none();\n  }\n\n  /**\n   * Safe canvas context operations\n   */\n  static withCanvasContext<T>(\n    canvas: HTMLCanvasElement | null,\n    operation: (ctx: CanvasRenderingContext2D) => T\n  ): Option<T> {\n    return Option.from(canvas)\n      .and_then(c => Option.from(c.getContext('2d')))\n      .map(operation);\n  }\n\n  /**\n   * Safe DOM element operations\n   */\n  static withElement<T>(\n    elementId: string,\n    operation: (element: HTMLElement) => T\n  ): Option<T> {\n    return Option.from(document.getElementById(elementId))\n      .map(operation);\n  }\n\n  /**\n   * Safe numeric operations with bounds checking\n   */\n  static safeCalculate(\n    a: unknown,\n    b: unknown,\n    operation: (x: number, y: number) => number\n  ): Option<number> {\n    const numA = Option.from(a).filter(val => typeof val === 'number' && !isNaN(val)) as Option<number>;\n    const numB = Option.from(b).filter(val => typeof val === 'number' && !isNaN(val)) as Option<number>;\n\n    return OptionUtils.all([numA, numB])\n      .and_then(([x, y]) => {\n        return OptionUtils.try_catch(() => operation(x, y));\n      })\n      .filter(result => !isNaN(result));\n  }\n\n  /**\n   * Safe line filtering for date range\n   */\n  static filterLineForDateRangeSafe(line: ChartPoint[], range: DateRange): Option<ChartPoint[]> {\n    const fromOpt = Option.from(range.from);\n    const toOpt = Option.from(range.to);\n\n    return OptionUtils.all([fromOpt, toOpt])\n      .map(([from, to]) => {\n        return line.filter(([date]) => date >= from && date <= to);\n      });\n  }\n\n  /**\n   * Safe array operations with error handling\n   */\n  static processArraySafe<T, U>(\n    array: T[],\n    processor: (item: T, index: number) => U | null | undefined\n  ): U[] {\n    return array\n      .map((item, index) => Option.from(processor(item, index)))\n      .filter(opt => opt.is_some())\n      .map(opt => opt.unwrap());\n  }\n\n  /**\n   * Example of safe bet states processing\n   */\n  static processBetStatesSafe(betStates: unknown[] | undefined): {\n    firstState: Option<unknown>;\n    lastState: Option<unknown>;\n    validStates: unknown[];\n  } {\n    const states = betStates || [];\n    \n    return {\n      firstState: OptionUtils.head(states),\n      lastState: OptionUtils.last(states),\n      validStates: this.processArraySafe(states, (state) => {\n        // Validate state has required properties\n        return Option.from(state)\n          .filter(s => typeof s === 'object' && s !== null)\n          .filter(s => 'time' in (s as object))\n          .unwrap_or(null);\n      }),\n    };\n  }\n\n  /**\n   * Safe position calculation using Option pattern\n   * Returns value from 0 to 1 as percent of position\n   * Replaces unsafe try-catch with explicit Option handling\n   */\n  static getPositionSafe(\n    value: number,\n    range: DateRange,\n    convert?: (i: number) => number\n  ): Option<number> {\n    const valueOpt = Option.from(value).filter(v => typeof v === 'number' && !isNaN(v));\n    const fromOpt = Option.from(range.from).filter(v => typeof v === 'number' && !isNaN(v));\n    const toOpt = Option.from(range.to).filter(v => typeof v === 'number' && !isNaN(v));\n\n    return OptionUtils.all([valueOpt, fromOpt, toOpt])\n      .and_then(([val, from, to]) => {\n        // Avoid division by zero\n        if (to === from) {\n          return Option.none<number>();\n        }\n\n        const position = (val - from) / (to - from);\n        \n        // Apply conversion function if provided\n        const convertFn = convert || ((i: number) => i);\n        \n        return OptionUtils.try_catch(() => convertFn(position))\n          .filter(result => typeof result === 'number' && !isNaN(result));\n      });\n  }\n\n  /**\n   * Safe position calculation with default fallback\n   * Compatible with existing code that expects a number return\n   */\n  static getPosition(value: number, range: DateRange, convert?: (i: number) => number): number {\n    return this.getPositionSafe(value, range, convert).unwrap_or(0);\n  }\n\n  /**\n   * Safe short number formatting\n   * Replaces unsafe string operations with Option-based approach\n   */\n  static shortNumberSafe(n: unknown): Option<string> {\n    return Option.from(n)\n      .filter(val => typeof val === 'number' && !isNaN(val) && isFinite(val))\n      .map(num => {\n        const n = num as number;\n        if (n < 1e3) return n.toString();\n        if (n >= 1e3 && n < 1e6) return +(n / 1e3).toFixed(1) + 'K';\n        if (n >= 1e6 && n < 1e9) return +(n / 1e6).toFixed(1) + 'M';\n        if (n >= 1e9 && n < 1e12) return +(n / 1e9).toFixed(1) + 'B';\n        if (n >= 1e12) return +(n / 1e12).toFixed(1) + 'T';\n\n        return n.toString();\n      });\n  }\n\n  /**\n   * Safe grid step calculation\n   * Returns None if calculation is invalid\n   */\n  static getGridStepSafe(\n    range: DateRange,\n    available: number[] = [1, 2, 5],\n    limit = 10\n  ): Option<number> {\n    const fromOpt = Option.from(range.from).filter(v => typeof v === 'number' && !isNaN(v));\n    const toOpt = Option.from(range.to).filter(v => typeof v === 'number' && !isNaN(v));\n\n    return OptionUtils.all([fromOpt, toOpt])\n      .and_then(([from, to]) => {\n        const [sortedFrom, sortedTo] = [from, to].sort((a, b) => a - b);\n        \n        if (sortedTo <= sortedFrom) {\n          return Option.none<number>();\n        }\n\n        const getNumOfLines = (step: number): number => {\n          let res = 0;\n          while (sortedTo - step * res > sortedFrom && res < limit) res += 1;\n\n          return res;\n        };\n\n        const getDp = (input: number): number => {\n          const str = input.toString();\n\n          return str.includes('.') ? str.split('.')[1].length : 0;\n        };\n\n        const getStep = (dp: number): Option<number> => {\n          for (const num of available) {\n            const step = Number(String('1e-' + dp).replace('--', '+')) * num;\n            const lines = getNumOfLines(step);\n\n            if (lines < limit) return Option.some(step);\n          }\n\n          return dp > 0 ? getStep(dp - 1) : Option.none<number>();\n        };\n\n        return getStep(getDp(sortedTo) + 1);\n      });\n  }\n\n  /**\n   * Safe bounds checking for chart coordinates\n   */\n  static isInBounds(\n    x: number,\n    y: number,\n    bounds: { width: number; height: number }\n  ): Option<{ x: number; y: number }> {\n    const xOpt = Option.from(x).filter(v => typeof v === 'number' && !isNaN(v) && v >= 0 && v <= bounds.width);\n    const yOpt = Option.from(y).filter(v => typeof v === 'number' && !isNaN(v) && v >= 0 && v <= bounds.height);\n\n    return OptionUtils.all([xOpt, yOpt]).map(([validX, validY]) => ({ x: validX, y: validY }));\n  }\n\n  /**\n   * Safe color validation and normalization\n   */\n  static validateColor(color: unknown): Option<string> {\n    return Option.from(color)\n      .filter(c => typeof c === 'string')\n      .map(c => (c as string).trim())\n      .filter(c => c.length > 0)\n      .filter(c => {\n        // Basic color validation (hex, rgb, rgba, named colors)\n        const hexPattern = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n        const rgbPattern = /^rgb\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)$/;\n        const rgbaPattern = /^rgba\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*[\\d.]+\\s*\\)$/;\n        const namedColors = [\n          'red', 'blue', 'green', 'black', 'white', 'yellow', 'purple', 'orange', 'pink', 'brown', 'gray', 'grey',\n        ];\n        \n        return hexPattern.test(c) || rgbPattern.test(c) || rgbaPattern.test(c) || namedColors.includes(c.toLowerCase());\n      });\n  }\n\n  /**\n   * Safe timestamp validation and conversion\n   */\n  static validateTimestamp(timestamp: unknown): Option<number> {\n    return Option.from(timestamp)\n      .filter(t => typeof t === 'number' && !isNaN(t) && isFinite(t))\n      .map(t => t as number)\n      .filter(t => t > 0) // Positive timestamp\n      .filter(t => t < Date.now() + 365 * 24 * 60 * 60 * 1000); // Not more than 1 year in future\n  }\n\n  /**\n   * Safe chart point validation\n   */\n  static validateChartPoint(point: unknown): Option<ChartPoint> {\n    return Option.from(point)\n      .filter(p => Array.isArray(p) && p.length >= 2)\n      .and_then(p => {\n        const [date, price, ...rest] = p as any[];\n        const dateOpt = this.validateTimestamp(date);\n        const priceOpt = Option.from(price).filter(pr => typeof pr === 'number' && !isNaN(pr));\n        \n        return OptionUtils.all([dateOpt, priceOpt]).map(([validDate, validPrice]: number[]) => {\n          const result = [validDate, validPrice];\n\n          if (rest.length > 0) {\n            result.push(rest[0]); // Include market status if present\n          }\n\n          return result as ChartPoint;\n        });\n      });\n  }\n}","import { clone } from 'lodash';\nimport { Duration } from 'luxon';\nimport { ChartRangeConfig, DateRange } from '../entities/chart-entities';\n\n\nexport class ChartDateParams {\n  // TODO: Need to find a better place\n  static readonly font =\n    '24px -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\"';\n  static readonly dateAvailablePeriods = [\n    Duration.fromObject({ seconds: 10 }).toMillis(),\n    Duration.fromObject({ seconds: 30 }).toMillis(),\n    Duration.fromObject({ minutes: 1 }).toMillis(),\n    Duration.fromObject({ minutes: 5 }).toMillis(),\n    Duration.fromObject({ minutes: 15 }).toMillis(),\n    Duration.fromObject({ minutes: 30 }).toMillis(),\n    Duration.fromObject({ hours: 1 }).toMillis(),\n  ];\n\n  private lastApplied = this.range;\n\n  constructor(\n    private readonly range: ChartRangeConfig,\n  ) { }\n\n  get origin(): ChartRangeConfig {\n    return clone(this.range);\n  }\n\n  applyRange(config: Partial<ChartRangeConfig>): void {\n    this.lastApplied = { ...this.lastApplied, ...config };\n  }\n\n  getActualRange(): ChartRangeConfig {\n    return clone(this.lastApplied || this.range);\n  }\n\n  isInOriginRange({ from, to }: DateRange): boolean {\n    return from >= this.origin.date.from && to <= this.origin.date.to;\n  }\n}\n","\nimport { ChartRangeConfig } from '../entities/chart-entities';\nimport { CatchError } from './decorators';\nimport { isEqual, merge } from 'lodash';\n\n\nexport interface ScaleConfig {\n  offset: number;\n  position: number;\n  allowNegative: boolean;\n}\nexport class ChartScaleUtil {\n  #state: ScaleConfig = {\n    offset: 0,\n    position: 0,\n    allowNegative: false,\n  }\n\n  constructor(private changeState: (state: ScaleConfig) => void, scaleConfig?: Partial<ScaleConfig>) {\n    if (scaleConfig) {\n      merge(this.#state, scaleConfig);\n    }\n  }\n\n  get position(): number {\n    return this.#state.position;\n  }\n\n  get allowNegative(): boolean {\n    return this.#state.allowNegative;\n  }\n\n  get offset(): number {\n    return this.#state.offset;\n  }\n\n  set position(value: number) {\n    this.#state.position = value;\n  }\n\n  set config(config: Partial<ScaleConfig>) {\n  if (!isEqual(this.#state, config)) {\n      merge(this.#state, config);\n      this.changeState(this.#state);\n    }\n  }\n\n  @CatchError({ output: null })\n  getActualRange(range: ChartRangeConfig): ChartRangeConfig {\n    const diff = (range.price.from - range.price.to) / 2;\n    this.#state.offset = Math.min(diff - diff * .1, this.offset);\n\n    return {\n      date: range.date,\n      price: {\n        from: range.price.from - this.offset + this.position,\n        to: this.allowNegative\n          ? range.price.to + this.offset + this.position\n          : Math.max(range.price.to + this.offset + this.position, 0),\n      },\n    };\n  }\n\n  change(step: number) {\n    this.#state.offset += step;\n    this.changeState(this.#state);\n  }\n\n  setPosition(position: number) {\n    this.#state.position = position;\n    this.changeState(this.#state);\n  }\n\n  resetScale() {\n    this.#state.position = 0;\n    this.#state.offset = 0;\n    this.changeState(this.#state);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { head, isNull, isNumber } from 'lodash';\nimport { ChartPoint, ChartPointHelper, ChartRangeConfig, DateRange } from '../entities/chart-entities';\nimport { ChartHelper } from '../utils';\nimport { None, Option, Some } from '@suntech-innovation/option';\nimport { ChartLineComponent } from '../components/chart-line/chart-line.component';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ChartConfigService {\n  configurator(linesRef: Pick<ChartLineComponent, 'line'>[]): (range: Option<DateRange>) => ChartRangeConfig {\n    return (range: Option<DateRange>) => {\n      const getClosesPoints = (line: ChartPoint[]): ChartPoint[] => {\n        return ChartHelper.filterLineForDateRange(\n          line,\n          ChartHelper.findClosesDatePoints(line, range.unwrap_or({ from: 0, to: 1 }))\n        ).map(([_, ...rest]) => [null, ...rest] as any as ChartPoint);\n      };\n\n      const common = linesRef.filter(({ line }) => line()?.length > 0).reduce((acc, ref) => {\n        let line = range.map_or(ref.line(), range => ChartHelper.filterLineForDateRange(ref.line(), range));\n\n        // In case if we don't have any dots in range we'll try to get the nearest price\n        if (!line?.length) line = range.map_or(line, () => getClosesPoints(ref.line()));\n\n        const { date, price } = ((c: ChartRangeConfig) => {\n          const { getDate, getPrice } = ChartPointHelper;\n          // This part exists to set up an initial value\n          if (isNull(c.price.from) && isNull(c.price.to)) {\n            try {\n              const result = Option.from(\n                [...ref.line()]\n                  .filter(j => getDate(j) < getDate(head(line)!))\n                  .reverse()\n                  .find((j) => getPrice(j).is_some())\n              );\n\n              return result\n                .map(([_, lastPrice]) => ({\n                  date: c.date,\n                  price: { from: lastPrice.unwrap(), to: lastPrice.unwrap() } }\n                ))\n                .unwrap_or(c);\n            } catch (e) {\n              return c;\n            }\n          }\n\n          return c;\n        })(this.getRanges(line));\n\n        if (isNumber(price.from) || isNumber(price.to)) {\n          acc.price = Some(acc.price.map_or(price, ({ from, to }) => ({\n            from: Math.max(from, price.from),\n            to: Math.min(to, price.to),\n          })));\n        }\n        if (isNumber(date.from) || isNumber(date.to)) {\n          acc.date = Some(acc.date.map_or(date, ({ from, to }) => ({\n            from: Math.min(from, date.from),\n            to: Math.max(to, date.to),\n          })));\n        }\n\n        return acc;\n      }, { date: range, price: None<DateRange>() });\n\n      return {\n        date: ChartHelper.preventSameDate(common.date.unwrap_or({ from: Date.now(), to: Date.now() })),\n        price: ChartHelper.setPaddingsForPrice(common.price.unwrap_or({ from: 0, to: 0 })),\n      };\n    };\n  }\n\n  getRanges(line: ChartPoint[]): ChartRangeConfig {\n    return {\n      date: this.getDateRange(line),\n      price: this.getPriceRange(line),\n    };\n  }\n\n  /**\n   * Returns data range between first and last point\n   */\n  getDateRange(line: ChartPoint[], range: DateRange<number | null> = { from: null, to: null }): DateRange {\n    line?.forEach(([date]) => {\n      if (range.from === null || date < range.from) range.from = date;\n      if (range.to === null || date > range.to) range.to = date;\n    });\n\n    return range as DateRange;\n  }\n\n  /**\n   * Returns price range for given back/lay line\n   */\n  getPriceRange(line: ChartPoint[], range: DateRange<number | null> = { from: null, to: null }): DateRange {\n    line?.forEach(([_, price]) => {\n      price.if_some(value => {\n        if (range.from === null || value > range.from) range.from = value;\n        if (range.to === null || value < range.to) range.to = value;\n      });\n    });\n\n    return range as DateRange;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { head, last } from 'lodash';\nimport { ChartOffset, ChartPoint, ChartPointHelper, ChartRangeConfig, DateRange } from '../entities/chart-entities';\nimport { ChartHelper } from '../utils/chart.helper';\nimport { ChartDateParams } from '../utils/chart-date-params';\nimport { ChartConfigService } from './chart-configurator.service';\nimport { CatchError } from '../utils/decorators';\nimport { ChartSafeHelper } from '../utils/chart-safe.helper';\nimport { Option } from '@suntech-innovation/option';\nimport { PriceChartBet } from '../../../entities';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ChartService {\n  dateParams!: ChartDateParams;\n  configurator = this.configService.configurator.bind(this.configService);\n\n  constructor(\n    private configService: ChartConfigService,\n  ) { }\n\n  // position converter\n  converter = (i: number) => i;\n\n  getPricePosition(value: number, range: DateRange) {\n    return ChartSafeHelper.getPosition(value, range, this.converter);\n  }\n\n  getGridStep(range: DateRange, available = [1, 2, 5], limit = 10): number {\n    const [from, to] = [range.from, range.to].sort((a, b) => a - b);\n    const getNumOfLines = (step: number, res = 0) => {\n      while (to - step * res > from && res < limit) res += 1;\n\n      return res;\n    };\n    const getDp = (input: number) => {\n      return (str => str.includes('.') ? str.split('.')[1].length : 0)(input.toString());\n    };\n\n    const getStep = (dp: number): number => {\n      for (const num of available) {\n        const step = Number(String('1e-' + dp).replace('--', '+')) * num;\n        const lines = getNumOfLines(step);\n\n        if (lines < limit) return step;\n      }\n\n      return getStep(dp - 1);\n    };\n\n    return getStep(getDp(to) + 1);\n  }\n\n  getIndexByOffset(offset: number, line: number[], dateRange = this.dateParams.getActualRange().date): number {\n    const range = dateRange.to - dateRange.from;\n    const dateOffset = offset * range;\n\n    return ChartHelper.findClosestIndex(line, dateRange.from + dateOffset);\n  }\n\n  @CatchError({ output: { right: 0, left: 0 } })\n  getOffsetByDateRange({ from, to }: DateRange): { right: number; left: number } {\n    const { date } = this.dateParams.origin;\n    const range = date.to - date.from;\n    const getProportion = (value: number) => (value - date.from) / range;\n\n    return { left: getProportion(from), right: 1 - getProportion(to) };\n  }\n\n  getDateRangeByOffset({ right, left }: ChartOffset): DateRange {\n    const { date } = this.dateParams.origin;\n    const range = date.to - date.from;\n\n    return {\n      from: new Date(date.from + left * range).getTime(),\n      to: new Date(date.to - right * range).getTime(),\n    };\n  }\n\n  expandRangeConfigWithBets(\n    cb: (range: Option<DateRange>) => ChartRangeConfig,\n    bets: Pick<PriceChartBet, 'd_from' | 'd_to' | 'betStates'>[],\n  ): (range: Option<DateRange>) => ChartRangeConfig {\n    const sum = ({ from, to }: DateRange) => from + to;\n\n    return (range: Option<DateRange>) => {\n      const prices = range.map(({ from, to }) => {\n        return bets\n          .filter(b => b.d_to.valueOf() >= from && b.d_from.valueOf() <= to)\n          .flatMap(i => i.betStates)\n          .map(i => i.price)\n          .sort((a, b) => b - a);\n      }).unwrap_or([]);\n\n      const priceRange = ChartHelper.setPaddingsForPrice({\n        from: head(prices), // e.g 15\n        to: last(prices), // e.g 10\n      });\n\n      return ((result: ChartRangeConfig) => {\n        return {\n          date: result.date,\n          // When no lines (1, -1) and we have bet prices - return bet prices\n          // otherwise we are looking for min/max values from both groups\n          price: sum(result.price) === 0 && sum(priceRange) > 0\n            ? priceRange\n            : {\n              from: Math.max(result.price.from || priceRange.from, priceRange.from || result.price.from),\n              to: Math.min(result.price.to || priceRange.to, priceRange.to || result.price.to),\n            },\n        };\n      })(cb(range));\n    };\n  }\n\n  chunkLine(line: ChartPoint[]): ChartPoint[][] {\n    const { getPrice } = ChartPointHelper;\n    const isNullable = (i: number | null | undefined) => i == null || isNaN(i);\n\n    line = line.reduce((acc: ChartPoint[], curr, index) => {\n      if (Option.from(line[index + 1])\n        .and_then(value => getPrice(value).filter(isNullable))\n        .and_then(() => getPrice(curr).filter(isNullable))\n        .is_some()) {\n        return acc;\n      }\n\n      acc.push(curr);\n\n      return acc;\n    }, []);\n\n    return line.reduce((acc: any, i, index) => {\n      // If no price and we already have some buffer with prices\n      if (getPrice(i).map_or(false, isNaN) && acc.buffer.length) {\n        acc.result.push(acc.buffer);\n        acc.buffer = [];\n      }\n      // If price exists\n      if (getPrice(i).filter(price => !isNaN(price)).is_some()) acc.buffer.push(i);\n      // If the list is done, and we have a buffer with prices\n      if (index === line.length - 1 && acc.buffer.length) {\n        acc.result.push(acc.buffer);\n        acc.buffer = [];\n      }\n\n      return acc;\n    }, { result: [] as ChartPoint[][], buffer: [] as ChartPoint[] })?.result || [];\n  }}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  model,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n} from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { fromEvent, Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\nimport { KeyValue, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { Decimal } from 'decimal.js';\nimport { ChartPoint, ChartRangeConfig } from '../../entities/chart-entities';\nimport { ChartCursorComponent } from './components/chart-cursor/chart-cursor.component';\nimport { ChartService } from '../../services/chart.service';\nimport { findIndex } from '../../utils/operators';\nimport { ChartBase } from '../../base/chart.base';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { ChartCursorConfig } from './chart-cursors.entities';\nimport { ChartHelper, getLineDates } from '../../utils/chart.helper';\nimport { OptionUtils } from '@suntech-innovation/option';\nimport { ChartSafeHelper } from '../../utils/chart-safe.helper';\n\n\n@Component({\n  selector: 'app-chart-cursors',\n  templateUrl: './chart-cursors.component.html',\n  styleUrls: ['./chart-cursors.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    NgClass,\n    NgIf,\n    NgForOf,\n  ],\n})\nexport class ChartCursorsComponent extends ChartBase implements OnInit, OnDestroy {\n  @Input({ required: true }) line!: ChartPoint[];\n  @Output() positionChanged = new EventEmitter<number>();\n  @Output() statsMouseOver = new EventEmitter<void>();\n\n  @ContentChildren(ChartCursorComponent) cursorsRef!: QueryList<ChartCursorComponent>;\n\n  readonly id = 'cursors_'.concat(Decimal.random(5).toString());\n  positions: Dictionary<number> = {};\n  hovered!: KeyValue<string, number>;\n  selected = model<number>();\n\n  private onDestroy$ = new Subject<void>();\n\n  constructor(\n    private elRef: ElementRef,\n    private chartService: ChartService,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n  get range(): ChartRangeConfig {\n    return this.chartService.dateParams.getActualRange();\n  }\n\n  @SetCanvasSize()\n  render(dateRange = this.range.date): void {\n    this.clearHolst();\n    this.cdRef.detectChanges();\n\n    this.cursorsRef.forEach((ref, index) => {\n      const x = ChartSafeHelper.getPosition(ref.config.date, dateRange);\n      const { width } = this.sizes;\n      this.drawCursor(ref.config, width * x);\n      this.positions[index] = width * x;\n    });\n\n    this.cdRef.detectChanges();\n  }\n\n  ngOnInit(): void {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n  }\n\n  ngOnDestroy(): void {\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n\n  drawCursor({ color }: ChartCursorConfig, x: number): void {\n    const ctx = this.ctx.expect('DrawCursor. ctx should be defined');\n\n    ctx.beginPath();\n    ctx.strokeStyle = color || '';\n    ctx.lineWidth = 2;\n    ctx.moveTo(x, 0);\n    ctx.lineTo(x, this.sizes.height * 2);\n    ctx.stroke();\n  }\n\n  startMoving(position: number): void {\n    const { x: paddingLeft } = this.elRef.nativeElement.getBoundingClientRect();\n\n    fromEvent<MouseEvent>(this.elRef.nativeElement, 'mousemove').pipe(\n      skip(1), // Skip first event to prevent moving on regular click event\n      findIndex((offset) => this.findIndexByOffset(offset * 2), paddingLeft),\n      takeUntil(this.onDestroy$),\n      takeUntil(fromEvent(document, 'mouseup')),\n    ).subscribe({\n      next: (index: number) => {\n        const [date]: ChartPoint = this.line[index];\n        this.cursorsRef.get(position)!.config.date = date;\n        this.changePositionForHovered(date, position);\n      },\n      complete: () => {\n        this.render();\n        this.cursorsRef.get(position)?.move.emit(this.findIndexByOffset(this.positions[position]));\n        this.positionChanged.emit(position);\n        this.hovered = null!;\n        this.cdRef.detectChanges();\n      },\n    });\n  }\n\n  changePositionForHovered(date: number, position: number): void {\n    ChartHelper.getPosition(date, this.range.date).if_some(x => {\n      const label = this.cursorsRef.get(position)!.config?.label;\n      this.hovered = { key: label || (position + 1).toString(), value: x * this.sizes.width };\n      this.cdRef.detectChanges();\n    });\n  }\n\n  findIndexByOffset(offset: number): number {\n    return this.chartService.getIndexByOffset(offset / this.sizes.width, getLineDates(this.line));\n  }\n\n  selectLabel(index: number): void {\n    this.selected.update(selected => selected === index ? undefined : index);\n  }\n\n  moveCursor(offset: number, selected = this.selected()): void {\n    if (typeof selected !== 'number') return;\n\n    const cursors = this.cursorsRef.filter(({ config }) => !config.freeze);\n    const occupied = ((dates) => cursors.map(\n      ({ config }) => ChartHelper.findClosestIndex(dates, config.date)\n    ))(getLineDates(this.line));\n\n    const ref = this.cursorsRef.get(selected)!;\n    const index = occupied[selected];\n    const getOffset = (input = 1): number => {\n      const value = input * offset;\n\n      return occupied.includes(index + value) ? getOffset(++input) : value;\n    };\n\n    ref!.move.emit(index + getOffset());\n\n    this.render();\n  }\n}\n","<div class=\"host\">\n  <canvas [id]=\"id\"></canvas>\n\n  <div class=\"label hovered\" *ngIf=\"hovered\" [style.left.px]=\"hovered.value / 2\">\n    {{ hovered.key }}\n  </div>\n\n  <ng-container *ngFor=\"let cursor of cursorsRef; let i = index\">\n    <div\n      class=\"label hover:cursor-pointer\"\n      *ngIf=\"cursor.config?.label\"\n      [ngClass]=\"cursor.config?.position\"\n      [class.selected]=\"selected() === i\"\n      [class.freeze]=\"cursor.config?.freeze\"\n      [style.background-color]=\"cursor.config?.labelBg\"\n      [style.color]=\"cursor.config?.fontColor\"\n      [style.left.px]=\"(positions[i] / 2)?.toFixed(0)\"\n      [title]=\"cursor.config?.hint || ''\"\n      (mousemove)=\"cursor.config?.freeze && statsMouseOver.emit()\"\n      (click)=\"!cursor.config?.freeze && selectLabel(i)\"\n      (mousedown)=\"!cursor.config?.freeze && startMoving(i); $event.stopPropagation()\"\n      (contextmenu)=\"$event.stopPropagation()\">\n      {{ cursor.config?.label || (i + 1) }}\n    </div>\n  </ng-container>\n</div>\n\n<ng-content hidden></ng-content>\n","import { DateTime } from 'luxon';\nimport { ChartCursorConfig } from './chart-cursors.entities';\n\n\nexport class ChartCursorsHelper {\n  static userCursor(cursors: DateTime[]): ChartCursorConfig[] {\n    return cursors.map((value, index) => ({\n      date: value?.toMillis(),\n      color: '#19f50d',\n      label: Number(index + 1).toString(),\n    }));\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit } from '@angular/core';\nimport { Decimal } from 'decimal.js';\nimport { DateTime } from 'luxon';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { ChartBase } from '../../base/chart.base';\nimport { ChartDateParams } from '../../utils/chart-date-params';\nimport { OptionUtils } from '@suntech-innovation/option';\n\n\nexport const DATE_AXIS_PADDING = 16;\n\n@Component({\n  selector: 'app-chart-date-markers',\n  template: '<canvas [id]=\"id\"></canvas>',\n  styleUrls: ['./chart-date-markers.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartDateMarkersComponent extends ChartBase implements OnInit {\n  readonly id = 'chart_date-markers'.concat(Decimal.random(5).toString());\n\n  constructor(\n    private elRef: ElementRef,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n\n  @SetCanvasSize()\n  render() {\n    this.ctx.if_some(ctx => ctx.font = ChartDateParams.font.replace(/\\d+px/g, '22px'));\n  }\n\n  ngOnInit(): void {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n    this.cdRef.detach();\n  }\n\n  drawDateLabel(x: number, ts: number): void {\n    const { width, height } = this.sizes;\n    const ctx = this.ctx.expect('Can\\'t draw date label, canvas is not initialized');\n\n    const text = DateTime.fromMillis(ts).toFormat('DD MMM y, HH:mm:ss.SSS');\n    const textParams = ctx.measureText(text);\n    const offset = textParams.width / 2;\n    const padding = { x: 16, y: 10 }; // Label Paddings\n    const labelWidth = textParams.width + (padding.x * 2);\n\n    this.clearHolst();\n    ctx.fillStyle = '#7d808a';\n    ctx.fillRect(\n      new Decimal(width * x - offset - padding.x)\n        .clamp(0, width - labelWidth)\n        .toNumber(),\n      height - DATE_AXIS_PADDING - textParams.actualBoundingBoxAscent - padding.y,\n      labelWidth,\n      textParams.actualBoundingBoxAscent + (padding.y * 2)\n    );\n    ctx.fillStyle = '#fff';\n    ctx.fillText(\n      text,\n      new Decimal((width * x) - offset)\n        .clamp(padding.x, width - textParams.width - padding.x)\n        .toNumber(),\n      height - DATE_AXIS_PADDING\n    );\n  }\n\n  clear() {\n    return this.clearHolst();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  ElementRef,\n  input,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport { Decimal } from 'decimal.js';\nimport { ChartLineStrategy, ChartPoint, ChartPointHelper, ChartRangeConfig } from '../../entities/chart-entities';\nimport { ChartService } from '../../services';\nimport { ChartBase } from '../../base/chart.base';\nimport { DateTime } from 'luxon';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ChartDateParams, ChartHelper, ChartSafeHelper, getLineDates, SetCanvasSize } from '../../utils';\nimport { None, Option } from '@suntech-innovation/option';\n\n\n@Component({\n  selector: 'app-chart-line',\n  template: '<canvas [id]=\"id\"></canvas>',\n  styleUrls: ['./../../base/chart.base.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartLineComponent extends ChartBase implements OnInit {\n  @Input() color = 'black';\n  @Input() dashed = false;\n  @Input() lineWidth = 4;\n  @Input() strategy = ChartLineStrategy.TILL_PRICE_CHANGED;\n  line = input<ChartPoint[]>([]);\n  lineDates = computed(() => getLineDates(this.line()));\n\n  readonly id = 'line_'.concat(Decimal.random(5).toString());\n\n  inputChanges$ = toObservable(this.line);\n\n  constructor(\n    private elRef: ElementRef,\n    private chartService: ChartService,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n  get isDrawLineTillPriceChanged(): boolean {\n    return this.strategy === ChartLineStrategy.TILL_PRICE_CHANGED;\n  }\n\n  @SetCanvasSize()\n  render({ date: dateRange, price: priceRange }: ChartRangeConfig): void {\n    const line = ChartHelper.filterLineForDateRange(this.line(), {\n      from: DateTime.fromMillis(dateRange.from).minus({ minute: 1 }).toMillis(),\n      to: DateTime.fromMillis(dateRange.to).plus({ minute: 1 }).toMillis(),\n    });\n\n    this.clearHolst();\n\n    if (line.length === 1) {\n      ChartPointHelper.getPrice(line[0]).if_some(price => {\n        this.drawOnePointChart(ChartSafeHelper.getPosition(price, priceRange));\n      });\n\n      return;\n    }\n\n    const drawer = this.drawer({ dateRange, priceRange });\n    this.chartService.chunkLine(line).forEach(\n      group => drawer.drawLine(group)\n    );\n  }\n\n  ngOnInit(): void {\n    this.cdRef.detectChanges();\n    this.canvasElem = Option.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => Option.from(el.getContext('2d')));\n    this.cdRef.detach();\n  }\n\n  drawer({ dateRange, priceRange }: { dateRange: any; priceRange: any }) {\n    return {\n      drawLine: (line: ChartPoint[]) => {\n        const ctx = this.ctx.expect('DrawLine. ctx should be defined');\n        const { width, height } = this.sizes;\n        const collection = new Map<number, number>();\n\n        let lay = None<number>(); // last Y\n\n        ctx.beginPath();\n        line.forEach(([date, price], index) => {\n          price.if_none(() => {\n            const next = Option.from(line.find(([_, price]) => price, index));\n            price = next.map(ChartPointHelper.getPrice).unwrap_or(None());\n          });\n\n          price.if_some((price) => {\n            const x = ChartSafeHelper.getPosition(date, dateRange);\n            const y = collection.get(price) || this.chartService.getPricePosition(price, priceRange);\n\n            lay\n              .if_none(() => ctx.moveTo(width * x, height * y))\n              .if_some((lay) => this.isDrawLineTillPriceChanged && ctx.lineTo(width * x, height * lay));\n\n            ctx.lineTo(width * x, height * y);\n\n            lay = Option.from(y);\n\n            collection.set(price, y);\n          });\n        });\n\n        this.dashed && ctx.setLineDash([3]);\n\n        ctx.lineWidth = this.lineWidth;\n        ctx.strokeStyle = this.color;\n        ctx.font = ChartDateParams.font;\n        ctx.stroke();\n      },\n    };\n  }\n\n  drawOnePointChart(y: number): void {\n    this.ctx.if_some(ctx => {\n      const { height, width } = this.sizes;\n\n      ctx.beginPath();\n      ctx.moveTo(0, height * y);\n      ctx.lineTo(width, height * y);\n      ctx.lineWidth = 4;\n      ctx.strokeStyle = this.color;\n      ctx.stroke();\n    });\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { ChartService } from '../../services/chart.service';\nimport { ChartPainter } from '../../utils/chart.helper';\nimport { ChartRangeConfig } from '../../entities/chart-entities';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { Subject } from 'rxjs';\nimport { ChartBase } from '../../base/chart.base';\nimport { Decimal } from 'decimal.js';\nimport { clone, uniqBy } from 'lodash';\nimport { ChartScaleUtil } from '../../utils/chart-scale.util';\nimport { ChartSafeHelper } from '../../utils/chart-safe.helper';\nimport { Option, OptionUtils } from '@suntech-innovation/option';\nimport { BetState, BetStateType, PriceChartBet } from '../../../../entities';\n\n\n@Component({\n  selector: 'app-chart-bets',\n  template: '<canvas [id]=\"id\"></canvas>',\n  styleUrls: ['./../../base/chart.base.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartBetsComponent extends ChartBase implements OnInit, OnDestroy {\n  readonly id = 'chart-bets_'.concat(Decimal.random(5).toString());\n\n  private onDestroy$ = new Subject<void>();\n  private painter = new ChartPainter();\n  private bets!: PriceChartBet[];\n  private plugins!: Map<any, any>;\n\n  expandChartConfigWithBets!: (bets: PriceChartBet[]) => void;\n\n  constructor(\n    private elRef: ElementRef,\n    private chartService: ChartService,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  get range(): ChartRangeConfig {\n    if (this.plugins.has(ChartScaleUtil)) {\n      return this.plugins.get(ChartScaleUtil).getActualRange(\n        this.chartService.dateParams.getActualRange()\n      );\n    }\n\n    return this.chartService.dateParams.getActualRange();\n  }\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n\n  ngOnInit(): void {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n    this.cdRef.detectChanges();\n    this.cdRef.detach();\n  }\n\n  ngOnDestroy(): void {\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n\n  registerPlugins(list: Map<any, any>) {\n    this.plugins = list;\n  }\n\n  @SetCanvasSize()\n  render(payload: Option<PriceChartBet[]>): void {\n    this.clearHolst();\n\n    const bets = payload.unwrap_or_else(() => this.bets || []);\n\n    bets && this.expandChartConfigWithBets(bets);\n\n    bets.forEach(bet => this.drawBet(bet, bet.side === 'Back' ? '#0f62b5' : '#b33071'));\n    this.bets = bets;\n  }\n\n  getFigureMethod(type: BetStateType): (x: number, y: number) => void {\n    const ctx = this.ctx.expect('Can\\'t draw figure, canvas is not initialized');\n\n    return (x: number, y: number) => {\n      switch (type) {\n        case BetStateType.Unknown:\n          return this.painter.drawStar.bind(this)(x, y, 6, 8, 16);\n        case BetStateType.PlacedNothingFilled:\n          return ctx.fillRect(x - 9, y - 9, 18, 18);\n        case BetStateType.PlacedPartiallyFilled:\n        case BetStateType.PlacedCompletelyFilled:\n        case BetStateType.FilledPartially:\n        case BetStateType.FilledCompletely:\n          return this.painter.drawCircle.bind(this)(x, y, 10);\n        case BetStateType.CancelledNothingFilled:\n          return this.painter.drawPlus.bind(this)(x - 10, y - 10, 20);\n        case BetStateType.CancelledPartiallyFilled:\n          ctx.translate(x, y);\n          ctx.rotate((Math.PI / 180) * 45);\n          this.painter.drawPlus.bind(this)(-10, -10, 20);\n          ctx.resetTransform();\n          break;\n        case BetStateType.StillLive:\n          return this.painter.drawTriangle.bind(this)(x - 13, y - 13, 26);\n        default:\n          return this.painter.drawStar.bind(this)(x, y, 6, 8, 16);\n      }\n    };\n  }\n\n  private drawBet(payload: PriceChartBet, color: string): void {\n    const { width, height } = this.sizes;\n    const ctx = this.ctx.expect('Can\\'t draw figure, canvas is not initialized');\n    const points = payload.betStates.map(\n      (state) => this.chartService.getPricePosition(state.price, this.range.price)\n    );\n    const getStateDate = (i: BetState) => i?.time.toMillis();\n    const drawLine = () => {\n      ctx.beginPath();\n      ctx.lineWidth = 8;\n\n      // Draw lines connecting all points\n      for (let i = 0; i < payload.betStates.length; i++) {\n        const x = ChartSafeHelper.getPosition(getStateDate(payload.betStates[i]), this.range.date) * width;\n        const y = points[i] * height;\n\n        if (i === 0) {\n          ctx.moveTo(x, y);\n        } else {\n          // Draw horizontal line to current x position at previous y\n          const prevY = points[i - 1] * height;\n          ctx.lineTo(x, prevY);\n          // Then draw vertical line to current y position\n          ctx.lineTo(x, y);\n        }\n      }\n\n      ctx.stroke();\n    };\n\n    ctx.strokeStyle = ctx.fillStyle = color;\n    payload.betStates.length > 1 && drawLine();\n\n    uniqBy(clone(payload.betStates).reverse(), 'time').forEach((state) => {\n      const position = {\n        x: ChartSafeHelper.getPosition(state.time.toMillis(), this.range.date),\n        y: this.chartService.getPricePosition(state.price, this.range.price),\n      };\n      this.getFigureMethod(state.type)(position.x * width, position.y * height);\n    });\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, input, OnInit } from '@angular/core';\nimport { Decimal } from 'decimal.js';\nimport { ChartBase } from '../../base/chart.base';\nimport { ChartService } from '../../services/chart.service';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { ChartRangeConfig, Timestamp } from '../../entities/chart-entities';\nimport { OptionUtils } from '@suntech-innovation/option';\nimport { ChartDateParams } from '../../utils/chart-date-params';\nimport { ChartHelper } from '../../utils/chart.helper';\nimport { cloneDeep, merge } from 'lodash';\n\n\nexport interface ChartDataset {\n  back: number;\n  lay: number;\n  lta: number;\n  ltp: number;\n  ml: number;\n  mtt: number;\n  rl: number;\n  rtt: number;\n  timestamp: Timestamp;\n  ts: number;\n}\nexport interface HistogramConfig {\n  currencySymbol?: boolean;\n  renderAxis?: boolean;\n  renderVolumes?: boolean;\n  width?: number;\n  volumesColor?: string;\n  color?: string;\n}\n\nconst DEFAULT_HISTOGRAM_CONFIG: Required<HistogramConfig> = {\n  currencySymbol: true,\n  renderAxis: true,\n  renderVolumes: true,\n  width: 6,\n  volumesColor: 'rgb(182,182,182)',\n  color: '#444'\n};\n\n@Component({\n  selector: 'app-chart-histogram',\n  template: '<canvas [id]=\"id\"></canvas>',\n  styleUrls: ['./chart-histogram.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartHistogramComponent extends ChartBase implements OnInit {\n  dataset = input.required<ChartDataset[]>();\n\n  #config: Required<HistogramConfig> = cloneDeep(DEFAULT_HISTOGRAM_CONFIG)\n\n  readonly id = 'histogram_'.concat(Decimal.random(5).toString());\n\n  constructor(\n    private elRef: ElementRef,\n    private chartService: ChartService,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  @Input()\n  set config(config: Partial<HistogramConfig>) {\n    this.#config = merge(this.#config, config) as Required<HistogramConfig>;\n  }\n\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n\n  @SetCanvasSize()\n  render(range: ChartRangeConfig) {\n    this.drawHistogram(range);\n  }\n\n  ngOnInit() {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n  }\n\n  drawHistogram({ date }: ChartRangeConfig) {\n    const { height, width } = this.sizes;\n    const result = this.dataset().filter(({ ts }) => ts >= date.from && ts <= date.to);\n    const max = Math.ceil(result.reduce((acc, { lta }) => Math.max(acc, lta), 0)) * 1.75;\n    const step = this.chartService.getGridStep({ from: 0, to: max });\n    let amount = max;\n\n    this.ctx.if_some((ctx) => {\n      if (this.#config.renderVolumes) {\n\n        ctx.fillStyle = this.#config.volumesColor;\n        result.forEach(({ ts, lta }) => {\n          const x = ChartHelper.getPosition(ts, date).unwrap_or(0);\n          const y = lta / max;\n\n          ctx.fillRect(x * width - 3, height - height * y, this.#config.width, height * y);\n        });\n      }\n      if (this.#config.renderAxis) {\n        ctx.fillStyle = this.#config.color;\n        ctx.font = ChartDateParams.font;\n        while (amount > 0) {\n          amount = new Decimal(amount).toNearest(step).minus(step).toNumber();\n          const y = ChartHelper.getPosition(amount, { from: max, to: 0 }).unwrap_or(0);\n          const text = `${this.#config.currencySymbol ? '£' : ''} ${ChartHelper.shortNumber(amount)}`;\n          const padding = ctx.measureText(text).width;\n          ctx.fillText(text, width - padding - 10, y * height - 10);\n        }\n      }\n    });\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, input, OnInit } from '@angular/core';\nimport { Decimal } from 'decimal.js';\nimport { cloneDeep, merge } from 'lodash';\nimport { OptionUtils } from '@suntech-innovation/option';\n\nimport { ChartBase } from '../../base/chart.base';\nimport { ChartService } from '../../services/chart.service';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { ChartRangeConfig, Timestamp } from '../../entities/chart-entities';\nimport { ChartDateParams } from '../../utils/chart-date-params';\nimport { ChartHelper } from '../../utils/chart.helper';\nimport { ChartDataset, HistogramConfig } from '../chart-histogram/chart-histogram.component';\nimport { NgStyle } from '@angular/common';\n\n\ntype VolumesConfig = Pick<HistogramConfig,\n  | 'currencySymbol'\n  | 'color'\n>\n\nconst DEFAULT_HISTOGRAM_CONFIG: Required<VolumesConfig> = {\n  currencySymbol: true,\n  color: '#444',\n};\n\n@Component({\n  selector: 'app-chart-volume-axis',\n  templateUrl: './chart-volume-axis.component.html',\n  styleUrls: ['./chart-volume-axis.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [NgStyle],\n})\nexport class ChartVolumeAxisComponent extends ChartBase implements OnInit {\n  dataset = input.required<ChartDataset[]>();\n\n  #config = cloneDeep(DEFAULT_HISTOGRAM_CONFIG)\n\n  readonly id = 'volume_axis_'.concat(Decimal.random(5).toString());\n\n  constructor(\n    private elRef: ElementRef,\n    private chartService: ChartService,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  @Input()\n  set config(config: Partial<HistogramConfig>) {\n    this.#config = merge(this.#config, config) as Required<HistogramConfig>;\n  }\n\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n\n  get color(): string {\n    return this.#config.color || '';\n  }\n\n  @SetCanvasSize()\n  render(range: ChartRangeConfig) {\n    this.drawHistogram(range);\n  }\n\n  ngOnInit() {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n  }\n\n  drawHistogram({ date }: ChartRangeConfig) {\n    const { height, width } = this.sizes;\n    const result = this.dataset().filter(({ ts }) => ts >= date.from && ts <= date.to);\n    const max = Math.ceil(result.reduce((acc, { lta }) => Math.max(acc, lta), 0)) * 1.75;\n    const step = this.chartService.getGridStep({ from: 0, to: max });\n    let amount = max;\n\n    this.ctx.if_some((ctx) => {\n      ctx.fillStyle = this.color;\n      ctx.font = ChartDateParams.font;\n      while (amount > 0) {\n        amount = new Decimal(amount).toNearest(step).minus(step).toNumber();\n        const text = `${this.#config.currencySymbol ? '£' : ''} ${ChartHelper.shortNumber(amount)}`;\n        const y = ChartHelper.getPosition(amount, { from: max, to: 0 }).unwrap_or(0);\n\n        // line\n        ctx.beginPath();\n        ctx.lineWidth = 3;\n        ctx.strokeStyle = '#e6e6e6';\n        ctx.moveTo(0, height * y);\n        ctx.lineTo(25, height * y);\n        ctx.stroke();\n\n        // amount\n        ctx.fillText(text, 20, y * height - 10);\n      }\n\n    });\n  }\n}\n","<canvas class=\"volumes\" [id]=\"id\"></canvas>\n<div class=\"volume-title\" [ngStyle]=\"{ color }\">Volume</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { Decimal } from 'decimal.js';\nimport { cloneDeep, merge } from 'lodash';\n\nimport { OptionUtils } from '@suntech-innovation/option';\n\nimport { ChartBase } from '../../base/chart.base';\nimport { ChartService } from '../../services/chart.service';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { ChartConfig, ChartRangeConfig } from '../../entities/chart-entities';\nimport { ChartDateParams } from '../../utils/chart-date-params';\nimport { intToShortString } from '../../../../helpers';\n\ntype PriceConfig = Pick<ChartConfig,\n  | 'hasHorizontalLines'\n  | 'priceAxisPosition'\n  | 'priceColor'\n  | 'minPriceStep'\n>\n\nconst DEFAULT_CONFIG: PriceConfig = {\n  hasHorizontalLines: true,\n  priceAxisPosition: 'right',\n  priceColor: '#444',\n};\n\n@Component({\n  selector: 'app-chart-price-axis',\n  templateUrl: './chart-price-axis.component.html',\n  styleUrls: ['./chart-price-axis.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule\n  ],\n  standalone: true,\n})\nexport class ChartPriceAxisComponent extends ChartBase implements OnInit {\n  #config = cloneDeep(DEFAULT_CONFIG);\n  #range!: ChartRangeConfig;\n\n  readonly id = 'prices_'.concat(Decimal.random(5).toString());\n\n  constructor(\n    private elRef: ElementRef,\n    private chartService: ChartService,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n\n  get priceColor(): string {\n    return this.#config.priceColor || '#444';\n  }\n\n  @Input()\n  set config(config: Partial<ChartConfig>) {\n    this.#config = merge(this.#config, config);\n    if (this.#range) this.render(this.#range);\n  }\n\n  @SetCanvasSize()\n  render(range: ChartRangeConfig) {\n    this.#range = range;\n    this.clearHolst();\n    this.renderPriceAxis(.01, range);\n  }\n\n  ngOnInit() {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n  }\n\n  renderPriceAxis(minStep: number, range: ChartRangeConfig): void {\n    const { price } = range;\n    const { width, height } = this.sizes;\n\n    let start = price.from, offset;\n\n    let step = Math.max(\n      this.chartService.getGridStep({ from: price.to, to: price.from }),\n      minStep,\n    );\n\n    if (this.#config.minPriceStep) step = Math.max(this.#config.minPriceStep, step);\n\n    start = new Decimal(start).toNearest(step).toNumber();\n    const dp = new Decimal(step).decimalPlaces();\n    const ctx = this.ctx.expect('Can\\'t draw price axis, canvas is not initialized');\n    const collection: [string, number][] = [\n      [intToShortString(start, dp), this.chartService.getPricePosition(start, price)],\n    ];\n\n    ctx.font = ChartDateParams.font;\n    ctx.fillStyle = this.priceColor;\n\n    while (start > price.to) {\n      start = new Decimal(start).minus(step).toNumber();\n      const y = this.chartService.getPricePosition(start, price);\n\n      if (y < 0 || y > 1) continue;\n\n      collection.push([intToShortString(start, dp), y]);\n    }\n\n    offset = width - 10 - Math.max(...collection.map(([i]) => ctx.measureText(i).width));\n\n    const render = (text: string, y: number) => {\n      ctx.beginPath();\n      ctx.strokeStyle = '#e6e6e6';\n      ctx.lineWidth = 3;\n      ctx.moveTo(width, height * y);\n      ctx.lineTo(width - 25, height * y);\n      ctx.stroke();\n\n      if (y * height < 30) return;\n      ctx.fillText(text, offset, height * y - 10);\n    };\n\n    collection.forEach(([text, y]) => render(text, y));\n  }\n}\n","<canvas class=\"prices\" [id]=\"id\"></canvas>\n<div class=\"price-title\" [ngStyle]=\"{ color: priceColor }\">Price</div>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, input } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\n\n@Component({\n  selector: 'app-chart-menu-item',\n  templateUrl: './chart-menu-item.component.html',\n  styleUrls: ['./chart-menu-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    NgClass,\n  ],\n})\nexport class ChartMenuItemComponent {\n  icon = input<string>('');\n  disabled = input(false, { transform: booleanAttribute });\n\n  constructor(public elRef: ElementRef) { }\n}\n","<button [disabled]=\"disabled()\">\n  @if (icon()) {\n    <span [ngClass]=\"'icon-'.concat(icon())\"></span>\n  }\n  <ng-content></ng-content>\n</button>\n\n<div class=\"sub-menu\">\n  <ng-content select=\"subMenu\"></ng-content>\n</div>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n} from '@angular/core';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ChartMenuItemComponent } from './components/chart-menu-item/chart-menu-item.component';\nimport { OptionUtils } from '@suntech-innovation/option';\n\n\n@Component({\n  selector: 'app-chart-menu',\n  templateUrl: './chart-menu.component.html',\n  styleUrls: ['./chart-menu.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartMenuComponent implements OnInit, AfterContentInit, OnDestroy {\n  @Output() clickOut = new EventEmitter<void>();\n  @ContentChildren(ChartMenuItemComponent) items?: QueryList<ChartMenuItemComponent>;\n\n  private onDestroy$ = new Subject<void>();\n\n  constructor(\n    private elRef: ElementRef,\n  ) { }\n\n  ngOnInit(): void {\n    fromEvent<MouseEvent>(document, 'click').pipe(\n      takeUntil(this.onDestroy$),\n    ).subscribe((event) => {\n      if (event.composedPath().includes(this.elRef.nativeElement)) return;\n      this.clickOut.emit();\n    });\n  }\n\n  ngAfterContentInit() {\n    OptionUtils.from(this.items).if_some(items => {\n      merge(...items.map(ref => fromEvent(ref.elRef.nativeElement, 'click'))).pipe(\n        takeUntil(this.onDestroy$),\n      ).subscribe(\n        () => this.clickOut.emit()\n      );\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { Decimal } from 'decimal.js';\n\nimport { ChartBase } from '../../base/chart.base';\nimport { compact } from 'lodash';\nimport {\n  ChantZoneFigure,\n  ChantZoneFigureKey,\n  ChantZoneFiguresStore,\n  ChartPoint,\n  ChartRangeConfig,\n  DateRange,\n} from '../../entities/chart-entities';\nimport { ChartService } from '../../services/chart.service';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { ChartHelper } from '../../utils/chart.helper';\nimport { ChartSafeHelper } from '../../utils/chart-safe.helper';\nimport { OptionUtils } from '@suntech-innovation/option';\nimport { MarketStatus } from '../../../../entities';\n\n\n@Component({\n  selector: 'app-chart-zones',\n  template: '<canvas [id]=\"id\"></canvas>',\n  styleUrls: ['./../../base/chart.base.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartZonesComponent extends ChartBase implements OnInit {\n  @Input({ required: true }) line!: ChartPoint[];\n\n  readonly id = 'chart-zone_'.concat(Decimal.random(5).toString());\n\n  private figures: ChantZoneFiguresStore = new Map();\n\n  constructor(\n    private elRef: ElementRef,\n    private service: ChartService,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    super();\n  }\n\n  get range(): ChartRangeConfig {\n    return this.service.dateParams.getActualRange();\n  }\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n\n  @SetCanvasSize()\n  render({ date: dateRange } = this.range): void {\n    this.clearHolst();\n\n    this.figures.forEach(figure => this.draw(figure, dateRange));\n\n    const line = ChartHelper.compactStatuses(this.line);\n    ([\n      [MarketStatus.BALL_RUNNING, 'rgba(253, 9, 0, .1)'],\n      [MarketStatus.SUSPENDED, 'rgba(253, 9, 0, .05)'],\n      [MarketStatus.CLOSED, 'rgba(103, 103, 103, .08)'],\n      [MarketStatus.SAFE, 'rgba(43, 185, 255, 0.15)'],\n      [MarketStatus.READY, 'rgba(248, 43, 255, .05)'],\n    ] as [MarketStatus, string][]).forEach(([status, color]) => {\n      this.ctx.if_some(ctx => ctx.fillStyle = color);\n      compact(ChartHelper.findRangeByStatus(line, status))\n        .filter(([start, end]) => start && end)\n        .forEach(([start, end]) => this.draw({ from: start[0], to: end[0] }, dateRange));\n    });\n  }\n\n  ngOnInit(): void {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n  }\n\n  /**\n   * Takes a color and from&to points to draw a zone\n   */\n  setFigure(key: ChantZoneFigureKey, figure: ChantZoneFigure): void {\n    this.figures.set(key, figure);\n    this.render();\n  }\n\n  private draw({ color, from, to }: ChantZoneFigure, dateRange: DateRange): void {\n    const ctx = this.ctx.expect('Draw. ctx should be defined');\n    const { width, height } = this.sizes;\n    const xs = ChartSafeHelper.getPosition(new Date(from).getTime(), dateRange);\n    const xe = ChartSafeHelper.getPosition(new Date(to).getTime(), dateRange);\n    const elWidth = (xe - xs) * width;\n\n    ctx.fillStyle = color || '';\n    ctx.fillRect(xs * width, 0, elWidth, height);\n  }\n}\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  output,\n  Output,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, finalize, map, skip, takeUntil } from 'rxjs/operators';\nimport { Decimal } from 'decimal.js';\nimport { ChartOffset, ChartRangeConfig, DateRange } from '../../entities/chart-entities';\nimport { ChartCursorsComponent } from '../chart-cursors/chart-cursors.component';\nimport { ChartLineComponent } from '../../components/chart-line/chart-line.component';\nimport { ChartService } from '../../services/chart.service';\nimport { ChartCursorConfig } from '../chart-cursors/chart-cursors.entities';\nimport { ChartHelper } from '../../utils/chart.helper';\nimport { ChartBase } from '../../base/chart.base';\nimport { DateTime } from 'luxon';\nimport { has } from 'lodash';\nimport { ChartZonesComponent } from '../chart-zones/chart-zones.component';\nimport { SetCanvasSize } from '../../utils/decorators';\nimport { ChartDateParams } from '../../utils/chart-date-params';\nimport { None, Option, OptionUtils, Some } from '@suntech-innovation/option';\nimport { NgForOf, NgIf } from '@angular/common';\nimport { ChartCursorComponent } from '../chart-cursors/components/chart-cursor/chart-cursor.component';\nimport { ChartSafeHelper } from '../../utils/chart-safe.helper';\n\n\n// values from 0 to 1\nexport const DEFAULT_OFFSET = { right: 0, left: 0 };\nconst DATE_AXIS_PADDING = 16;\n\n@Component({\n  selector: 'app-chart-timeline',\n  templateUrl: './chart-timeline.component.html',\n  styleUrls: ['./chart-timeline.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartCursorsComponent,\n    NgIf,\n    ChartCursorComponent,\n    NgForOf,\n  ],\n})\nexport class ChartTimelineComponent extends ChartBase implements OnInit, AfterContentInit, OnDestroy {\n  @Output() offsetChanges = new EventEmitter<ChartOffset>();\n\n  @ContentChildren(ChartLineComponent) lineRef!: QueryList<ChartLineComponent>;\n  @ContentChild(ChartZonesComponent) zonesRef!: ChartZonesComponent;\n  @ViewChild(ChartCursorsComponent) cursorsRef!: ChartCursorsComponent;\n\n  pending = output<void>();\n\n  readonly id = 'line_'.concat(Decimal.random(5).toString());\n\n  offset = DEFAULT_OFFSET;\n  showMoveCursor = None<boolean>();\n  cursorsConfigs = Some<ChartCursorConfig[]>([]);\n  isReadonly = false;\n\n  private onDestroy$ = new Subject<void>();\n  private readonly minSize = 0;\n  private lineRenderedSnapshot = -999;\n\n  constructor(\n    private elRef: ElementRef,\n    private cdRef: ChangeDetectorRef,\n    private chartService: ChartService,\n    private zone: NgZone,\n  ) {\n    super();\n  }\n\n  get nativeElement(): HTMLElement {\n    return this.elRef.nativeElement;\n  }\n  get range(): ChartRangeConfig {\n    return this.chartService.dateParams.getActualRange();\n  }\n  get dateOffsetChanges(): Observable<DateRange<DateTime>> {\n    return this.offsetChanges.pipe(\n      filter(offset => has(offset, 'right') && has(offset, 'left')),\n      map(offset => this.chartService.getDateRangeByOffset(offset)),\n      map(({ from, to }) => ({ from: DateTime.fromMillis(from), to: DateTime.fromMillis(to) }))\n    );\n  }\n\n  @HostListener('dblclick')\n  onDbClick() {\n    this.offsetChanges.emit(this.offset = { right: 0, left: 0 });\n    this.showMoveCursor = Some(true);\n    this.drawRange(this.offset);\n  }\n\n  @HostListener('mousemove', ['$event'])\n  onMouseMove({ clientX: position }: MouseEvent) {\n    const { left, right } = this.offset;\n    const { width } = this.sizes;\n\n    const showMoveCursor = !!(left || right) && this.isCursorInRangeOfOffset(position / width * 2);\n\n    if (showMoveCursor !== this.showMoveCursor.unwrap_or(false)) {\n      this.showMoveCursor = Some(showMoveCursor);\n      this.cdRef.detectChanges();\n    }\n  }\n\n  @HostListener('mousedown', ['$event'])\n  onMouseDown({ target, clientX: position }: MouseEvent) {\n    if ((target as HTMLElement).classList.contains('cursors')) return;\n\n    const { width } = this.sizes;\n    if (this.isReadonly) return;\n    if (!this.isCursorInRangeOfOffset(position / width * 2)) return;\n\n    this.handleRangeMoving(position / width * 2);\n  }\n\n  @SetCanvasSize()\n  render(offset = this.offset): void {\n    this.isReadonly = this.lineRef.first?.line().length === 1;\n    this.drawRange(offset);\n\n    const control = (({ from, to }) => from + to + this.lineRef.length)(this.chartService.dateParams.origin.date);\n\n    if (this.lineRenderedSnapshot !== control) {\n      this.lineRef.forEach(ref => ref.render(this.chartService.dateParams.origin));\n      this.zonesRef?.render(this.chartService.dateParams.origin);\n      this.lineRenderedSnapshot = control;\n    }\n  }\n\n  ngOnInit(): void {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(elem => OptionUtils.from(elem.getContext('2d')));\n    this.cdRef.detectChanges();\n  }\n\n  ngAfterContentInit() {\n    // Re-render if line components are changed (re-rendered)\n    this.lineRef?.changes.subscribe(() => this.render());\n  }\n\n  ngOnDestroy(): void {\n    this.onDestroy$.next();\n    this.onDestroy$.complete();\n  }\n\n  renderDependencies(ref: ChartCursorsComponent): void {\n    this.cursorsConfigs = OptionUtils.from(ref.cursorsRef).map(\n      cursors => cursors.map(refChild => ({ ...refChild.config, label: '' }))\n    );\n\n    this.cdRef.detectChanges();\n    this.cursorsRef?.render(this.chartService.dateParams.origin.date);\n  }\n\n  renderWithDateRange(range: DateRange, emitEvent = true): void {\n    this.render(this.getOffset(range));\n\n    emitEvent && this.offsetChanges.emit(this.offset);\n  }\n\n  getOffset(range: DateRange): ChartOffset {\n    const offset = this.chartService.getOffsetByDateRange(range);\n\n    this.getMissingWidth(offset).if_some(padding => {\n      offset.right -= padding / 2;\n      offset.left -= padding / 2;\n    });\n\n    return offset;\n  }\n\n  /**\n   * Returns true when cursor position is between the left and right offsets\n   */\n  isCursorInRangeOfOffset(position: number): boolean {\n    const { left, right } = this.offset;\n    const { width } = this.sizes;\n\n    return position > left && position < width - right;\n  }\n\n  drawRange(offset: ChartOffset): void {\n    const { height, width } = this.sizes;\n    let { right, left } = this.clampInRange(offset);\n\n    this.offset = { right, left };\n\n    left *= width;\n    right *= width;\n\n    this.clearHolst();\n\n    this.renderDateAxis();\n\n    const ctx = this.ctx.expect('CanvasRenderingContext2D should be defined');\n\n    ctx.beginPath();\n    ctx.fillStyle = 'rgba(222, 222, 222, 0.5)';\n    ctx.fillRect(0, 0, left, height);\n    ctx.fillRect(width - right, 0, right, height);\n\n    ctx.lineWidth = 4;\n    ctx.strokeStyle = '#333';\n    ctx.moveTo(2, 2);\n    ctx.lineTo(left, 2);\n    ctx.lineTo(left, height - 2);\n    ctx.lineTo(width - right, height - 2);\n    ctx.lineTo(width - right, 2);\n    ctx.lineTo(width, 2);\n    ctx.stroke();\n\n    this.cdRef.detectChanges();\n  }\n\n  onCursorMove(path: 'left' | 'right'): void {\n    const minOffset = this.minSize / this.sizes.width;\n\n    this.zone.runOutsideAngular(() => {\n      fromEvent<MouseEvent>(document.body, 'mousemove').pipe(\n        map((i) => i.clientX),\n        map((move: number) => move / this.sizes.width * 2),\n        distinctUntilChanged(),\n        takeUntil(fromEvent(document.body, 'mouseup')),\n        takeUntil(this.onDestroy$),\n        finalize(() => this.offsetChanges.emit(this.offset)),\n      ).subscribe((position: number) => {\n        this.offset[path] = path === 'left'\n          ? new Decimal(position).clamp(0, 1 - this.offset.right - minOffset).toNumber()\n          : new Decimal(1 - position).clamp(0, 1 - this.offset.left - minOffset).toNumber();\n        this.drawRange(this.offset);\n      });\n    });\n  }\n\n  clampInRange({ right, left }: ChartOffset): ChartOffset {\n    return {\n      left: new Decimal(left).clamp(0, 1).toNumber(),\n      right: new Decimal(right).clamp(0, 1).toNumber(),\n    };\n  }\n\n  handleRangeMoving(entry: number): void {\n    const { width } = this.sizes;\n    const { left, right } = this.offset;\n    const padding = { left: entry - left, right: (width - entry) - right };\n    const snapshot = this.offset;\n\n    this.zone.runOutsideAngular(() => {\n      fromEvent<MouseEvent>(document.body, 'mousemove').pipe(\n        skip(1), // skip to prevent click event\n        map((i) => i.clientX),\n        map((move: number) => move / width * 2),\n        distinctUntilChanged(),\n        takeUntil(fromEvent(document.body, 'mouseup')),\n        takeUntil(this.onDestroy$),\n        finalize(() => {\n          if (ChartHelper.isEqual(snapshot, this.offset)) return;\n          this.offsetChanges.emit(this.offset);\n        }),\n      ).subscribe((position: number) => {\n        const offset = {\n          left: position - padding.left,\n          right: width - (position + padding.right),\n        };\n\n        this.drawRange(offset);\n      });\n    });\n  }\n\n  /**\n   * In case if our range size is less than min value this function returns\n   * value as a difference between current width and min size\n   * Example: min(20px) - curr(12px) => 8[px]\n   */\n  getMissingWidth({ right, left }: ChartOffset): Option<number> {\n    const { width } = this.sizes;\n    const range = width - ((right + left) * width);\n\n    return width && range < this.minSize ? Some((this.minSize - range) / width) : None();\n  }\n\n  renderDateAxis(): void {\n    const { date } = this.chartService.dateParams.origin;\n    const { width, height } = this.sizes;\n\n    const limit = 10;\n    const step = this.chartService.getGridStep(date, ChartDateParams.dateAvailablePeriods, limit);\n    const ctx = this.ctx.expect('CanvasRenderingContext2D should be defined');\n\n    ctx.strokeStyle = '#e7e7e7';\n    ctx.font = ChartDateParams.font.replace(/\\d+px/g, '22px');\n\n    Array.from({ length: limit }).forEach((_, key) => {\n      const offset = step * key;\n      const target = new Decimal(date.from + offset + step / 2).toNearest(step).toNumber();\n      const x = ChartSafeHelper.getPosition(target, date);\n\n      const text = DateTime.fromMillis(target).toFormat('HH:mm:ss');\n      const textParams = ctx.measureText(text);\n      const padding = 4;\n\n      ctx.fillStyle = 'rgba(255, 255, 255, .5)';\n      ctx.fillRect(\n        width * x - (textParams.width / 2) - padding / 2,\n        height - DATE_AXIS_PADDING - textParams.actualBoundingBoxAscent - padding / 2,\n        textParams.width + padding,\n        textParams.actualBoundingBoxAscent + padding\n      );\n      ctx.fillStyle = '#444';\n      ctx.fillText(text, width * x - (textParams.width / 2), height - DATE_AXIS_PADDING);\n      ctx.fillRect(width * x, height - 45, 2, 6);\n    });\n  }\n}\n","<canvas [id]=\"id\" [class.cursor-move]=\"showMoveCursor\"></canvas>\n\n<app-chart-cursors [line]=\"[]\" *ngIf=\"cursorsConfigs.unwrap().length\">\n  <app-chart-cursor\n    *ngFor=\"let config of cursorsConfigs.unwrap()\"\n    [config]=\"config\">\n  </app-chart-cursor>\n</app-chart-cursors>\n\n<div\n  class=\"cursors left\"\n  [class.disabled]=\"isReadonly\"\n  [style.left.px]=\"offset.left * (sizes.width || 1) / 2\"\n  (mousedown)=\"!isReadonly && onCursorMove('left')\">\n</div>\n<div\n  class=\"cursors right\"\n  [class.disabled]=\"isReadonly\"\n  [style.right.px]=\"offset.right * (sizes.width || 1) / 2\"\n  (mousedown)=\"!isReadonly && onCursorMove('right')\">\n</div>\n\n\n<ng-content select=\"expand-buttons\"/>\n\n<ng-content></ng-content>\n\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport {\n  auditTime,\n  BehaviorSubject,\n  debounceTime,\n  fromEvent,\n  merge,\n  Observable,\n  Subject,\n  Subscription,\n} from 'rxjs';\nimport {\n  ChartBetsComponent,\n  ChartCursorsComponent,\n  ChartDateMarkersComponent,\n  ChartHistogramComponent,\n  ChartVolumeAxisComponent,\n  ChartLineComponent,\n  ChartPriceAxisComponent,\n  ChartSafeHelper,\n  ChartTimelineComponent,\n  ChartZonesComponent,\n} from '.';\nimport { ChartService } from './services/chart.service';\nimport { ChartConfig, ChartPoint, ChartRangeConfig, DateRange } from './entities/chart-entities';\nimport { ChartBase } from './base/chart.base';\nimport Decimal from 'decimal.js';\nimport { ChartScaleUtil, ScaleConfig } from './utils/chart-scale.util';\nimport { ChartPainter } from './utils/chart.helper';\nimport { cloneDeep, isUndefined, merge as _merge, sortBy, throttle } from 'lodash';\nimport { DateTime } from 'luxon';\nimport { SetCanvasSize } from './utils/decorators';\nimport { ChartDateParams } from './utils/chart-date-params';\nimport { findIndex } from './utils/operators';\nimport { distinctUntilChanged, filter, map, take, takeUntil } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DATE_AXIS_PADDING } from './components/chart-date-markers/chart-date-markers.component';\nimport { None, Option, OptionUtils, Some } from '@suntech-innovation/option';\nimport { intToShortString } from '../../helpers';\nimport { PriceChartBet } from '../../entities';\n\n\nexport const DEFAULT_CONFIG: ChartConfig = {\n  hasHorizontalLines: true,\n  showCursor: true,\n  priceAxisPosition: 'left',\n  zoom: false,\n  scale: true,\n  priceColor: '#444',\n  drawDateAxis: true,\n  drawPricesAxis: true,\n  scaleConfig: { allowNegative: false },\n};\n\n@Component({\n  selector: 'app-chart',\n  templateUrl: './chart.component.html',\n  styleUrls: ['./chart.component.scss'],\n  providers: [ChartService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartDateMarkersComponent,\n  ],\n})\nexport class ChartComponent extends ChartBase implements OnInit, AfterContentInit, OnDestroy {\n  static displayedDateRange$ = new BehaviorSubject<DateRange | null>(null);\n\n  @Output() hover = new EventEmitter<number>();\n  @Output() init = new EventEmitter<void>();\n  @Output() scaleChanged = new EventEmitter<ScaleConfig>();\n\n  @ContentChildren(ChartLineComponent) lineRef!: QueryList<ChartLineComponent>;\n  @ContentChildren(ChartComponent) charts!: QueryList<ChartComponent>;\n  @ContentChild(ChartTimelineComponent) timelineRef!: ChartTimelineComponent;\n  @ContentChild(ChartCursorsComponent) cursorsRef!: ChartCursorsComponent;\n  @ContentChild(ChartBetsComponent) betsRef!: ChartBetsComponent;\n  @ContentChild(ChartZonesComponent) zonesRef!: ChartZonesComponent;\n  @ContentChild(ChartHistogramComponent) histogramRef!: ChartHistogramComponent;\n  @ContentChild(ChartVolumeAxisComponent) volumeAxisRef!: ChartVolumeAxisComponent;\n  @ContentChild(ChartPriceAxisComponent) pricesRef!: ChartPriceAxisComponent;\n  @ViewChild(ChartDateMarkersComponent) dateMarkersRef!: ChartDateMarkersComponent;\n\n  hovered!: number;\n  holstId = 'chart-holst_'.concat(Decimal.random(5).toString());\n  id = 'chart_'.concat(Decimal.random(5).toString());\n  scale = new ChartScaleUtil(this.emitScaleChanges.bind(this), DEFAULT_CONFIG.scaleConfig);\n\n  getConfiguration!: (range: Option<DateRange>) => ChartRangeConfig;\n\n  private cursorMovementSub!: Subscription;\n  private painter = new ChartPainter();\n  private basePosition!: number;\n  private smoothRender = throttle(() => this.render(), 25);\n\n  #config = cloneDeep(DEFAULT_CONFIG);\n\n  constructor(\n    private elRef: ElementRef,\n    private chartService: ChartService,\n    private cdRef: ChangeDetectorRef,\n    private zone: NgZone,\n    private destroyRef: DestroyRef,\n  ) {\n    super();\n  }\n\n  get window(): ChartRangeConfig {\n    return this.scale.getActualRange(\n      this.chartService.dateParams?.getActualRange()\n    );\n  }\n  get nativeElement(): HTMLElement {\n    return this.holstElement;\n  }\n  get holstElement(): HTMLElement {\n    return document.getElementById(this.holstId)!;\n  }\n  get lineChanges(): Observable<ChartPoint[]> {\n    return merge(...this.lineRef.map(ref => ref.inputChanges$)).pipe(debounceTime(50));\n  }\n  get priceColor() {\n    return this.#config.priceColor;\n  }\n  @Input()\n  set config(config: Partial<ChartConfig>) {\n    this.#config = _merge(this.#config, config);\n    if (this.#config.scaleConfig) {\n      this.scale.config = this.#config.scaleConfig;\n    }\n    this.window && this.smoothRender();\n  }\n\n  @SetCanvasSize()\n  render() {\n    // Render Chart Lines\n    this.lineRef?.forEach(ref => ref?.render(this.window));\n    // Render TimeLine component\n    this.timelineRef?.render();\n    // Render Cursors component\n    this.cursorsRef?.render();\n    // Render Bets component\n    this.betsRef?.render(None());\n    // Render chart zones\n    this.zonesRef?.render();\n    // Render chart date labels\n    this.dateMarkersRef?.render();\n    // Render Last Traded Amount Histogram\n    this.histogramRef?.render(this.window);\n    // Render Volumes Axis outside of the graph canvas (histogram dataset)\n    // use with HistogramConfig.drawAxis = false\n    this.volumeAxisRef?.render(this.window);\n    // Render prices axis outside of the graph, use with config.drawPricesAxis = false\n    // or it will duplicate inner prices axis\n    this.pricesRef?.render(this.window);\n\n    this.drawGrid();\n  }\n\n  ngOnInit(): void {\n    this.cdRef.detectChanges();\n    this.canvasElem = OptionUtils.from(document.getElementById(this.id) as HTMLCanvasElement);\n    this.ctx = this.canvasElem.and_then(el => OptionUtils.from(el.getContext('2d')));\n\n    this.handleResizing();\n    this.handleKeyboard();\n\n    this.cdRef.detectChanges();\n    this.cdRef.detach();\n  }\n\n  ngAfterContentInit() {\n    this.setConfig();\n    // Reset config to apply new lines price range\n    this.lineRef.changes.subscribe(() => {\n      this.setConfig();\n      this.render();\n    });\n\n    this.basePosition = ChartSafeHelper.getPosition(0, this.window.price);\n\n    requestAnimationFrame(() => this.render());\n    this.betsRef && (this.betsRef.expandChartConfigWithBets = this.expandConfigWithBets.bind(this));\n\n    // Listen modules changes\n    this.timelineRef?.offsetChanges.subscribe(\n      (offset) => [this, ...this.charts.toArray()].forEach((ref: ChartComponent) => {\n        ref.onOffsetChanges(ref.chartService.getDateRangeByOffset(offset));\n      }),\n    );\n    this.cursorsRef?.cursorsRef.changes.subscribe(() => {\n      this.timelineRef?.renderDependencies(this.cursorsRef);\n    });\n    this.cursorsRef?.statsMouseOver.subscribe(\n      () => requestAnimationFrame(() => this.dateMarkersRef.clear()),\n    );\n    this.lineChanges.subscribe(() => {\n      if (this.timelineRef) {\n        requestAnimationFrame(() => this.moveInTimeline());\n      } else {\n        this.setConfig();\n        this.render();\n      }\n    });\n\n    this.init.emit();\n\n    // Is used to set additional configs for nested chars\n    this.charts.forEach(ref => {\n      ref.#config.zeroPosition = ChartSafeHelper.getPositionSafe(0, this.window.price).unwrap();\n      ref.#config.hasHorizontalLines = false;\n\n      ref.drawVerticalLine = () => null;\n      ref.renderDateAxis = () => null;\n      ref.initRangeChangesHandler = () => null;\n      ref.handleCursorMovement = () => null;\n      ref.chartService.converter = this.getPricePosition.bind(ref);\n      ref.render();\n    });\n\n    this.betsRef?.registerPlugins(new Map([[ChartScaleUtil, this.scale]]));\n  }\n\n  ngOnDestroy(): void {\n    ChartComponent.displayedDateRange$.next(null);\n  }\n\n  setConfig() {\n    this.getConfiguration = this.chartService.configurator(this.lineRef.toArray());\n    this.chartService.dateParams = new ChartDateParams(this.getConfiguration(None()));\n    if (this.#config.scaleConfig) this.scale.config = this.#config.scaleConfig;\n  }\n\n  renderTimeline(range: DateRange): void {\n    this.timelineRef?.renderWithDateRange(range);\n  }\n\n  /**\n   * Allows to configure the time range for the timeline of the graph\n   * If emitEvent = true, URL will be changed\n   */\n  setTimeRange(range = this.chartService.dateParams.origin.date, emitEvent = false): void {\n    this.timelineRef?.renderWithDateRange(range, emitEvent);\n    !emitEvent && this.onOffsetChanges(range);\n  }\n\n  moveInTimeline() {\n    const snapshot = this.window.date;\n    const dateParams = new ChartDateParams(this.getConfiguration(None()));\n\n    if (!dateParams.isInOriginRange(snapshot)) return;\n\n    this.chartService.dateParams = dateParams;\n\n    this.renderTimeline(snapshot);\n  }\n\n  handleCursorMovement(): void {\n    const { x: paddingLeft } = this.elRef.nativeElement.getBoundingClientRect();\n    const charts = [this, ...this.charts.toArray()];\n    const [lineRef] = charts.flatMap(i => i.lineRef.toArray());\n\n    this.cursorMovementSub?.unsubscribe();\n    this.zone.runOutsideAngular(() => {\n      if (!lineRef?.line) return;\n\n      this.cursorMovementSub = fromEvent<MouseEvent>(this.holstElement, 'mousemove').pipe(\n        auditTime(20),\n        findIndex((offset) => this.findIndexByOffset(offset * 2, lineRef!.lineDates()), paddingLeft),\n        takeUntil(fromEvent(this.holstElement, 'mouseleave')),\n        takeUntilDestroyed(this.destroyRef),\n      ).subscribe({\n        next: (index: number) => {\n          this.hover.emit(this.hovered = index);\n\n          charts.forEach((inst: ChartComponent) => {\n            inst.drawGrid();\n            inst.drawVerticalLine(lineRef!.line()[index]);\n\n            inst.lineRef?.forEach(\n              ref => ref.line()[index] && inst.drawLineMarkers(ref.line()[index], ref.color)\n            );\n          });\n        },\n      });\n    });\n  }\n\n  drawLineMarkers([date, price]: ChartPoint, color: string): void {\n    price.if_some((price) => {\n      const { height, width } = this.sizes;\n      const x = ChartSafeHelper.getPosition(date, this.window.date);\n      const y = this.chartService.getPricePosition(price, this.window.price);\n      const ctx = this.ctx.expect('Can\\'t draw line markers, canvas is not initialized');\n\n      ctx.fillStyle = color;\n      this.painter.drawCircle.bind(this)(x * width, y * height, 6);\n    });\n  }\n\n  drawGrid(): void {\n    this.clearHolst();\n\n    this.renderPriceAxis(.01, this.#config.priceAxisPosition!);\n    this.#config.drawDateAxis && this.renderDateAxis();\n  }\n\n  renderPriceAxis(minStep: number, position: 'left' | 'right'): void {\n    const { price } = this.window;\n    const { width, height } = this.sizes;\n\n    let start = price.from, offset;\n\n    let step = Math.max(\n      this.chartService.getGridStep({ from: price.to, to: price.from }),\n      minStep,\n    );\n\n    if (this.#config.minPriceStep) step = Math.max(this.#config.minPriceStep, step);\n\n    start = new Decimal(start).toNearest(step).toNumber();\n    const dp = new Decimal(step).decimalPlaces();\n    const ctx = this.ctx.expect('Can\\'t draw price axis, canvas is not initialized');\n    const collection: [string, number][] = [\n      [intToShortString(start, dp), this.chartService.getPricePosition(start, price)],\n    ];\n\n    ctx.font = ChartDateParams.font;\n    ctx.fillStyle = this.#config.priceColor || '#444';\n\n    while (start > price.to) {\n      start = new Decimal(start).minus(step).toNumber();\n      const y = this.chartService.getPricePosition(start, price);\n\n      if (y < 0 || y > 1) continue;\n\n      collection.push([intToShortString(start, dp), y]);\n    }\n\n    if (position === 'right') {\n      offset = this.sizes.width - 10 - Math.max(...collection.map(([i]) => ctx.measureText(i).width));\n    } else {\n      offset = 10;\n    }\n\n    const render = (text: string, y: number) => {\n      if (this.#config.hasHorizontalLines) {\n        ctx.beginPath();\n        ctx.strokeStyle = '#e6e6e6';\n        ctx.moveTo(0, height * y);\n        ctx.lineTo(width, height * y);\n        ctx.stroke();\n      }\n\n      if (y * height < 30) return;\n\n      if (this.#config.drawPricesAxis) {\n        ctx.fillText(text, offset, height * y - 10);\n      }\n    };\n\n    collection.forEach(([text, y]) => render(text, y));\n  }\n\n  renderDateAxis(): void {\n    const { date } = this.window;\n    const { width, height } = this.sizes;\n    const ctx = this.ctx.expect('Can\\'t draw date axis, canvas is not initialized');\n    const limit = 10;\n    const step = this.chartService.getGridStep(date, ChartDateParams.dateAvailablePeriods, limit);\n\n    ctx.save();\n    ctx.fillStyle = '#444';\n    ctx.font = ChartDateParams.font.replace(/\\d+px/g, '22px');\n\n    Array.from({ length: limit }).forEach((_, key) => {\n      const offset = step * key;\n      const target = new Decimal(date.from + offset + step / 2).toNearest(step).toNumber();\n      const x = ChartSafeHelper.getPositionSafe(target, date).unwrap();\n\n      const text = DateTime.fromMillis(target).toFormat('HH:mm:ss');\n      const textParams = ctx.measureText(text);\n\n      ctx.fillText(text, width * x - (textParams.width / 2), height - DATE_AXIS_PADDING);\n      ctx.fillRect(width * x, height - 45, 2, 6);\n    });\n\n    ctx.restore();\n  }\n\n  onOffsetChanges(dateRange: DateRange): void {\n    ChartComponent.displayedDateRange$.next(dateRange);\n    this.chartService.dateParams.applyRange(this.getConfiguration(Some(dateRange)));\n    this.render();\n  }\n\n  findIndexByOffset(offset: number, dates = this.lineRef.first.lineDates()): number {\n    return this.chartService.getIndexByOffset(offset / this.sizes.width, dates);\n  }\n\n  drawVerticalLine([date]: ChartPoint): void {\n    const { width, height } = this.sizes;\n    const x = ChartSafeHelper.getPosition(date, this.window.date);\n    const ctx = this.ctx.expect('Can\\'t draw vertical line, canvas is not initialized');\n\n    ctx.beginPath();\n    ctx.lineWidth = 2;\n    ctx.strokeStyle = '#dedede';\n    ctx.moveTo(width * x, 0);\n    ctx.lineTo(width * x, height);\n    ctx.stroke();\n\n    // Draw date hint\n    this.dateMarkersRef?.drawDateLabel(x, date);\n  }\n\n  mouseDownHandler(event: MouseEvent) {\n    if (event.shiftKey) {\n      this.initRangeChangesHandler(event.clientX * 2);\n    } else {\n      this.zone.runOutsideAngular(() => {\n        this.#config.scale && this.moveChart();\n      });\n    }\n  }\n\n  /**\n   * Handling mouse movement to display and setting an offset\n   */\n  initRangeChangesHandler(entry: number, end?: number): void {\n    if (!this.#config.zoom) return;\n\n    const { height } = this.sizes;\n    const ctx = this.ctx.expect('Can\\'t draw range zone, canvas is not initialized');\n    const { x: padding } = this.elRef.nativeElement.getBoundingClientRect();\n    const movementFilter = (position: number) => Math.abs(position - entry) >= 5;\n    const getLineTime = (index: number) => this.lineRef.first.line()[index][0];\n    const range$ = new Subject<void>();\n    const mousemove$ = fromEvent<MouseEvent>(this.elRef.nativeElement, 'mousemove').pipe(\n      map((e: MouseEvent) => e.clientX),\n      map((position: number) => position * 2),\n      distinctUntilChanged(),\n    );\n\n    range$.pipe(take(1)).subscribe(() => {\n      this.cursorMovementSub.unsubscribe();\n      this.dateMarkersRef.clear();\n    });\n\n    ctx.beginPath();\n    mousemove$.pipe(\n      filter(movementFilter),\n      takeUntil(fromEvent(this.elRef.nativeElement, 'mouseup')),\n      takeUntil(fromEvent(this.elRef.nativeElement, 'mouseleave')),\n      takeUntilDestroyed(this.destroyRef),\n    ).subscribe({\n      next: (position: any) => {\n        range$.next();\n        this.drawGrid();\n        ctx.fillStyle = 'rgba(222,222,222,0.5)';\n        ctx.fillRect((entry - padding), 0, (position + padding - entry), height);\n        end = position;\n      },\n      complete: () => {\n        this.handleCursorMovement();\n\n        if (typeof end === 'undefined') return;\n\n        const points = sortBy([\n          this.findIndexByOffset(entry, this.lineRef.first.lineDates()),\n          this.findIndexByOffset(end, this.lineRef.first.lineDates()),\n        ]);\n\n        this.setTimeRange({ from: getLineTime(points[0]), to: getLineTime(points[1]) }, true);\n      },\n    });\n  }\n\n  handleResizing(): void {\n    const resize$ = new Subject<void>();\n\n    if (typeof ResizeObserver !== 'undefined') {\n      const resizeObserver = new ResizeObserver(() => {\n        this.elRef.nativeElement.classList.add('pending');\n        resize$.next();\n      });\n\n      resizeObserver.observe(this.elRef.nativeElement);\n      this.destroyRef.onDestroy(() => resizeObserver.disconnect());\n    } else {\n      fromEvent(window, 'resize').pipe(\n        takeUntilDestroyed(this.destroyRef),\n      ).subscribe(() => {\n        this.elRef.nativeElement.classList.add('pending');\n        resize$.next();\n      });\n    }\n\n    resize$.pipe(\n      debounceTime(250),\n      takeUntilDestroyed(this.destroyRef),\n    ).subscribe(() => {\n      this.render();\n      this.elRef.nativeElement.classList.remove('pending');\n    });\n  }\n\n  handleKeyboard(): void {\n    fromEvent<KeyboardEvent>(document.body, 'keyup')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((e: KeyboardEvent) => {\n        switch (e.code) {\n          case 'ArrowRight':\n            return this.cursorsRef.moveCursor(1);\n          case 'ArrowLeft':\n            return this.cursorsRef.moveCursor(-1);\n        }\n      });\n  }\n\n  expandConfigWithBets(bets: PriceChartBet[]) {\n    const createSnapshot = () => (({ price }) => price.from + price.to)(this.getConfiguration(Some(this.window.date)));\n    const snapshot = createSnapshot();\n\n    this.getConfiguration = this.chartService.expandRangeConfigWithBets(\n      this.chartService.configurator(this.lineRef.toArray()),\n      bets,\n    );\n\n    // Create a new config snapshot and compare it with previous,\n    // if it has different value, bets are affected price -> need to re-render the chart\n    if (createSnapshot() !== snapshot) {\n      this.chartService.dateParams.applyRange(this.getConfiguration(Some(this.window.date)));\n      this.render();\n    }\n  }\n\n  getPricePosition(y: number, base = this.basePosition): number {\n    if (isUndefined(this.#config.zeroPosition)) return y;\n\n    const offset = this.#config.zeroPosition - base;\n\n    return y + (offset * (y / base));\n  }\n\n  changeScale(event: WheelEvent) {\n    if (!this.#config.scale) return;\n\n    const { price } = this.chartService.dateParams.getActualRange();\n    const step = (price.from - price.to) / this.sizes.height;\n\n    this.scale.change(event.deltaY * step);\n    this.smoothRender();\n  }\n\n  moveChart(entryY?: number, entryX?: number) {\n    // const date = this.chartService.dateParams.getActualRange().date;\n    const { price, date } = this.window;\n\n    const step = {\n      price: (price.from - price.to) / this.sizes.height,\n      date: (date.to - date.from) / this.sizes.width,\n    };\n\n    this.cursorMovementSub?.unsubscribe();\n    fromEvent<MouseEvent>(this.elRef.nativeElement, 'mousemove').pipe(\n      map((event) => ({ y: event.clientY * 2, x: event.clientX * 2 })),\n      takeUntil(fromEvent(this.elRef.nativeElement, 'mouseup')),\n      takeUntil(fromEvent(this.elRef.nativeElement, 'mouseleave')),\n      takeUntilDestroyed(this.destroyRef),\n    ).subscribe({\n      next: ({ y: position, x }: any) => {\n        entryX ??= x;\n        entryY ??= position - this.scale.position / step.price || position;\n\n        this.scale.setPosition((position - entryY!) * step.price);\n        this.renderTimeline({\n          from: date.from - (x - entryX!) * step.date,\n          to: date.to - (x - entryX!) * step.date,\n        });\n        this.smoothRender();\n      },\n      complete: () => this.handleCursorMovement(),\n    });\n  }\n\n  resetScale() {\n    this.scale.resetScale();\n    this.render();\n  }\n\n  emitScaleChanges(state: ScaleConfig) {\n    this.scaleChanged.emit(state);\n  }\n}\n","<ng-content select=\"title\"></ng-content>\n<div class=\"flex wrapper\">\n  <ng-content select=\"prices\"></ng-content>\n  <div\n    [id]=\"holstId\"\n    class=\"holst\"\n    (wheel)=\"changeScale($event); $event.preventDefault()\"\n    (mousedown)=\"mouseDownHandler($event)\"\n    (dblclick)=\"scale.resetScale(); render()\"\n    (mouseenter)=\"handleCursorMovement()\">\n    <canvas [id]=\"id\"></canvas>\n\n    <ng-content select=\"zones\"></ng-content>\n    <ng-content select=\"indicators\"></ng-content>\n    <ng-content select=\"bets\"></ng-content>\n    <ng-content select=\"lines\"></ng-content>\n    <ng-content select=\"cursors\"></ng-content>\n\n    <app-chart-date-markers/>\n\n    <div class=\"absolute top-0 left-0 h-full w-full pointer-events-none\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n  <ng-content select=\"volumes\"></ng-content>\n</div>\n\n<ng-content select=\"timeline\"></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n\n@Component({\n  selector: 'app-chart-canvas',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ChartCanvasComponent {\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  effect,\n  HostBinding,\n  input,\n  Input,\n  signal,\n  untracked,\n} from '@angular/core';\nimport { get } from 'lodash';\nimport { VirtualPriceStack } from '../../../entities';\n\n\n@Component({\n  selector: 'app-price-stack',\n  templateUrl: './price-stack.component.html',\n  styleUrls: ['./price-stack.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { '[label-price-stack]': 'true' },\n})\nexport class PriceStackComponent {\n  bettingType = input.required<string>();\n  priceStack = input<VirtualPriceStack>();\n  maxPriceLevels = input(3);\n  maxTradedLevels = input(6);\n  selected = input(false);\n\n  @HostBinding('class')\n  @Input() className = 'exchange';\n\n  backPrices = signal<number[][]>([]);\n  layPrices = signal<number[][]>([]);\n  tradedPrices = signal<number[][]>([]);\n\n  constructor() {\n    effect((_, stack = this.priceStack()) => stack && untracked(() => this.setPriceStack(stack!)));\n  }\n\n  setPriceStack(value: VirtualPriceStack) {\n    const { back, lay } = value.lines;\n\n    if (back) {\n      if (back.length <= this.maxPriceLevels()) {\n        this.backPrices.set(((list) => Array\n          .from({ length: this.maxPriceLevels() })\n          .map((_, index) => get(list, index))\n          .reverse())([...back]));\n      } else {\n        this.backPrices.set([...back].reverse().slice(back.length - this.maxPriceLevels(), back.length));\n      }\n    }\n\n    if (lay) {\n      if ( lay.length <= this.maxPriceLevels()) {\n        this.layPrices.set(((list) => Array\n          .from({ length: this.maxPriceLevels() })\n          .map((_, index) => get(list, index)))([...lay]));\n      } else {\n        this.layPrices.set(lay.slice(0, this.maxPriceLevels()));\n      }\n    }\n\n\n    if (value.t) {\n      if (value.t.length <= this.maxTradedLevels()) {\n        this.tradedPrices.set(value.t);\n      } else {\n        const toRemove = (value.t.length - this.maxTradedLevels()) / 2;\n        const toRemoveStart = Math.ceil(toRemove);\n        const toRemoveEnd = Math.floor(toRemove);\n        this.tradedPrices.set(value.t.slice(toRemoveStart, value.t.length - toRemoveEnd));\n      }\n    }\n  }\n\n  getInPlayStatusText(inPlay?: boolean): string {\n    return inPlay ? 'In play' : 'Not in play';\n  }\n\n  getConflatedText(conflated?: boolean): string {\n    if (!conflated) return '';\n\n    return ` | conflated`;\n  }\n}\n","<div class=\"flex flex-col mb-1\" *ngIf=\"priceStack() as stack\">\n  <div>\n    <span class=\"info block\"\n      [class.selected-price-stack]=\"selected()\"\n      [class.red-text]=\"stack.con && (stack.tsDel || 0) >= 2500\">\n      <b>{{ stack.ts | date:'HH:mm:ss.SSS' }}</b>\n      {{ getInPlayStatusText(stack.ip) }}\n      {{ getConflatedText(stack.con) }}\n    </span>\n    <span class=\"info block\"\n      [class.selected-price-stack]=\"selected()\">\n      mtt:{{ stack.mtt | currency:'GBP':'symbol-narrow':'1.0-0' }} |\n      rtt:{{ stack.rtt | currency:'GBP':'symbol-narrow':'1.0-0' }} |\n    </span>\n  </div>\n\n  <table class=\"table table-sm prices-table w-fit\">\n    <tbody>\n      <tr>\n        <td [class.back-background]=\"p\" *ngFor=\"let p of backPrices()\">\n          <ng-container *ngIf=\"p\">\n            <span class=\"price\">{{ p[0] | formatPrice: bettingType():undefined:true }}</span>\n            <span class=\"size\">{{ p[1] | formatAmount }}</span>\n          </ng-container>\n        </td>\n        <td [class.lay-background]=\"p\" *ngFor=\"let p of layPrices()\">\n          <ng-container *ngIf=\"p\">\n            <span class=\"price\">{{ p[0] | formatPrice: bettingType():undefined:true }}</span>\n            <span class=\"size\">{{ p[1] | formatAmount }}</span>\n          </ng-container>\n        </td>\n      </tr>\n      <tr cyp-traded-prices>\n        <td *ngFor=\"let p of tradedPrices()\">\n          <span class=\"traded-price\">{{ p[0] | formatPrice: bettingType():undefined:true }}</span>\n          <span class=\"traded-size\">{{ p[1] | formatAmount }}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { PriceHelper } from '../../../helpers/price-helper';\nimport { VirtualPriceStack } from '../../../entities';\n\n\n@Component({\n  selector: 'app-price-stack-fancy',\n  templateUrl: './price-stack-fancy.component.html',\n  styleUrls: ['./price-stack-fancy.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PriceStackFancyComponent {\n  stack = input.required<VirtualPriceStack>();\n  faceless = computed(() => PriceHelper.facelessVirtualPriceStack(this.stack()));\n}\n","<div class=\"item lay lay-background\">\n  <div class=\"price\">{{ faceless().lay }}</div>\n  <div class=\"size\">{{ faceless().laySize}}</div>\n</div>\n<div class=\"item back back-background\">\n  <div class=\"price\">{{ faceless().back }}</div>\n  <div class=\"size\">{{ faceless().backSize }}</div>\n</div>\n<div class=\"item\">\n  <div>Max Bet: {{ faceless().maxBet | number }}</div>\n  <div>Max Mkt: {{ faceless().maxMarket |  number }}</div>\n</div>\n<div class=\"item item-status\"> {{ faceless().status }}</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { last } from 'lodash';\nimport { DateTime } from 'luxon';\nimport { MarketDefCollection, VirtualPriceStack } from '../../entities';\n\n\ninterface CursorState {\n  cursor1: VirtualPriceStack;\n  cursor2: VirtualPriceStack;\n  cursor3: VirtualPriceStack;\n}\n\n@Component({\n  selector: 'app-display-price-stack',\n  templateUrl: './display-price-stack.component.html',\n  styleUrls: ['./display-price-stack.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DisplayPriceStackComponent {\n  bettingType = input.required<string>();\n  definition = input.required<MarketDefCollection>();\n  priceStack = input.required<VirtualPriceStack[]>();\n  cursors = input.required<DateTime[]>();\n  priceLevels = input<number>(3);\n  tradedLevels = input(6);\n  selected = model<number>();\n  stackSnapshot = computed(() => this.updateCursors(this.priceStack(), this.cursors()));\n\n  updateCursors(stack: VirtualPriceStack[], cursors: DateTime[]): CursorState | undefined {\n    if (!stack?.length) return;\n\n    const reversed = [...stack].reverse();\n\n    return this.#patchWithCursorTime(\n      {\n        cursor1: cursors[0] && reversed.find((i) => i.ts <= cursors[0].toMillis()) || last(reversed)!,\n        cursor2: cursors[1] && reversed.find((i) => i.ts <= cursors[1].toMillis()) || last(reversed)!,\n        cursor3: cursors[2] && reversed.find((i) => i.ts <= cursors[2].toMillis()) || last(reversed)!,\n      },\n      cursors,\n    );\n  }\n\n  #patchWithCursorTime(state: CursorState, cursors: DateTime[]): CursorState | undefined {\n    try {\n      return {\n        cursor1: { ...state.cursor1, ts: cursors[0]?.toMillis() },\n        cursor2: { ...state.cursor2, ts: cursors[1]?.toMillis() },\n        cursor3: { ...state.cursor3, ts: cursors[2]?.toMillis() },\n      };\n    } catch (e) {\n      return undefined;\n    }\n  }\n}\n","<ng-container *ngIf=\"definition().isExchange || definition().isLineExchange\">\n  <app-price-stack\n    class=\"p-2\"\n    *ngIf=\"stackSnapshot()?.cursor1 as cursor\"\n    [className]=\"definition().value.toLocaleLowerCase()\"\n    [maxPriceLevels]=\"priceLevels()\"\n    [maxTradedLevels]=\"tradedLevels()\"\n    [priceStack]=\"cursor\"\n    [bettingType]=\"bettingType()\"\n    [selected]=\"selected() === 0\">\n  </app-price-stack>\n  <app-price-stack\n    class=\"p-2\"\n    *ngIf=\"stackSnapshot()?.cursor2 as cursor\"\n    [className]=\"definition().value.toLocaleLowerCase()\"\n    [maxPriceLevels]=\"priceLevels()\"\n    [maxTradedLevels]=\"tradedLevels()\"\n    [priceStack]=\"cursor\"\n    [bettingType]=\"bettingType()\"\n    [selected]=\"selected() === 1\">\n  </app-price-stack>\n  <app-price-stack\n    class=\"p-2\"\n    *ngIf=\"stackSnapshot()?.cursor3 as cursor\"\n    [className]=\"definition().value.toLocaleLowerCase()\"\n    [maxPriceLevels]=\"priceLevels()\"\n    [maxTradedLevels]=\"tradedLevels()\"\n    [priceStack]=\"cursor\"\n    [bettingType]=\"bettingType()\"\n    [selected]=\"selected() === 2\">\n  </app-price-stack>\n</ng-container>\n\n<div class=\"stack-wrap\" *ngIf=\"definition().isFancy || definition().isSportsBook\">\n  <div class=\"flex mx-1\" *ngIf=\"stackSnapshot()?.cursor1 as cursor\">\n    <div class=\"stack-label\" [class.selected]=\"selected() === 0\" (click)=\"selected.set(0)\">#1</div>\n    <b class=\"stack-date\">{{ cursor.ts | date:'HH:mm:ss.SSS' }}</b>\n  </div>\n  <app-price-stack-fancy\n    *ngIf=\"stackSnapshot()?.cursor1 as stack\"\n    [stack]=\"stack\">\n  </app-price-stack-fancy>\n\n  <div class=\"flex mx-1\" *ngIf=\"stackSnapshot()?.cursor2 as cursor\">\n    <div class=\"stack-label\" [class.selected]=\"selected() === 1\" (click)=\"selected.set(1)\">#2</div>\n    <b class=\"stack-date\">{{ cursor.ts | date:'HH:mm:ss.SSS' }}</b>\n  </div>\n  <app-price-stack-fancy\n    *ngIf=\"stackSnapshot()?.cursor2 as stack\"\n    [stack]=\"stack\">\n  </app-price-stack-fancy>\n\n  <div class=\"flex mx-1\" *ngIf=\"stackSnapshot()?.cursor3 as cursor\">\n    <div class=\"stack-label\" [class.selected]=\"selected() === 2\" (click)=\"selected.set(2)\">#3</div>\n    <b class=\"stack-date\">{{ cursor.ts | date:'HH:mm:ss.SSS' }}</b>\n  </div>\n  <app-price-stack-fancy\n    *ngIf=\"stackSnapshot()?.cursor3 as stack\"\n    [stack]=\"stack\">\n  </app-price-stack-fancy>\n</div>\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DisplayPriceStackComponent } from './display-price-stack.component';\nimport { PriceStackFancyComponent } from './price-stack-fancy/price-stack-fancy.component';\nimport { PriceStackComponent } from './price-stack/price-stack.component';\nimport { FormatAmountPipe, FormatPricePipe } from '../../pipes';\n\n\n@NgModule({\n  declarations: [\n    DisplayPriceStackComponent,\n    PriceStackComponent,\n    PriceStackFancyComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormatPricePipe,\n    FormatAmountPipe,\n  ],\n  exports: [\n    DisplayPriceStackComponent,\n  ],\n})\nexport class PriceStackModule { }\n","/*\n * Public API Surface of tadpole-common\n */\n\nexport * from './entities';\nexport * from './pipes';\nexport * from './helpers';\nexport * from './components/data-source/data-source.component';\nexport * from './modules/chart';\nexport * from './modules/price-stack';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Option","i1.ChartConfigService","i1.ChartService","DATE_AXIS_PADDING","DEFAULT_HISTOGRAM_CONFIG","DEFAULT_CONFIG","i2","merge","Decimal","_merge","i2.FormatPricePipe","i3.FormatAmountPipe","i2.PriceStackComponent","i3.PriceStackFancyComponent"],"mappings":"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"}