{"version":3,"file":"chunk-lh7h2a7q.js","sources":["packages/sports/libs/odds/feature/native-price/src/native-price-comparer.service.ts","packages/sports/web/app/src/option-pick/option-indicator.directive.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\n\nimport { OddsDisplayFormat } from '@frontend/sports/types/models/user-settings';\nimport { UserOddsFormatSettingsService } from '@frontend/sports/user/feature';\n\nimport { NativePrice } from './native-price';\n\n@Injectable({ providedIn: 'root' })\nexport class NativePriceFormatComparerService {\n private readonly userOddsFormatSettingsService = inject(UserOddsFormatSettingsService);\n\n lessThan(price: NativePrice, other: NativePrice): boolean {\n switch (this.userOddsFormatSettingsService.oddsFormat) {\n case OddsDisplayFormat.UK:\n return price.fraction.lessThan(other.fraction);\n case OddsDisplayFormat.US:\n return price.americanOdds.lessThan(other.americanOdds);\n default:\n return price.odds.lessThan(other.odds);\n }\n }\n\n greaterThan(price: NativePrice, other: NativePrice): boolean {\n switch (this.userOddsFormatSettingsService.oddsFormat) {\n case OddsDisplayFormat.UK:\n return price.fraction.greaterThan(other.fraction);\n case OddsDisplayFormat.US:\n return price.americanOdds.greaterThan(other.americanOdds);\n default:\n return price.odds.greaterThan(other.odds);\n }\n }\n\n greaterThanOrEqualTo(price: NativePrice, other: NativePrice): boolean {\n switch (this.userOddsFormatSettingsService.oddsFormat) {\n case OddsDisplayFormat.UK:\n return price.fraction.greaterThanOrEqualTo(other.fraction);\n case OddsDisplayFormat.US:\n return price.americanOdds.greaterThanOrEqualTo(other.americanOdds);\n default:\n return price.odds.greaterThanOrEqualTo(other.odds);\n }\n }\n\n isEqual(price: NativePrice, other: NativePrice): boolean {\n switch (this.userOddsFormatSettingsService.oddsFormat) {\n case OddsDisplayFormat.UK:\n return price.fraction.equals(other.fraction);\n case OddsDisplayFormat.US:\n return price.americanOdds.equals(other.americanOdds);\n default:\n return price.odds.equals(other.odds);\n }\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnChanges, OnDestroy, Renderer2 } from '@angular/core';\n\nimport { OddsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SimpleCallback } from '@frontend/sports/common/core/utils/extended-types';\nimport { ISimpleChanges } from '@frontend/sports/common/core/utils/simple-change';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\nimport { NativePrice, NativePriceFormatComparerService } from '@frontend/sports/odds/feature/native-price';\n\n@Directive({\n selector: '[msOptionIndicator]',\n standalone: true,\n})\nexport class OptionIndicatorDirective implements OnChanges, OnDestroy {\n @Input('msOptionIndicator') price?: NativePrice;\n @Input('msOptionIndicatorPriceId') priceId?: number; // @Ventsi we need to have a reset value, because there is no indication if prev and current odds are coming from same price.\n @HostBinding('class') className = 'option-indicator';\n\n private readonly INCREASED_CLASS = 'increased';\n private readonly DECREASED_CLASS = 'decreased';\n\n private removeOddsAnimationCallback?: SimpleCallback = undefined;\n\n private clearInterval?: SimpleCallback;\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n private timerService: TimerService,\n private oddsFormatComparerService: NativePriceFormatComparerService,\n private oddsConfig: OddsConfig,\n ) {}\n\n ngOnChanges(changes: ISimpleChanges): void {\n const odd = changes.price;\n\n this.removeClass(this.INCREASED_CLASS);\n this.removeClass(this.DECREASED_CLASS);\n\n this.clearInterval?.();\n\n if (!odd || !odd.currentValue || !odd.previousValue) {\n // when option becomes or was offline, then do nothing.\n return;\n }\n\n const priceId = changes.priceId;\n\n if (priceId && priceId.currentValue !== priceId.previousValue) {\n // When price id for this option indicator is changed, then do nothing.\n return;\n }\n\n if (odd && !odd.firstChange) {\n if (this.oddsFormatComparerService.greaterThan(odd.currentValue, odd.previousValue)) {\n this.handleOddsChange(this.INCREASED_CLASS);\n }\n\n if (this.oddsFormatComparerService.lessThan(odd.currentValue, odd.previousValue)) {\n this.handleOddsChange(this.DECREASED_CLASS);\n }\n }\n }\n\n private handleOddsChange(className: string): void {\n this.removeOddsAnimationCallback?.();\n this.scheduleRemoveClass(className);\n this.addClass(className);\n }\n\n ngOnDestroy(): void {\n this.clearInterval?.();\n }\n\n private addClass(className: string): void {\n this.clearInterval = this.timerService.setTimeout(() => this.renderer.addClass(this.elementRef.nativeElement, className));\n }\n\n private removeClass(className: string): void {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n }\n\n private scheduleRemoveClass(className: string): void {\n this.removeOddsAnimationCallback = this.timerService.setTimeout(\n () => this.removeClass(className),\n this.oddsConfig.display.oddsIndicatorAnimationDuration,\n );\n }\n}\n"],"names":["NativePriceFormatComparerService","constructor","userOddsFormatSettingsService","inject","UserOddsFormatSettingsService","lessThan","price","other","oddsFormat","fraction","americanOdds","odds","greaterThan","greaterThanOrEqualTo","isEqual","equals","factory","ɵfac","providedIn","_NativePriceFormatComparerService","OptionIndicatorDirective","renderer","elementRef","timerService","oddsFormatComparerService","oddsConfig","className","INCREASED_CLASS","DECREASED_CLASS","removeOddsAnimationCallback","undefined","ngOnChanges","changes","_a","odd","removeClass","clearInterval","currentValue","previousValue","priceId","firstChange","handleOddsChange","scheduleRemoveClass","addClass","ngOnDestroy","setTimeout","nativeElement","display","oddsIndicatorAnimationDuration","ɵɵdirectiveInject","Renderer2","ElementRef","TimerService","OddsConfig","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","_OptionIndicatorDirective"],"mappings":"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"}