@maestro_io/maestro-web-sdk 2.1.2 → 2.2.0

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 (186) hide show
  1. package/dist/MaestroEventDelegate.d.ts +1 -0
  2. package/dist/components/atoms/Rive/index.d.ts +1 -0
  3. package/dist/components/atoms/SvgIcon/Icon.d.ts +0 -2
  4. package/dist/components/core/ScrollableContainer/ScrollableContainer.d.ts +3 -1
  5. package/dist/components/molecules/ActionButton/ActionButton.d.ts +1 -0
  6. package/dist/components/molecules/PanelNavButton/PanelNavButton.d.ts +1 -0
  7. package/dist/components/organisms/SegmentController/SegmentController.d.ts +2 -2
  8. package/dist/external/spatial-navigation/index.d.ts +2 -3
  9. package/dist/external/spatial-navigation/spatialNavigation.d.ts +3 -5
  10. package/dist/external/spatial-navigation/withFocusable.d.ts +1 -0
  11. package/dist/interfaces/IMaestroEvent.d.ts +14 -0
  12. package/dist/interfaces/IMaestroEventDelegate.d.ts +19 -6
  13. package/dist/maestro-web-sdk.umd.js +3 -3
  14. package/dist/maestro-web-sdk.umd.js.map +1 -1
  15. package/dist/models/IPanel.d.ts +1 -2
  16. package/dist/modules/bets/view/HotProps/HotPropsView.d.ts +7 -6
  17. package/dist/modules/bets/view/SixPack/SixPackView.d.ts +2 -2
  18. package/dist/modules/bets/view/TabLoadFailureView.d.ts +1 -0
  19. package/dist/modules/bets/view/UserBets/BetsCard/BetsCard.d.ts +7 -6
  20. package/dist/modules/bets/view/components/Bet/Bet.d.ts +1 -0
  21. package/dist/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.d.ts +2 -2
  22. package/dist/modules/key-plays/view/KeyPlayCardView.d.ts +0 -4
  23. package/dist/modules/stats/interfaces/IStats.d.ts +44 -15
  24. package/dist/modules/stats/utils/driveSummaryUtils.d.ts +18 -0
  25. package/dist/modules/stats/utils/renderTeamStatistic.d.ts +21 -0
  26. package/dist/modules/stats/view/ActiveAthletes/ActiveAthletes.d.ts +21 -0
  27. package/dist/modules/stats/view/ActiveAthletes/CollapsedAthletes/CollapsedAthletes.d.ts +5 -0
  28. package/dist/modules/stats/view/ActiveAthletes/ExpandedAthletes/ExpandedAthletes.d.ts +10 -0
  29. package/dist/modules/stats/view/ActiveAthletes/index.d.ts +2 -0
  30. package/dist/modules/stats/view/DriveSummary/DrivePlayCard.d.ts +26 -0
  31. package/dist/modules/stats/view/DriveSummary/DriveSummary.d.ts +24 -0
  32. package/dist/modules/stats/view/DriveSummary/index.d.ts +2 -0
  33. package/dist/modules/stats/view/GameLeaders/GameLeaders.d.ts +15 -25
  34. package/dist/modules/stats/view/MatchPredictor/MatchPredictorView.d.ts +13 -47
  35. package/dist/modules/stats/view/RecentGames/RecentGames.d.ts +11 -21
  36. package/dist/modules/stats/view/StatsItemView.d.ts +19 -0
  37. package/dist/modules/stats/view/StatsQRCode/StatsQRCodeView.d.ts +1 -0
  38. package/dist/modules/stats/view/StatsView.d.ts +3 -3
  39. package/dist/modules/stats/view/TeamStats/TeamStatsView.d.ts +52 -0
  40. package/dist/modules/stats/view/TeamStats/index.d.ts +2 -0
  41. package/dist/modules/stats/view/Teams/Teams.d.ts +11 -26
  42. package/dist/modules/stats/view/WinProbability/WinProbability.d.ts +11 -21
  43. package/dist/modules/stats/view/components/AthletesStatistics/AthletesStatistics.d.ts +19 -3
  44. package/dist/modules/stats/view/components/AthletesStatistics/StatisticTable.d.ts +2 -8
  45. package/dist/modules/stats/view/index.d.ts +1 -0
  46. package/dist/modules/stats/view-model/StatsViewModel.d.ts +149 -5
  47. package/dist/services/StatsService.d.ts +36 -0
  48. package/dist/view-models/MaestroEventViewModel.d.ts +7 -0
  49. package/package.json +1 -1
  50. package/dist/MaestroEventDelegate.js +0 -60
  51. package/dist/components/atoms/BaseButton/BaseButton.js +0 -11
  52. package/dist/components/atoms/BaseButton/index.js +0 -2
  53. package/dist/components/atoms/Image/index.js +0 -30
  54. package/dist/components/atoms/Rive/index.js +0 -52
  55. package/dist/components/atoms/SvgIcon/BetGeneralIcon.js +0 -9
  56. package/dist/components/atoms/SvgIcon/BetsIcon.js +0 -11
  57. package/dist/components/atoms/SvgIcon/BetsWarningIcon.js +0 -11
  58. package/dist/components/atoms/SvgIcon/CheckmarkIcon.js +0 -6
  59. package/dist/components/atoms/SvgIcon/CollapseIcon.js +0 -6
  60. package/dist/components/atoms/SvgIcon/ExpandIcon.js +0 -6
  61. package/dist/components/atoms/SvgIcon/FantasyIcon.d.ts +0 -6
  62. package/dist/components/atoms/SvgIcon/FantasyIcon.js +0 -8
  63. package/dist/components/atoms/SvgIcon/FlameIcon.js +0 -11
  64. package/dist/components/atoms/SvgIcon/Icon.js +0 -42
  65. package/dist/components/atoms/SvgIcon/KeyPlaysIcon.js +0 -10
  66. package/dist/components/atoms/SvgIcon/MobilePhoneIcon.js +0 -11
  67. package/dist/components/atoms/SvgIcon/PlayIcon.js +0 -8
  68. package/dist/components/atoms/SvgIcon/StatsIcon.js +0 -12
  69. package/dist/components/atoms/SvgIcon/TimesIcon.js +0 -6
  70. package/dist/components/atoms/SvgIcon/WarningIcon.js +0 -8
  71. package/dist/components/atoms/SvgIcon/index.js +0 -2
  72. package/dist/components/core/App/App.js +0 -41
  73. package/dist/components/core/App/index.js +0 -2
  74. package/dist/components/core/OverlayContainer.js +0 -58
  75. package/dist/components/core/PanelManager/PanelManager.js +0 -80
  76. package/dist/components/core/PanelManager/index.js +0 -2
  77. package/dist/components/core/ScrollableContainer/FocusableItem.js +0 -38
  78. package/dist/components/core/ScrollableContainer/ScrollableContainer.js +0 -166
  79. package/dist/components/core/ScrollableContainer/index.js +0 -2
  80. package/dist/components/molecules/ActionButton/ActionButton.js +0 -10
  81. package/dist/components/molecules/ActionButton/index.js +0 -2
  82. package/dist/components/molecules/Overlay/Overlay.js +0 -139
  83. package/dist/components/molecules/Overlay/index.js +0 -2
  84. package/dist/components/molecules/PanelNavButton/PanelNavButton.js +0 -40
  85. package/dist/components/molecules/PanelNavButton/index.js +0 -2
  86. package/dist/components/molecules/SegmentButton/SegmentButton.js +0 -10
  87. package/dist/components/molecules/SegmentButton/index.js +0 -2
  88. package/dist/components/molecules/WatchButton/WatchButton.js +0 -15
  89. package/dist/components/molecules/WatchButton/index.js +0 -2
  90. package/dist/components/organisms/PanelNavigation/PanelNavigation.js +0 -72
  91. package/dist/components/organisms/PanelNavigation/index.js +0 -2
  92. package/dist/components/organisms/SegmentController/SegmentController.js +0 -69
  93. package/dist/components/organisms/SegmentController/index.js +0 -2
  94. package/dist/external/AxiosNetworkClient.js +0 -83
  95. package/dist/external/LocalStorageCacheManager.js +0 -213
  96. package/dist/external/ReactRenderer.js +0 -86
  97. package/dist/external/mocks/MockExternalNetworkClient.js +0 -161
  98. package/dist/external/ports/cacheManager.js +0 -1
  99. package/dist/external/ports/networkClient.js +0 -1
  100. package/dist/external/ports/renderer.js +0 -1
  101. package/dist/external/spatial-navigation/index.js +0 -4
  102. package/dist/external/spatial-navigation/measureLayout.js +0 -30
  103. package/dist/external/spatial-navigation/spatialNavigation.js +0 -875
  104. package/dist/external/spatial-navigation/utils.js +0 -6
  105. package/dist/external/spatial-navigation/visualDebugger.js +0 -76
  106. package/dist/external/spatial-navigation/withFocusable.js +0 -238
  107. package/dist/helpers/Observable.js +0 -37
  108. package/dist/helpers/deliver-focus.d.ts +0 -5
  109. package/dist/helpers/deliver-focus.js +0 -12
  110. package/dist/index.js +0 -192
  111. package/dist/interfaces/IMaestroEvent.js +0 -6
  112. package/dist/interfaces/IMaestroEventDelegate.js +0 -1
  113. package/dist/interfaces/IMaestroManager.js +0 -1
  114. package/dist/models/IModel.js +0 -1
  115. package/dist/models/IPanel.js +0 -53
  116. package/dist/models/ITheme.js +0 -20
  117. package/dist/models/IWinningBet.js +0 -1
  118. package/dist/modules/bets/interfaces/IBets.js +0 -1
  119. package/dist/modules/bets/mocks.js +0 -572
  120. package/dist/modules/bets/view/BetsView.js +0 -116
  121. package/dist/modules/bets/view/HotProps/HotPropsView.js +0 -139
  122. package/dist/modules/bets/view/SixPack/SixPackView.js +0 -103
  123. package/dist/modules/bets/view/TabLoadFailureView.js +0 -12
  124. package/dist/modules/bets/view/UserBets/BetResult/BetResult.js +0 -6
  125. package/dist/modules/bets/view/UserBets/BetsCard/BetsCard.js +0 -122
  126. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardEvent.js +0 -34
  127. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardFooter.js +0 -22
  128. package/dist/modules/bets/view/UserBets/Boost/Boost.js +0 -6
  129. package/dist/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.js +0 -9
  130. package/dist/modules/bets/view/UserBets/Parlay/Parlay.js +0 -13
  131. package/dist/modules/bets/view/UserBets/Straight/Straight.js +0 -6
  132. package/dist/modules/bets/view/UserBets/Teaser/Teaser.js +0 -13
  133. package/dist/modules/bets/view/UserBets/UserBetsView.js +0 -114
  134. package/dist/modules/bets/view/components/Bet/Bet.js +0 -32
  135. package/dist/modules/bets/view/components/BetPill/BetPill.js +0 -6
  136. package/dist/modules/bets/view/components/BetsCard/BetsCard.js +0 -15
  137. package/dist/modules/bets/view/components/BetsCard/BetsCardHeader.js +0 -20
  138. package/dist/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.js +0 -14
  139. package/dist/modules/bets/view/components/LocationWarning/LocationWarning.js +0 -16
  140. package/dist/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.js +0 -63
  141. package/dist/modules/bets/view/components/PromoCodeBanner/index.js +0 -1
  142. package/dist/modules/bets/view-model/BetsViewModel.js +0 -767
  143. package/dist/modules/key-plays/constants.js +0 -292
  144. package/dist/modules/key-plays/interfaces/IKeyPlays.js +0 -14
  145. package/dist/modules/key-plays/interfaces/IKeyPlaysResponse.js +0 -1
  146. package/dist/modules/key-plays/view/KeyPlayCardScoreTagView.js +0 -13
  147. package/dist/modules/key-plays/view/KeyPlayCardView.js +0 -142
  148. package/dist/modules/key-plays/view/KeyPlayErrorStateView.js +0 -58
  149. package/dist/modules/key-plays/view/KeyPlaysView.js +0 -167
  150. package/dist/modules/key-plays/view-model/KeyPlaysViewModel.js +0 -182
  151. package/dist/modules/stats/interfaces/IStats.js +0 -1
  152. package/dist/modules/stats/mocks.js +0 -546
  153. package/dist/modules/stats/utils.js +0 -62
  154. package/dist/modules/stats/view/GameLeaders/GameLeaders.js +0 -9
  155. package/dist/modules/stats/view/GameLeaders/index.js +0 -2
  156. package/dist/modules/stats/view/MatchPredictor/DonutChart/DonutChart.js +0 -55
  157. package/dist/modules/stats/view/MatchPredictor/DonutChart/index.js +0 -1
  158. package/dist/modules/stats/view/MatchPredictor/MatchPredictorView.js +0 -66
  159. package/dist/modules/stats/view/MatchPredictor/index.js +0 -2
  160. package/dist/modules/stats/view/RecentGames/RecentGames.js +0 -22
  161. package/dist/modules/stats/view/RecentGames/index.js +0 -2
  162. package/dist/modules/stats/view/StatsQRCode/StatsQRCodeView.js +0 -38
  163. package/dist/modules/stats/view/StatsQRCode/index.js +0 -1
  164. package/dist/modules/stats/view/StatsView.js +0 -87
  165. package/dist/modules/stats/view/Teams/StatsCarousel.js +0 -14
  166. package/dist/modules/stats/view/Teams/StatsProgressBar.js +0 -14
  167. package/dist/modules/stats/view/Teams/Teams.js +0 -35
  168. package/dist/modules/stats/view/Teams/index.js +0 -2
  169. package/dist/modules/stats/view/WinProbability/WinProbability.js +0 -27
  170. package/dist/modules/stats/view/WinProbability/index.js +0 -2
  171. package/dist/modules/stats/view/components/AthletesStatistics/AthletesStatistics.js +0 -28
  172. package/dist/modules/stats/view/components/AthletesStatistics/StatisticTable.js +0 -11
  173. package/dist/modules/stats/view/components/AthletesStatistics/index.js +0 -2
  174. package/dist/modules/stats/view/index.js +0 -1
  175. package/dist/modules/stats/view-model/StatsViewModel.js +0 -90
  176. package/dist/services/BetsService.js +0 -102
  177. package/dist/services/NetworkManager/NetworkManager.js +0 -410
  178. package/dist/services/NetworkManager/errors.js +0 -45
  179. package/dist/services/ThemeManager/constants.js +0 -47
  180. package/dist/test-polyfills.js +0 -15
  181. package/dist/types/OverlayTypes.js +0 -4
  182. package/dist/view-models/MaestroEventViewModel.js +0 -156
  183. package/dist/view-models/OverlayViewModel.js +0 -222
  184. package/dist/view-models/PanelManagerViewModel.js +0 -80
  185. package/dist/view-models/ViewModel.js +0 -32
  186. package/dist/view-models/index.js +0 -59
@@ -1,116 +0,0 @@
1
- import React, { Component } from 'react';
2
- import SixPackView from './SixPack/SixPackView';
3
- import './BetsView.styles.css';
4
- import ScrollableContainer from '@/components/core/ScrollableContainer';
5
- import SDK from '@/index';
6
- import UserBetsView from './UserBets/UserBetsView';
7
- import HotPropsView from './HotProps/HotPropsView';
8
- import GamblingDisclaimer from './components/GamblingDisclaimer/GamblingDisclaimer';
9
- import LocationWarning from './components/LocationWarning/LocationWarning';
10
- import TabLoadFailureView from './TabLoadFailureView';
11
- import { BetItemPromoCode } from './components/PromoCodeBanner';
12
- class BetsView extends Component {
13
- constructor(props) {
14
- super(props);
15
- Object.defineProperty(this, "container", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: null
20
- });
21
- Object.defineProperty(this, "betsItemsUnsub", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: true,
25
- value: null
26
- });
27
- Object.defineProperty(this, "isDataLoadingUnsub", {
28
- enumerable: true,
29
- configurable: true,
30
- writable: true,
31
- value: null
32
- });
33
- Object.defineProperty(this, "errorStateUnsub", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: null
38
- });
39
- Object.defineProperty(this, "vm", {
40
- enumerable: true,
41
- configurable: true,
42
- writable: true,
43
- value: void 0
44
- });
45
- Object.defineProperty(this, "renderBetItem", {
46
- enumerable: true,
47
- configurable: true,
48
- writable: true,
49
- value: (item) => {
50
- switch (item.type) {
51
- case 'sixPack':
52
- return React.createElement(SixPackView, { key: item.id, item: item });
53
- case 'userBets':
54
- return React.createElement(UserBetsView, { item: item, key: item.id });
55
- case 'hotProps':
56
- return (React.createElement(HotPropsView, { focusKey: `hot-props-view-${item.id}`, key: item.id, item: item }));
57
- case 'gamblingMessage':
58
- return React.createElement(GamblingDisclaimer, { text: item.data.text, key: item.id });
59
- case 'locationDisclaimer':
60
- return (React.createElement(LocationWarning, { key: item.id, disclaimerText: item.data.text }));
61
- case 'promo':
62
- return (React.createElement(BetItemPromoCode, { description: item.data.description, logo: item.data.logo, qrCode: item.data.qrCode, title: item.data.title, showLogo: !!item.data.logo, key: item.id }));
63
- default:
64
- console.warn(`Unknown bet item type: ${item.type}`);
65
- return null;
66
- }
67
- }
68
- });
69
- Object.defineProperty(this, "clearTabLoadFailure", {
70
- enumerable: true,
71
- configurable: true,
72
- writable: true,
73
- value: () => {
74
- this.vm.clearTabLoadFailure();
75
- }
76
- });
77
- this.vm = SDK.getMaestroEventViewModel().betsViewModel;
78
- this.state = {
79
- container: null,
80
- betsItems: this.vm.betsItems.value,
81
- isDataLoading: this.vm.isDataLoading.value,
82
- errorState: this.vm.errorState.value,
83
- };
84
- }
85
- componentDidMount() {
86
- this.setState({
87
- container: this.container,
88
- });
89
- this.betsItemsUnsub = this.vm.betsItems.subscribe((value) => {
90
- this.setState({ betsItems: value });
91
- });
92
- this.isDataLoadingUnsub = this.vm.isDataLoading.subscribe((value) => {
93
- this.setState({ isDataLoading: value });
94
- });
95
- this.errorStateUnsub = this.vm.errorState.subscribe((value) => {
96
- this.setState({ errorState: value });
97
- });
98
- // Initialize the view model
99
- this.vm.init();
100
- }
101
- componentWillUnmount() {
102
- this.betsItemsUnsub && this.betsItemsUnsub();
103
- this.isDataLoadingUnsub && this.isDataLoadingUnsub();
104
- this.errorStateUnsub && this.errorStateUnsub();
105
- // Clean up the view model
106
- this.vm.cleanup();
107
- }
108
- render() {
109
- return (React.createElement(ScrollableContainer, { scrollableContainerRef: this.state.container, containerTopOffset: 40, "data-has-error": this.state.errorState !== 'none' }, this.state.errorState === 'tabLoadFailure' ? (React.createElement("div", null,
110
- React.createElement(TabLoadFailureView, { onEnterPress: this.clearTabLoadFailure }),
111
- React.createElement("div", { className: "bets-bottom-padding" }))) : (React.createElement("div", { className: "bets-view", ref: (e) => (this.container = e) },
112
- this.state.betsItems.map(this.renderBetItem),
113
- React.createElement("div", { className: "bets-bottom-padding" })))));
114
- }
115
- }
116
- export default BetsView;
@@ -1,139 +0,0 @@
1
- import React from 'react';
2
- import { withFocusable, setFocus, } from '@/external/spatial-navigation';
3
- import Bet from '../components/Bet/Bet';
4
- import BetsCard from '../components/BetsCard/BetsCard';
5
- import Icon from '@/components/atoms/SvgIcon/Icon';
6
- import { DEFAULT_SCROLLABLE_CONTAINER_CONTEXT, SCROLLABLE_CONTEXT_TYPE, } from '@/components/core/ScrollableContainer/ScrollableContainer';
7
- import './HotPropsView.css';
8
- import BetsCardHeader from '../components/BetsCard/BetsCardHeader';
9
- import deliverFocus from '@/helpers/deliver-focus';
10
- const BETS_MIN_VISIBLE = 4;
11
- class HotPropsView extends React.Component {
12
- constructor() {
13
- super(...arguments);
14
- // Helper function to focus a specific bet by index
15
- Object.defineProperty(this, "focusBet", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: (index) => {
20
- setFocus(this.getBetFocusKey(index));
21
- }
22
- });
23
- // Helper function to focus back to the card
24
- Object.defineProperty(this, "focusCard", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: () => {
29
- setFocus(this.getCardFocusKey());
30
- }
31
- });
32
- // Helper function to get the total number of bets
33
- Object.defineProperty(this, "getTotalBets", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: () => {
38
- return this.props.item.data.items.length || 0;
39
- }
40
- });
41
- Object.defineProperty(this, "handleEnterPress", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: () => {
46
- setFocus(this.getBetFocusKey(0));
47
- }
48
- });
49
- Object.defineProperty(this, "context", {
50
- enumerable: true,
51
- configurable: true,
52
- writable: true,
53
- value: DEFAULT_SCROLLABLE_CONTAINER_CONTEXT
54
- });
55
- Object.defineProperty(this, "onCardBecameFocused", {
56
- enumerable: true,
57
- configurable: true,
58
- writable: true,
59
- value: (layout) => {
60
- this.context.scrollToFocusedElement(layout);
61
- }
62
- });
63
- Object.defineProperty(this, "onBetBecameFocused", {
64
- enumerable: true,
65
- configurable: true,
66
- writable: true,
67
- value: (layout) => {
68
- this.context.scrollToFocusedElement(layout);
69
- }
70
- });
71
- Object.defineProperty(this, "onBetArrowPress", {
72
- enumerable: true,
73
- configurable: true,
74
- writable: true,
75
- value: (index) => (direction, _props, details) => {
76
- if (direction === 'left' && details.layout) {
77
- deliverFocus(details.layout.node.firstElementChild);
78
- }
79
- if (index === 0 && direction === 'up') {
80
- // If the first bet is focused and up arrow is pressed, focus the card itself
81
- this.focusCard();
82
- return false; // Prevent further propagation
83
- }
84
- }
85
- });
86
- Object.defineProperty(this, "onCardArrowPress", {
87
- enumerable: true,
88
- configurable: true,
89
- writable: true,
90
- value: (d, _props, details) => {
91
- if (d === 'left' && details.layout) {
92
- deliverFocus(details.layout.node.firstElementChild);
93
- }
94
- }
95
- });
96
- }
97
- getBetFocusKey(index) {
98
- return `hotprops-bet-${this.props.item.id}-${index}`;
99
- }
100
- getCardFocusKey() {
101
- return `hot-props-${this.props.item.id}`;
102
- }
103
- renderFlameIcon() {
104
- return React.createElement(Icon, { iconName: "flame", width: 20, height: 20 });
105
- }
106
- renderHeader(props) {
107
- return (React.createElement(BetsCardHeader, { betCardProps: props, betType: "Hot Props", cardExpanded: !!this.props.hasFocusedChild, renderIcon: this.renderFlameIcon, legCount: this.getTotalBets(), legCountThreshold: BETS_MIN_VISIBLE }));
108
- }
109
- renderFooter(remaining, expanded) {
110
- return !expanded && remaining > 0 ? (React.createElement("div", { className: "hot-props-footer" },
111
- "+",
112
- remaining,
113
- " More")) : null;
114
- }
115
- get lineItems() {
116
- const items = this.props.item.data.items;
117
- if (this.props.hasFocusedChild) {
118
- return items;
119
- }
120
- return items.slice(0, BETS_MIN_VISIBLE);
121
- }
122
- render() {
123
- const { item, focused } = this.props;
124
- const lineItems = item.data.items;
125
- const remaining = lineItems.length - BETS_MIN_VISIBLE;
126
- return (React.createElement("div", { className: "hot-props-bet-card" },
127
- React.createElement(BetsCard, { focusKey: this.getCardFocusKey(), focused: focused, header: this.renderHeader.bind(this), footer: () => this.renderFooter(remaining, !!this.props.hasFocusedChild), onEnterPress: this.handleEnterPress, onBecameFocused: this.onCardBecameFocused, onArrowPress: this.onCardArrowPress },
128
- React.createElement("div", { className: "hot-props-list" }, this.lineItems.map((item, idx) => {
129
- return (React.createElement(Bet, { key: item.id, focusKey: this.getBetFocusKey(idx), leg: item, focusable: this.props.hasFocusedChild, onBackPress: this.focusCard, onBecameFocused: this.onBetBecameFocused, onArrowPress: this.onBetArrowPress(idx), parentFocusKey: this.props.focusKey }));
130
- })))));
131
- }
132
- }
133
- Object.defineProperty(HotPropsView, "contextTypes", {
134
- enumerable: true,
135
- configurable: true,
136
- writable: true,
137
- value: SCROLLABLE_CONTEXT_TYPE
138
- });
139
- export default withFocusable({ trackChildren: true })(HotPropsView);
@@ -1,103 +0,0 @@
1
- import React from 'react';
2
- import './SixPackView.style.css';
3
- import { withFocusable, } from '@/external/spatial-navigation';
4
- import FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';
5
- import { DEFAULT_SCROLLABLE_CONTAINER_CONTEXT, SCROLLABLE_CONTEXT_TYPE, } from '@/components/core/ScrollableContainer/ScrollableContainer';
6
- import deliverFocus from '@/helpers/deliver-focus';
7
- class SixPackView extends React.Component {
8
- get columnOrder() {
9
- switch (this.props.item.data.sport) {
10
- case 'baseball':
11
- case 'hockey':
12
- case 'soccer':
13
- return ['Moneyline', 'Total', 'Spread'];
14
- default:
15
- return ['Spread', 'Total', 'Moneyline'];
16
- }
17
- }
18
- get isSoccer() {
19
- return this.props.item.data.sport.toLocaleLowerCase() === 'soccer';
20
- }
21
- /**
22
- * Some sports render columns in a different order.
23
- */
24
- renderOrderedLineColumn(line) {
25
- return this.columnOrder.map((col) => {
26
- switch (col) {
27
- case 'Moneyline':
28
- return React.createElement("td", { key: col }, line.moneylineFirstLine);
29
- case 'Spread':
30
- return (React.createElement("td", { key: col },
31
- line.gameSpreadFirstLine,
32
- React.createElement("br", null),
33
- React.createElement("span", { className: "T02" }, line.gameSpreadSecondLine)));
34
- case 'Total':
35
- return (React.createElement("td", { key: col },
36
- line.totalPointsFirstLine,
37
- React.createElement("br", null),
38
- React.createElement("span", { className: "T02" }, line.totalPointsSecondLine)));
39
- default:
40
- return null;
41
- }
42
- });
43
- }
44
- render() {
45
- const data = this.props.item.data;
46
- const lines = this.isSoccer
47
- ? [data.homeTeamOdds, data.awayTeamOdds]
48
- : [data.awayTeamOdds, data.homeTeamOdds];
49
- return (React.createElement(FocusableItem, null,
50
- React.createElement("table", { className: "six-pack-table focus-ring T02", "data-focused": this.props.focused },
51
- React.createElement("thead", null,
52
- React.createElement("tr", null,
53
- React.createElement("th", { scope: "col" }),
54
- React.createElement("th", { scope: "col" }, this.props.item.data.gameState === 'post' ? 'Close' : 'Open'),
55
- this.columnOrder.map((col) => (React.createElement("th", { scope: "col", key: col }, col))))),
56
- React.createElement("tbody", null, lines.map((line, index) => (React.createElement("tr", { key: index, className: "T05_ALT" },
57
- React.createElement("td", null, line.teamAbbreviation),
58
- React.createElement("td", null,
59
- line.startOfGameFirstLine,
60
- React.createElement("br", null),
61
- React.createElement("span", { className: "T02" }, line.startOfGameSecondLine)),
62
- this.renderOrderedLineColumn(line))))))));
63
- }
64
- }
65
- const FocusableSixPackView = withFocusable()(SixPackView);
66
- export default class FocusableSixPackViewWrapper extends React.Component {
67
- constructor() {
68
- super(...arguments);
69
- Object.defineProperty(this, "context", {
70
- enumerable: true,
71
- configurable: true,
72
- writable: true,
73
- value: DEFAULT_SCROLLABLE_CONTAINER_CONTEXT
74
- });
75
- Object.defineProperty(this, "onBecameFocused", {
76
- enumerable: true,
77
- configurable: true,
78
- writable: true,
79
- value: (layout) => {
80
- this.context.scrollToFocusedElement(layout);
81
- }
82
- });
83
- Object.defineProperty(this, "onArrowPress", {
84
- enumerable: true,
85
- configurable: true,
86
- writable: true,
87
- value: (d, _props, details) => {
88
- if (d === 'left' && details.layout) {
89
- deliverFocus(details.layout.node.firstElementChild);
90
- }
91
- }
92
- });
93
- }
94
- render() {
95
- return (React.createElement(FocusableSixPackView, { ...this.props, onBecameFocused: this.onBecameFocused, onArrowPress: this.onArrowPress }));
96
- }
97
- }
98
- Object.defineProperty(FocusableSixPackViewWrapper, "contextTypes", {
99
- enumerable: true,
100
- configurable: true,
101
- writable: true,
102
- value: SCROLLABLE_CONTEXT_TYPE
103
- });
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import ActionButton from '@/components/molecules/ActionButton';
3
- import { withFocusable, } from '@/external/spatial-navigation';
4
- class TabLoadFailureView extends React.Component {
5
- render() {
6
- return (React.createElement("div", { "data-focused": this.props.focused, className: "bets-error-state-tabLoadFailure focus-ring" },
7
- React.createElement("h3", { className: "T70" }, "Let's try that again..."),
8
- React.createElement("p", { className: "T20" }, "We're having trouble loading this."),
9
- React.createElement(ActionButton, { "data-focused": this.props.focused, onEnterPress: this.props.onEnterPress }, "Refresh")));
10
- }
11
- }
12
- export default withFocusable()(TabLoadFailureView);
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import './BetResult.styles.css';
3
- const BetResult = ({ children }) => {
4
- return React.createElement("div", { className: "bet-result" }, children);
5
- };
6
- export default BetResult;
@@ -1,122 +0,0 @@
1
- import React from 'react';
2
- import { setFocus, withFocusable, } from '@/external/spatial-navigation';
3
- import BetsCard from '../../components/BetsCard/BetsCard';
4
- import BetsCardHeader from '../../components/BetsCard/BetsCardHeader';
5
- import BetsCardFooter from './BetsCardFooter';
6
- import BetsCardEvent from './BetsCardEvent';
7
- import { DEFAULT_SCROLLABLE_CONTAINER_CONTEXT, SCROLLABLE_CONTEXT_TYPE, } from '@/components/core/ScrollableContainer/ScrollableContainer';
8
- import deliverFocus from '@/helpers/deliver-focus';
9
- export const EVENTS_COUNT_THRESHOLD = 3;
10
- class UserBetsCard extends React.Component {
11
- constructor() {
12
- super(...arguments);
13
- Object.defineProperty(this, "context", {
14
- enumerable: true,
15
- configurable: true,
16
- writable: true,
17
- value: DEFAULT_SCROLLABLE_CONTAINER_CONTEXT
18
- });
19
- Object.defineProperty(this, "onEnterPress", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: () => {
24
- if (!this.betsFocusable) {
25
- return;
26
- }
27
- if (!this.props.hasFocusedChild) {
28
- // Set focus on the first bet of the first event
29
- setFocus(`sdk-bets-card-${this.betType}-bet-${this.props.bet.id}-0-0`);
30
- }
31
- }
32
- });
33
- Object.defineProperty(this, "focusCard", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: () => {
38
- // Focus the card itself
39
- setFocus(`${this.focusKeyPrefix}-${this.props.bet.id}`);
40
- }
41
- });
42
- Object.defineProperty(this, "handleBetArrowPress", {
43
- enumerable: true,
44
- configurable: true,
45
- writable: true,
46
- value: (eventIndex, legIndex) => (d, _props, details) => {
47
- if (d === 'up' && legIndex === 0 && eventIndex === 0) {
48
- // If the first leg of the first event is focused and up arrow is pressed,
49
- this.focusCard();
50
- // Return false to prevent further propagation
51
- return false;
52
- }
53
- if (d === 'left' && details.layout) {
54
- deliverFocus(details.layout.node.firstElementChild);
55
- }
56
- }
57
- });
58
- Object.defineProperty(this, "handleCardArrowPress", {
59
- enumerable: true,
60
- configurable: true,
61
- writable: true,
62
- value: (d, _props, details) => {
63
- if (d === 'left' && details.layout) {
64
- deliverFocus(details.layout.node.firstElementChild);
65
- }
66
- }
67
- });
68
- Object.defineProperty(this, "renderHeader", {
69
- enumerable: true,
70
- configurable: true,
71
- writable: true,
72
- value: (headerProps) => {
73
- return (React.createElement(BetsCardHeader, { betCardProps: headerProps, betType: this.betType, iconUrl: this.props.bet.rewardInfo.icon?.dark, legCount: this.props.bet.legCount, outcome: this.props.bet.outcome, overrideOutcome: this.props.bet.overrideOutcome, cardExpanded: !!this.props.hasFocusedChild, legCountThreshold: EVENTS_COUNT_THRESHOLD }, this.props.renderHeaderContent?.(headerProps)));
74
- }
75
- });
76
- Object.defineProperty(this, "renderFooter", {
77
- enumerable: true,
78
- configurable: true,
79
- writable: true,
80
- value: () => {
81
- return React.createElement(BetsCardFooter, { bet: this.props.bet });
82
- }
83
- });
84
- Object.defineProperty(this, "becameFocused", {
85
- enumerable: true,
86
- configurable: true,
87
- writable: true,
88
- value: (layout) => {
89
- this.context.scrollToFocusedElement(layout);
90
- }
91
- });
92
- }
93
- get betsFocusable() {
94
- return this.props.bet.events.length > EVENTS_COUNT_THRESHOLD;
95
- }
96
- get events() {
97
- return this.props.hasFocusedChild
98
- ? this.props.bet.events
99
- : this.props.bet.events.slice(0, EVENTS_COUNT_THRESHOLD);
100
- }
101
- get focusKeyPrefix() {
102
- return `sdk-${this.props.bet.type.toLowerCase()}-card`;
103
- }
104
- get betType() {
105
- return this.props.bet.type.toLowerCase();
106
- }
107
- render() {
108
- return (React.createElement(BetsCard, { header: this.renderHeader, footer: this.renderFooter, onEnterPress: this.onEnterPress, focusKey: `${this.focusKeyPrefix}-${this.props.bet.id}`, onArrowPress: this.handleCardArrowPress, onBecameFocused: this.becameFocused, focused: this.props.focused },
109
- this.events.map((event, eventIndex) => (React.createElement(BetsCardEvent, { betType: this.betType, betsFocusable: this.betsFocusable, event: event, eventIndex: eventIndex, onBetArrowPress: this.handleBetArrowPress, key: event.displayName, betId: this.props.bet.id, parentFocusKey: this.props.focusKey, onBetBackPress: this.focusCard }))),
110
- !this.props.hasFocusedChild && this.betsFocusable && (React.createElement("div", { className: "more-bets T05_ALT" },
111
- "+",
112
- this.props.bet.legCount - EVENTS_COUNT_THRESHOLD,
113
- " more"))));
114
- }
115
- }
116
- Object.defineProperty(UserBetsCard, "contextTypes", {
117
- enumerable: true,
118
- configurable: true,
119
- writable: true,
120
- value: SCROLLABLE_CONTEXT_TYPE
121
- });
122
- export default withFocusable({ trackChildren: true })(UserBetsCard);
@@ -1,34 +0,0 @@
1
- import React from 'react';
2
- import Bet from '../../components/Bet/Bet';
3
- import { DEFAULT_SCROLLABLE_CONTAINER_CONTEXT, SCROLLABLE_CONTEXT_TYPE, } from '@/components/core/ScrollableContainer/ScrollableContainer';
4
- class BetsCardEvent extends React.Component {
5
- constructor() {
6
- super(...arguments);
7
- Object.defineProperty(this, "context", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: DEFAULT_SCROLLABLE_CONTAINER_CONTEXT
12
- });
13
- Object.defineProperty(this, "onBecameFocused", {
14
- enumerable: true,
15
- configurable: true,
16
- writable: true,
17
- value: (layout) => {
18
- this.context.scrollToFocusedElement(layout);
19
- }
20
- });
21
- }
22
- render() {
23
- return (React.createElement("div", { key: this.props.event.displayName, className: "bets-card-event T10" },
24
- React.createElement("div", { className: "T10" }, this.props.event.displayName),
25
- React.createElement("div", { className: "bets-card-bets" }, this.props.event.legs.map((leg, index) => (React.createElement(Bet, { key: `${this.props.betId}-${this.props.eventIndex}-${index}`, focusable: this.props.betsFocusable, focusKey: `sdk-bets-card-${this.props.betType}-bet-${this.props.betId}-${this.props.eventIndex}-${index}`, onArrowPress: this.props.onBetArrowPress(this.props.eventIndex, index), onBecameFocused: this.onBecameFocused, parentFocusKey: this.props.parentFocusKey, onBackPress: this.props.onBetBackPress, leg: leg }))))));
26
- }
27
- }
28
- Object.defineProperty(BetsCardEvent, "contextTypes", {
29
- enumerable: true,
30
- configurable: true,
31
- writable: true,
32
- value: SCROLLABLE_CONTEXT_TYPE
33
- });
34
- export default BetsCardEvent;
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import BetPill from '../../components/BetPill/BetPill';
3
- import BetResult from '../../UserBets/BetResult/BetResult';
4
- const BetsCardFooter = (props) => {
5
- const outcome = props.bet.overrideOutcome !== 'NOT_SET'
6
- ? props.bet.overrideOutcome
7
- : props.bet.outcome;
8
- return (React.createElement("div", { className: "bets-card-footer T02" },
9
- React.createElement(BetPill, null,
10
- "$",
11
- props.bet.betAmount,
12
- " ",
13
- props.bet.type.toLowerCase(),
14
- " ",
15
- props.bet.odds),
16
- outcome !== 'LOSS' && (React.createElement(BetResult, null,
17
- props.bet.betDisplayStatement,
18
- React.createElement("span", null,
19
- "$",
20
- props.bet.payoutAmount)))));
21
- };
22
- export default BetsCardFooter;
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import UserBetsCard from '../BetsCard/BetsCard';
3
- const Boost = ({ bet }) => {
4
- return React.createElement(UserBetsCard, { focusKey: `bets-boost-card-${bet.id}`, bet: bet });
5
- };
6
- export default Boost;
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import './OutcomeBadge.styles.css';
3
- import Icon from '@/components/atoms/SvgIcon';
4
- const OutcomeBadge = (props) => {
5
- return (React.createElement("div", { className: "bet-outcome-badge T02" },
6
- React.createElement(Icon, { iconName: props.outcome === 'WIN' ? 'checkmark' : 'times', width: 24, height: 24 }),
7
- props.outcome));
8
- };
9
- export default OutcomeBadge;
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import './Parlay.styles.css';
3
- import UserBetsCard from '../BetsCard/BetsCard';
4
- const Parlay = ({ bet }) => {
5
- const renderHeaderContent = () => {
6
- return (React.createElement("div", null,
7
- bet.legCount,
8
- " Leg",
9
- bet.legCount > 1 ? 's' : ''));
10
- };
11
- return (React.createElement(UserBetsCard, { focusKey: `bets-parlay-card-${bet.id}`, bet: bet, renderHeaderContent: renderHeaderContent }));
12
- };
13
- export default Parlay;
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import UserBetsCard from '../BetsCard/BetsCard';
3
- const Straight = ({ bet }) => {
4
- return React.createElement(UserBetsCard, { focusKey: `bets-straight-card-${bet.id}`, bet: bet });
5
- };
6
- export default Straight;
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import UserBetsCard from '../BetsCard/BetsCard';
3
- const Teaser = ({ bet }) => {
4
- const renderHeaderContent = () => {
5
- return (React.createElement("div", null,
6
- bet.legCount,
7
- " Point",
8
- bet.legCount !== 1 ? 's' : '',
9
- " Teaser"));
10
- };
11
- return (React.createElement(UserBetsCard, { focusKey: `bets-teaser-card-${bet.id}`, bet: bet, renderHeaderContent: renderHeaderContent }));
12
- };
13
- export default Teaser;