@maestro_io/maestro-web-sdk 2.1.3 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/MaestroEventDelegate.d.ts +1 -0
  2. package/dist/components/atoms/SvgIcon/Icon.d.ts +0 -2
  3. package/dist/components/core/PanelManager/PanelManager.d.ts +3 -0
  4. package/dist/components/core/ScrollableContainer/ScrollableContainer.d.ts +3 -1
  5. package/dist/external/spatial-navigation/spatialNavigation.d.ts +1 -1
  6. package/dist/helpers/url.d.ts +1 -0
  7. package/dist/index.d.ts +3 -1
  8. package/dist/interfaces/IMaestroEvent.d.ts +27 -0
  9. package/dist/interfaces/IMaestroEventDelegate.d.ts +19 -6
  10. package/dist/interfaces/IMaestroManager.d.ts +8 -1
  11. package/dist/interfaces/IUserSettings.d.ts +36 -0
  12. package/dist/maestro-web-sdk.umd.js +3 -3
  13. package/dist/maestro-web-sdk.umd.js.map +1 -1
  14. package/dist/models/IPanel.d.ts +1 -2
  15. package/dist/modules/bets/view/BetsView.d.ts +4 -0
  16. package/dist/modules/bets/view/UserBets/BetsCard/BetsCard.d.ts +1 -0
  17. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardEvent.d.ts +1 -0
  18. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardFooter.d.ts +2 -1
  19. package/dist/modules/bets/view/UserBets/Boost/Boost.d.ts +2 -1
  20. package/dist/modules/bets/view/UserBets/Parlay/Parlay.d.ts +2 -1
  21. package/dist/modules/bets/view/UserBets/Straight/Straight.d.ts +2 -1
  22. package/dist/modules/bets/view/UserBets/Teaser/Teaser.d.ts +2 -1
  23. package/dist/modules/bets/view/components/Bet/Bet.d.ts +7 -0
  24. package/dist/modules/bets/view-model/BetsViewModel.d.ts +15 -0
  25. package/dist/modules/key-plays/interfaces/IKeyPlays.d.ts +1 -0
  26. package/dist/modules/key-plays/interfaces/IKeyPlaysResponse.d.ts +6 -6
  27. package/dist/modules/key-plays/view/KeyPlayCardView.d.ts +4 -1
  28. package/dist/modules/key-plays/view/KeyPlayErrorStateView.d.ts +2 -0
  29. package/dist/modules/key-plays/view-model/KeyPlaysViewModel.d.ts +5 -1
  30. package/dist/modules/stats/interfaces/IStats.d.ts +38 -12
  31. package/dist/modules/stats/mocks.d.ts +0 -80
  32. package/dist/modules/stats/utils/driveSummaryUtils.d.ts +18 -0
  33. package/dist/modules/stats/view/ActiveAthletes/ActiveAthletes.d.ts +6 -19
  34. package/dist/modules/stats/view/DriveSummary/DrivePlayCard.d.ts +26 -0
  35. package/dist/modules/stats/view/DriveSummary/DriveSummary.d.ts +24 -0
  36. package/dist/modules/stats/view/DriveSummary/index.d.ts +2 -0
  37. package/dist/modules/stats/view/GameLeaders/GameLeaders.d.ts +15 -4
  38. package/dist/modules/stats/view/MatchPredictor/MatchPredictorView.d.ts +13 -48
  39. package/dist/modules/stats/view/RecentGames/RecentGames.d.ts +10 -21
  40. package/dist/modules/stats/view/StatsItemView.d.ts +19 -0
  41. package/dist/modules/stats/view/StatsView.d.ts +3 -3
  42. package/dist/modules/stats/view/TeamStats/TeamStatsView.d.ts +2 -4
  43. package/dist/modules/stats/view/Teams/Teams.d.ts +10 -26
  44. package/dist/modules/stats/view/WinProbability/WinProbability.d.ts +10 -21
  45. package/dist/modules/stats/view-model/StatsViewModel.d.ts +149 -5
  46. package/dist/services/BetsService.d.ts +2 -2
  47. package/dist/services/NetworkManager/NetworkManager.d.ts +1 -3
  48. package/dist/services/NetworkManager/NetworkManagerFactory.d.ts +42 -0
  49. package/dist/services/NetworkManager/types.d.ts +77 -0
  50. package/dist/services/StatsService.d.ts +2 -2
  51. package/dist/services/UserSettingsManager.d.ts +63 -0
  52. package/dist/view-models/MaestroEventViewModel.d.ts +5 -0
  53. package/dist/view-models/PanelManagerViewModel.d.ts +24 -0
  54. package/dist/view-models/index.d.ts +4 -0
  55. package/package.json +1 -1
  56. package/dist/MaestroEventDelegate.js +0 -60
  57. package/dist/components/atoms/BaseButton/BaseButton.js +0 -11
  58. package/dist/components/atoms/BaseButton/index.js +0 -2
  59. package/dist/components/atoms/Image/index.js +0 -30
  60. package/dist/components/atoms/Rive/index.js +0 -53
  61. package/dist/components/atoms/SvgIcon/BetGeneralIcon.js +0 -9
  62. package/dist/components/atoms/SvgIcon/BetsIcon.js +0 -11
  63. package/dist/components/atoms/SvgIcon/BetsWarningIcon.js +0 -11
  64. package/dist/components/atoms/SvgIcon/CheckmarkIcon.js +0 -6
  65. package/dist/components/atoms/SvgIcon/CollapseIcon.js +0 -6
  66. package/dist/components/atoms/SvgIcon/ExpandIcon.js +0 -6
  67. package/dist/components/atoms/SvgIcon/FantasyIcon.d.ts +0 -6
  68. package/dist/components/atoms/SvgIcon/FantasyIcon.js +0 -8
  69. package/dist/components/atoms/SvgIcon/FlameIcon.js +0 -11
  70. package/dist/components/atoms/SvgIcon/Icon.js +0 -42
  71. package/dist/components/atoms/SvgIcon/KeyPlaysIcon.js +0 -10
  72. package/dist/components/atoms/SvgIcon/MobilePhoneIcon.js +0 -11
  73. package/dist/components/atoms/SvgIcon/PlayIcon.js +0 -8
  74. package/dist/components/atoms/SvgIcon/StatsIcon.js +0 -12
  75. package/dist/components/atoms/SvgIcon/TimesIcon.js +0 -6
  76. package/dist/components/atoms/SvgIcon/WarningIcon.js +0 -8
  77. package/dist/components/atoms/SvgIcon/index.js +0 -2
  78. package/dist/components/core/App/App.js +0 -41
  79. package/dist/components/core/App/index.js +0 -2
  80. package/dist/components/core/OverlayContainer.js +0 -58
  81. package/dist/components/core/PanelManager/PanelManager.js +0 -80
  82. package/dist/components/core/PanelManager/index.js +0 -2
  83. package/dist/components/core/ScrollableContainer/FocusableItem.js +0 -38
  84. package/dist/components/core/ScrollableContainer/ScrollableContainer.js +0 -166
  85. package/dist/components/core/ScrollableContainer/index.js +0 -2
  86. package/dist/components/molecules/ActionButton/ActionButton.js +0 -10
  87. package/dist/components/molecules/ActionButton/index.js +0 -2
  88. package/dist/components/molecules/Overlay/Overlay.js +0 -139
  89. package/dist/components/molecules/Overlay/index.js +0 -2
  90. package/dist/components/molecules/PanelNavButton/PanelNavButton.js +0 -40
  91. package/dist/components/molecules/PanelNavButton/index.js +0 -2
  92. package/dist/components/molecules/SegmentButton/SegmentButton.js +0 -10
  93. package/dist/components/molecules/SegmentButton/index.js +0 -2
  94. package/dist/components/molecules/WatchButton/WatchButton.js +0 -15
  95. package/dist/components/molecules/WatchButton/index.js +0 -2
  96. package/dist/components/organisms/PanelNavigation/PanelNavigation.js +0 -71
  97. package/dist/components/organisms/PanelNavigation/index.js +0 -2
  98. package/dist/components/organisms/SegmentController/SegmentController.js +0 -68
  99. package/dist/components/organisms/SegmentController/index.js +0 -2
  100. package/dist/external/AxiosNetworkClient.js +0 -83
  101. package/dist/external/LocalStorageCacheManager.js +0 -213
  102. package/dist/external/ReactRenderer.js +0 -86
  103. package/dist/external/mocks/MockExternalNetworkClient.js +0 -161
  104. package/dist/external/ports/cacheManager.js +0 -1
  105. package/dist/external/ports/networkClient.js +0 -1
  106. package/dist/external/ports/renderer.js +0 -1
  107. package/dist/external/spatial-navigation/index.js +0 -3
  108. package/dist/external/spatial-navigation/measureLayout.js +0 -30
  109. package/dist/external/spatial-navigation/spatialNavigation.js +0 -864
  110. package/dist/external/spatial-navigation/utils.js +0 -6
  111. package/dist/external/spatial-navigation/visualDebugger.js +0 -76
  112. package/dist/external/spatial-navigation/withFocusable.js +0 -245
  113. package/dist/helpers/Observable.js +0 -37
  114. package/dist/helpers/deliver-focus.d.ts +0 -5
  115. package/dist/helpers/deliver-focus.js +0 -12
  116. package/dist/index.js +0 -192
  117. package/dist/interfaces/IMaestroEvent.js +0 -6
  118. package/dist/interfaces/IMaestroEventDelegate.js +0 -1
  119. package/dist/interfaces/IMaestroManager.js +0 -1
  120. package/dist/models/IModel.js +0 -1
  121. package/dist/models/IPanel.js +0 -53
  122. package/dist/models/ITheme.js +0 -20
  123. package/dist/models/IWinningBet.js +0 -1
  124. package/dist/modules/bets/interfaces/IBets.js +0 -1
  125. package/dist/modules/bets/mocks.js +0 -572
  126. package/dist/modules/bets/view/BetsView.js +0 -116
  127. package/dist/modules/bets/view/HotProps/HotPropsView.js +0 -139
  128. package/dist/modules/bets/view/SixPack/SixPackView.js +0 -103
  129. package/dist/modules/bets/view/TabLoadFailureView.js +0 -12
  130. package/dist/modules/bets/view/UserBets/BetResult/BetResult.js +0 -6
  131. package/dist/modules/bets/view/UserBets/BetsCard/BetsCard.js +0 -122
  132. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardEvent.js +0 -34
  133. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardFooter.js +0 -22
  134. package/dist/modules/bets/view/UserBets/Boost/Boost.js +0 -6
  135. package/dist/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.js +0 -9
  136. package/dist/modules/bets/view/UserBets/Parlay/Parlay.js +0 -13
  137. package/dist/modules/bets/view/UserBets/Straight/Straight.js +0 -6
  138. package/dist/modules/bets/view/UserBets/Teaser/Teaser.js +0 -13
  139. package/dist/modules/bets/view/UserBets/UserBetsView.js +0 -114
  140. package/dist/modules/bets/view/components/Bet/Bet.js +0 -32
  141. package/dist/modules/bets/view/components/BetPill/BetPill.js +0 -6
  142. package/dist/modules/bets/view/components/BetsCard/BetsCard.js +0 -15
  143. package/dist/modules/bets/view/components/BetsCard/BetsCardHeader.js +0 -20
  144. package/dist/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.js +0 -14
  145. package/dist/modules/bets/view/components/LocationWarning/LocationWarning.js +0 -16
  146. package/dist/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.js +0 -63
  147. package/dist/modules/bets/view/components/PromoCodeBanner/index.js +0 -1
  148. package/dist/modules/bets/view-model/BetsViewModel.js +0 -767
  149. package/dist/modules/key-plays/constants.js +0 -292
  150. package/dist/modules/key-plays/interfaces/IKeyPlays.js +0 -14
  151. package/dist/modules/key-plays/interfaces/IKeyPlaysResponse.js +0 -1
  152. package/dist/modules/key-plays/view/KeyPlayCardScoreTagView.js +0 -13
  153. package/dist/modules/key-plays/view/KeyPlayCardView.js +0 -120
  154. package/dist/modules/key-plays/view/KeyPlayErrorStateView.js +0 -58
  155. package/dist/modules/key-plays/view/KeyPlaysView.js +0 -166
  156. package/dist/modules/key-plays/view-model/KeyPlaysViewModel.js +0 -182
  157. package/dist/modules/stats/interfaces/IStats.js +0 -1
  158. package/dist/modules/stats/mocks.js +0 -686
  159. package/dist/modules/stats/utils/renderTeamStatistic.js +0 -16
  160. package/dist/modules/stats/utils.js +0 -62
  161. package/dist/modules/stats/view/ActiveAthletes/ActiveAthletes.js +0 -78
  162. package/dist/modules/stats/view/ActiveAthletes/CollapsedAthletes/CollapsedAthletes.js +0 -27
  163. package/dist/modules/stats/view/ActiveAthletes/ExpandedAthletes/ExpandedAthletes.js +0 -15
  164. package/dist/modules/stats/view/ActiveAthletes/index.js +0 -2
  165. package/dist/modules/stats/view/GameLeaders/GameLeaders.js +0 -9
  166. package/dist/modules/stats/view/GameLeaders/index.js +0 -2
  167. package/dist/modules/stats/view/MatchPredictor/DonutChart/DonutChart.js +0 -55
  168. package/dist/modules/stats/view/MatchPredictor/DonutChart/index.js +0 -1
  169. package/dist/modules/stats/view/MatchPredictor/MatchPredictorView.js +0 -66
  170. package/dist/modules/stats/view/MatchPredictor/index.js +0 -2
  171. package/dist/modules/stats/view/RecentGames/RecentGames.js +0 -22
  172. package/dist/modules/stats/view/RecentGames/index.js +0 -2
  173. package/dist/modules/stats/view/StatsQRCode/StatsQRCodeView.js +0 -38
  174. package/dist/modules/stats/view/StatsQRCode/index.js +0 -1
  175. package/dist/modules/stats/view/StatsView.js +0 -107
  176. package/dist/modules/stats/view/TeamStats/TeamStatsView.js +0 -69
  177. package/dist/modules/stats/view/TeamStats/index.js +0 -1
  178. package/dist/modules/stats/view/Teams/StatsCarousel.js +0 -14
  179. package/dist/modules/stats/view/Teams/StatsProgressBar.js +0 -18
  180. package/dist/modules/stats/view/Teams/Teams.js +0 -42
  181. package/dist/modules/stats/view/Teams/index.js +0 -2
  182. package/dist/modules/stats/view/WinProbability/WinProbability.js +0 -27
  183. package/dist/modules/stats/view/WinProbability/index.js +0 -2
  184. package/dist/modules/stats/view/components/AthletesStatistics/AthletesStatistics.js +0 -29
  185. package/dist/modules/stats/view/components/AthletesStatistics/StatisticTable.js +0 -12
  186. package/dist/modules/stats/view/components/AthletesStatistics/index.js +0 -2
  187. package/dist/modules/stats/view/index.js +0 -2
  188. package/dist/modules/stats/view-model/StatsViewModel.js +0 -90
  189. package/dist/services/BetsService.js +0 -102
  190. package/dist/services/NetworkManager/NetworkManager.js +0 -410
  191. package/dist/services/NetworkManager/errors.js +0 -45
  192. package/dist/services/StatsService.js +0 -68
  193. package/dist/services/ThemeManager/constants.js +0 -47
  194. package/dist/test-polyfills.js +0 -15
  195. package/dist/types/OverlayTypes.js +0 -4
  196. package/dist/view-models/MaestroEventViewModel.js +0 -168
  197. package/dist/view-models/OverlayViewModel.js +0 -222
  198. package/dist/view-models/PanelManagerViewModel.js +0 -80
  199. package/dist/view-models/ViewModel.js +0 -32
  200. package/dist/view-models/index.js +0 -59
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
- import './TeamsView.styles.css';
3
- import Image from '@/components/atoms/Image';
4
- import { withFocusable, } from '@/external/spatial-navigation';
5
- import { CarouselSlider, StatsCarousel } from './StatsCarousel';
6
- import { renderTeamStatistic } from '../../utils/renderTeamStatistic';
7
- const Teams = (props) => {
8
- const teams = [props.homeTeam, props.awayTeam];
9
- return (React.createElement("section", { className: "stats-teams-view focus-ring", "data-focused": props.focused, style: {
10
- '--home-team': `#${props.homeTeam.color}`,
11
- '--away-team': `#${props.awayTeam.color}`,
12
- }, "data-live": props.isLive },
13
- React.createElement("div", { className: "stats-teams-view-header" }, teams.map((team) => (React.createElement("div", { key: team.id, className: "stats-team" },
14
- React.createElement(Image, { src: team.logo, alt: team.name, crossOrigin: "anonymous" }),
15
- React.createElement("div", null,
16
- React.createElement("span", { className: props.isLive ? 'T05_ALT' : 'T30' }, team.abbreviation),
17
- React.createElement("p", { className: "T02" }, team.record)))))),
18
- props.isLive && (React.createElement("div", { className: "statistics" },
19
- React.createElement("table", { className: "statistics-table" },
20
- React.createElement("thead", null,
21
- React.createElement("tr", null,
22
- React.createElement("th", { className: "T10" }),
23
- props.linescoresHeader.map((header) => (React.createElement("th", { key: header, className: "T10" }, header))))),
24
- React.createElement("tbody", null, teams.map((team) => (React.createElement("tr", { key: team.id },
25
- React.createElement("td", { className: "T30" }, team.name),
26
- team.linescores.map((lineScore, index) => (React.createElement("td", { key: `${lineScore}-${index}`, className: "T10" }, lineScore)))))))),
27
- props.statistics && props.statistics.length > 0 && (React.createElement(StatsCarousel, { itemsLength: props.statistics.length }, props.statistics.map((statistic) => (React.createElement(CarouselSlider, { itemsLength: props.statistics.length, key: statistic.displayName }, renderTeamStatistic({
28
- statisticName: statistic.displayName,
29
- firstDisplayValue: statistic.homeTeamValue,
30
- secondDisplayValue: statistic.awayTeamValue,
31
- awayProgressValue: statistic.awayTeamValue,
32
- homeProgressValue: statistic.homeTeamValue,
33
- classNames: {
34
- container: 'score-statistics',
35
- header: 'score-statistics-header',
36
- firstValue: 'T30',
37
- secondValue: 'T30',
38
- statisticName: 'statistic-name T02',
39
- },
40
- }))))))))));
41
- };
42
- export default withFocusable()(Teams);
@@ -1,2 +0,0 @@
1
- import Teams from './Teams';
2
- export default Teams;
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
- import './WinProbability.styles.css';
3
- import { withFocusable, } from '@/external/spatial-navigation';
4
- import Image from '@/components/atoms/Image';
5
- const WinProbability = (props) => {
6
- return (React.createElement("section", { className: "win-probability focus-ring", "data-focused": props.focused },
7
- React.createElement("h5", { className: "T05_ALT" }, "Win Probability"),
8
- React.createElement("div", { className: "win-probability-card" }, [props.awayTeam, props.homeTeam].map((team, index) => {
9
- return (React.createElement("div", { className: "team", key: team.id },
10
- React.createElement(Image, { src: team.logo, alt: `${team.abbreviation} logo`, crossOrigin: "anonymous" }),
11
- React.createElement("div", { className: "info" },
12
- React.createElement("span", { className: "T60" }, team.winPercentage ? `${team.winPercentage}%` : '–'),
13
- React.createElement("div", { className: "name T01" },
14
- index === 0 ? React.createElement(AwayTeamChartLine, null) : React.createElement(HomeTeamChartLine, null),
15
- React.createElement("span", null, team.abbreviation)))));
16
- })),
17
- React.createElement(Image, { src: props.chartImageUrl, alt: "Win Probability Chart", crossOrigin: "anonymous" })));
18
- };
19
- const AwayTeamChartLine = () => {
20
- return (React.createElement("svg", { width: "25", height: "4", viewBox: "0 0 25 4", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
21
- React.createElement("path", { d: "M2.33337 2H22.3334", stroke: "white", strokeWidth: "4", strokeLinecap: "round" })));
22
- };
23
- const HomeTeamChartLine = () => {
24
- return (React.createElement("svg", { width: "25", height: "4", viewBox: "0 0 25 4", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
25
- React.createElement("path", { d: "M2.66992 2H22.6699", stroke: "white", strokeWidth: "4", strokeLinecap: "round", strokeDasharray: "2 7" })));
26
- };
27
- export default withFocusable()(WinProbability);
@@ -1,2 +0,0 @@
1
- import WinProbability from './WinProbability';
2
- export default WinProbability;
@@ -1,29 +0,0 @@
1
- import React from 'react';
2
- import StatisticsTable from './StatisticTable';
3
- import Image from '@/components/atoms/Image';
4
- import { withFocusable, } from '@/external/spatial-navigation';
5
- import './AthleteStatistics.styles.css';
6
- const AthletesStatistics = (props) => {
7
- const item = props.item;
8
- return (React.createElement("div", { className: "athletes-statistics focus-ring", "data-focused": props.focused },
9
- !!item.displayName && (React.createElement("span", { className: "T05_ALT" }, item.displayName)),
10
- React.createElement("div", { className: "leaders-wrapper" }, [item.awayAthlete, item.homeAthlete].map((athlete) => {
11
- return (React.createElement("div", { className: "leader", key: athlete.id + item.displayName },
12
- React.createElement("div", { className: "image-wrapper T02", "data-position": athlete.position },
13
- React.createElement(Image, { src: athlete.headshot, alt: `${item.displayName} ${athlete.displayName} Headshot Image` })),
14
- React.createElement("div", { className: "leader-info" },
15
- React.createElement("div", { className: "main-statistic T05_ALT" },
16
- athlete.shortName,
17
- ' ',
18
- React.createElement("span", { className: "athlete-number T02" },
19
- "#",
20
- athlete.jersey)),
21
- Array.isArray(athlete.statistics) &&
22
- !!athlete.statistics.length && (React.createElement("div", { className: "main-statistic T30" },
23
- athlete.statistics[0].displayValue,
24
- ' ',
25
- React.createElement("span", { className: "athlete-points T02" }, athlete.statistics[0].abbreviation))))));
26
- })),
27
- React.createElement(StatisticsTable, { item: item })));
28
- };
29
- export default withFocusable()(AthletesStatistics);
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- const StatisticsTable = (props) => {
3
- return (React.createElement("table", { className: "athletes-statistics-table T10" },
4
- React.createElement("tbody", null, props.item.awayAthlete.statistics.slice(1).map((statistic, index) => {
5
- return (React.createElement("tr", { key: statistic.abbreviation },
6
- React.createElement("td", null, statistic.displayValue),
7
- React.createElement("td", null, statistic.abbreviation),
8
- React.createElement("td", null, props.item.homeAthlete.statistics[index + 1].displayValue ||
9
- '0')));
10
- }))));
11
- };
12
- export default StatisticsTable;
@@ -1,2 +0,0 @@
1
- import AthletesStatistics from './AthletesStatistics';
2
- export default AthletesStatistics;
@@ -1,2 +0,0 @@
1
- export { default } from './StatsView';
2
- export { default as TeamStatsView } from './TeamStats';
@@ -1,90 +0,0 @@
1
- import { Observable } from '../../../helpers/Observable';
2
- import { ViewModel } from '../../../view-models/ViewModel';
3
- import { MOCK_STATS_API_PRE_GAME_RESPONSE } from '../mocks';
4
- // TODO: Implement actual ViewModel
5
- export class StatsViewModel extends ViewModel {
6
- constructor(_eventId, // TODO: Will be used when implementing real API calls
7
- options = {}) {
8
- super();
9
- // Observable properties
10
- Object.defineProperty(this, "statsData", {
11
- enumerable: true,
12
- configurable: true,
13
- writable: true,
14
- value: new Observable(null)
15
- });
16
- Object.defineProperty(this, "isDataLoading", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: new Observable(true)
21
- });
22
- Object.defineProperty(this, "hasEverSuccessfullyLoaded", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: new Observable(false)
27
- });
28
- // Properties
29
- Object.defineProperty(this, "useMockData", {
30
- enumerable: true,
31
- configurable: true,
32
- writable: true,
33
- value: false
34
- });
35
- Object.defineProperty(this, "initialized", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: false
40
- });
41
- // TODO: Store eventId when implementing real API calls
42
- // this.eventId = _eventId;
43
- this.useMockData = options.useMockData || false;
44
- }
45
- /**
46
- * Initialize the ViewModel and start data fetching
47
- */
48
- async init() {
49
- await this.fetchNewData();
50
- this.initialized = true;
51
- }
52
- /**
53
- * Clean up resources when the ViewModel is no longer needed
54
- */
55
- cleanup() {
56
- this.initialized = false;
57
- }
58
- /**
59
- * Fetch new stats data immediately (one-time)
60
- */
61
- async fetchNewData() {
62
- this.isDataLoading.value = true;
63
- try {
64
- // Handle mock data if enabled
65
- if (this.useMockData) {
66
- await this.fetchMockData();
67
- return;
68
- }
69
- // TODO: Implement real API call when stats service is available
70
- // For now, fall back to mock data
71
- await this.fetchMockData();
72
- this.isDataLoading.value = false;
73
- }
74
- catch (error) {
75
- console.error('Error fetching stats data:', error);
76
- this.isDataLoading.value = false;
77
- }
78
- }
79
- /**
80
- * Fetch mock data for testing
81
- */
82
- async fetchMockData() {
83
- // Simulate network delay
84
- await new Promise((resolve) => setTimeout(resolve, 100));
85
- this.statsData.value = MOCK_STATS_API_PRE_GAME_RESPONSE;
86
- this.hasEverSuccessfullyLoaded.value = true;
87
- this.isDataLoading.value = false;
88
- }
89
- }
90
- export default StatsViewModel;
@@ -1,102 +0,0 @@
1
- import NetworkManager, { HttpMethod } from './NetworkManager/NetworkManager';
2
- /**
3
- * Service for handling bets-related API calls
4
- */
5
- class BetsService {
6
- constructor(delegate) {
7
- Object.defineProperty(this, "networkManager", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: void 0
12
- });
13
- this.networkManager = NetworkManager.getInstance({
14
- externalBaseURL: delegate.getBettingAPIBaseURL(),
15
- });
16
- }
17
- /**
18
- * Get non-personalized bets for an event
19
- *
20
- * @param eventID - The ID of the event
21
- * @returns Promise with the bets data
22
- */
23
- async getNonPersonalizedBets(eventID) {
24
- return this.networkManager.externalApiRequest({
25
- endpoint: this.nonPersonalizedBetsEndpoint(eventID),
26
- method: HttpMethod.GET,
27
- params: {},
28
- headers: {},
29
- });
30
- }
31
- /**
32
- * Get personalized bets for an event
33
- *
34
- * @param eventID - The ID of the event
35
- * @param swid - The ESPN SWID parameter
36
- * @param jwt - The authorization JWT
37
- * @returns Promise with the personalized bets data
38
- */
39
- async getPersonalizedBets(eventID, swid, jwt) {
40
- return this.networkManager.externalApiRequest({
41
- endpoint: this.personalizedBetsEndpoint(eventID),
42
- method: HttpMethod.GET,
43
- params: { swid },
44
- headers: { 'x-p13n-auth': jwt },
45
- });
46
- }
47
- /**
48
- * Start polling for non-personalized bets
49
- *
50
- * @param eventID - The ID of the event
51
- * @param interval - The polling interval in milliseconds
52
- * @param onData - Callback for successful data fetch
53
- * @param onError - Callback for errors
54
- * @returns Object with a stop function to stop polling
55
- */
56
- pollNonPersonalizedBets(eventID, interval, onData, onError) {
57
- return this.networkManager.pollExternalApiRequest({
58
- endpoint: this.nonPersonalizedBetsEndpoint(eventID),
59
- interval,
60
- method: HttpMethod.GET,
61
- params: {},
62
- headers: {},
63
- onData,
64
- onError,
65
- });
66
- }
67
- /**
68
- * Start polling for personalized bets
69
- *
70
- * @param eventID - The ID of the event
71
- * @param swid - The ESPN SWID parameter
72
- * @param jwt - The authorization JWT
73
- * @param interval - The polling interval in milliseconds
74
- * @param onData - Callback for successful data fetch
75
- * @param onError - Callback for errors
76
- * @returns Object with a stop function to stop polling
77
- */
78
- pollPersonalizedBets(eventID, swid, jwt, interval, onData, onError) {
79
- return this.networkManager.pollExternalApiRequest({
80
- endpoint: this.personalizedBetsEndpoint(eventID),
81
- interval,
82
- method: HttpMethod.GET,
83
- params: { swid },
84
- headers: { 'x-p13n-auth': jwt },
85
- onData,
86
- onError,
87
- });
88
- }
89
- /**
90
- * Get the endpoint for non-personalized bets
91
- */
92
- nonPersonalizedBetsEndpoint(eventID) {
93
- return `/site/v2/events/${eventID}/odds`;
94
- }
95
- /**
96
- * Get the endpoint for personalized bets
97
- */
98
- personalizedBetsEndpoint(eventID) {
99
- return `/personalized/site/v2/events/${eventID}/odds`;
100
- }
101
- }
102
- export default BetsService;