@maestro_io/maestro-web-sdk 3.3.1 → 4.0.0-beta.2

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 (269) hide show
  1. package/dist/f8820fca3a2a7957f753167da0884f9d.png +0 -0
  2. package/dist/maestro-web-sdk.esm.js +12 -12
  3. package/dist/maestro-web-sdk.esm.js.map +1 -1
  4. package/dist/maestro-web-sdk.umd.js +12 -12
  5. package/dist/maestro-web-sdk.umd.js.map +1 -1
  6. package/dist/package.json +87 -0
  7. package/dist/src/__mocks__/sentry.d.ts +4 -0
  8. package/dist/src/components/atoms/BaseButton/BaseButton.js +11 -0
  9. package/dist/src/components/atoms/BaseButton/index.js +2 -0
  10. package/dist/src/components/atoms/Image/index.js +34 -0
  11. package/dist/src/components/atoms/Rive/index.js +53 -0
  12. package/dist/src/components/atoms/SvgIcon/BetGeneralIcon.js +9 -0
  13. package/dist/src/components/atoms/SvgIcon/BetsIcon.js +11 -0
  14. package/dist/src/components/atoms/SvgIcon/BetsWarningIcon.js +11 -0
  15. package/dist/src/components/atoms/SvgIcon/CheckmarkIcon.js +6 -0
  16. package/dist/src/components/atoms/SvgIcon/CollapseIcon.js +6 -0
  17. package/dist/src/components/atoms/SvgIcon/ExpandIcon.js +6 -0
  18. package/dist/src/components/atoms/SvgIcon/FantasyIcon.js +15 -0
  19. package/dist/src/components/atoms/SvgIcon/FlameIcon.js +11 -0
  20. package/dist/src/components/atoms/SvgIcon/Icon.js +44 -0
  21. package/dist/src/components/atoms/SvgIcon/KeyPlaysIcon.js +10 -0
  22. package/dist/src/components/atoms/SvgIcon/MobilePhoneIcon.js +11 -0
  23. package/dist/src/components/atoms/SvgIcon/PlayIcon.js +8 -0
  24. package/dist/src/components/atoms/SvgIcon/ShopIcon.js +7 -0
  25. package/dist/src/components/atoms/SvgIcon/StatsIcon.js +12 -0
  26. package/dist/src/components/atoms/SvgIcon/TimesIcon.js +6 -0
  27. package/dist/src/components/atoms/SvgIcon/WarningIcon.js +8 -0
  28. package/dist/src/components/atoms/SvgIcon/index.js +2 -0
  29. package/dist/src/components/core/App/App.js +35 -0
  30. package/dist/src/components/core/App/index.js +2 -0
  31. package/dist/src/components/core/OverlayContainer.js +58 -0
  32. package/dist/src/components/core/PanelManager/PanelManager.js +86 -0
  33. package/dist/src/components/core/PanelManager/index.js +2 -0
  34. package/dist/src/components/core/ScrollableContainer/FocusableItem.js +38 -0
  35. package/dist/src/components/core/ScrollableContainer/ScrollableContainer.js +168 -0
  36. package/dist/src/components/core/ScrollableContainer/index.js +2 -0
  37. package/dist/src/components/molecules/ActionButton/ActionButton.js +10 -0
  38. package/dist/src/components/molecules/ActionButton/index.js +2 -0
  39. package/dist/src/components/molecules/HeadshotImage/HeadshotImage.js +50 -0
  40. package/dist/src/components/molecules/HeadshotImage/index.js +2 -0
  41. package/dist/src/components/molecules/Overlay/Overlay.js +139 -0
  42. package/dist/src/components/molecules/Overlay/index.js +2 -0
  43. package/dist/src/components/molecules/PanelNavButton/PanelNavButton.js +27 -0
  44. package/dist/src/components/molecules/PanelNavButton/index.js +2 -0
  45. package/dist/src/components/molecules/SegmentButton/SegmentButton.js +10 -0
  46. package/dist/src/components/molecules/SegmentButton/index.js +2 -0
  47. package/dist/src/components/molecules/TabLoadError/TabLoadError.js +14 -0
  48. package/dist/src/components/molecules/TabLoadError/index.js +2 -0
  49. package/dist/src/components/molecules/WatchButton/WatchButton.js +15 -0
  50. package/dist/src/components/molecules/WatchButton/index.js +2 -0
  51. package/dist/src/components/organisms/PanelNavigation/PanelNavigation.js +60 -0
  52. package/dist/src/components/organisms/PanelNavigation/index.js +2 -0
  53. package/dist/src/components/organisms/SegmentController/SegmentController.js +76 -0
  54. package/dist/src/components/organisms/SegmentController/index.js +2 -0
  55. package/dist/src/development/MaestroEventDelegate.js +109 -0
  56. package/dist/src/development/TimeSeek.js +218 -0
  57. package/dist/src/development/development.js +33 -0
  58. package/dist/src/external/AxiosNetworkClient.js +110 -0
  59. package/dist/src/external/LocalStorageCacheManager.js +213 -0
  60. package/dist/src/external/ReactRenderer.js +53 -0
  61. package/dist/src/external/mocks/MockExternalNetworkClient.js +187 -0
  62. package/dist/src/external/ports/cacheManager.js +1 -0
  63. package/dist/src/external/ports/networkClient.js +1 -0
  64. package/dist/src/external/ports/renderer.d.ts +1 -2
  65. package/dist/src/external/ports/renderer.js +1 -0
  66. package/dist/src/external/spatial-navigation/__mocks__/withFocusable.d.ts +8 -0
  67. package/dist/src/external/spatial-navigation/__mocks__/withFocusable.js +7 -0
  68. package/dist/src/external/spatial-navigation/index.js +3 -0
  69. package/dist/src/external/spatial-navigation/measureLayout.js +30 -0
  70. package/dist/src/external/spatial-navigation/spatialNavigation.js +876 -0
  71. package/dist/src/external/spatial-navigation/utils.js +6 -0
  72. package/dist/src/external/spatial-navigation/visualDebugger.js +76 -0
  73. package/dist/src/external/spatial-navigation/withFocusable.js +245 -0
  74. package/dist/src/helpers/Observable.js +37 -0
  75. package/dist/src/helpers/strings.js +14 -0
  76. package/dist/src/helpers/url.js +12 -0
  77. package/dist/src/index.d.ts +5 -5
  78. package/dist/src/index.js +165 -0
  79. package/dist/src/interfaces/IMaestroEvent.d.ts +12 -0
  80. package/dist/src/interfaces/IMaestroEvent.js +18 -0
  81. package/dist/src/interfaces/IMaestroEventDelegate.js +1 -0
  82. package/dist/src/interfaces/IMaestroManager.js +1 -0
  83. package/dist/src/interfaces/IUserSettings.js +20 -0
  84. package/dist/src/models/IModel.js +1 -0
  85. package/dist/src/models/IPanel.js +40 -0
  86. package/dist/src/models/ITheme.js +20 -0
  87. package/dist/src/models/IWinningBet.js +1 -0
  88. package/dist/src/modules/bets/interfaces/IBets.js +1 -0
  89. package/dist/src/modules/bets/mocks.js +573 -0
  90. package/dist/src/modules/bets/types/BetsAnalyticsTypes.js +1 -0
  91. package/dist/src/modules/bets/view/BetsView.js +143 -0
  92. package/dist/src/modules/bets/view/HotProps/HotPropsView.js +150 -0
  93. package/dist/src/modules/bets/view/SixPack/SixPackView.js +110 -0
  94. package/dist/src/modules/bets/view/UserBets/BetResult/BetResult.js +6 -0
  95. package/dist/src/modules/bets/view/UserBets/BetsCard/BetsCard.js +149 -0
  96. package/dist/src/modules/bets/view/UserBets/BetsCard/BetsCardEvent.js +34 -0
  97. package/dist/src/modules/bets/view/UserBets/BetsCard/BetsCardFooter.js +18 -0
  98. package/dist/src/modules/bets/view/UserBets/Boost/Boost.js +6 -0
  99. package/dist/src/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.js +9 -0
  100. package/dist/src/modules/bets/view/UserBets/Parlay/Parlay.js +13 -0
  101. package/dist/src/modules/bets/view/UserBets/Straight/Straight.js +6 -0
  102. package/dist/src/modules/bets/view/UserBets/Teaser/Teaser.js +13 -0
  103. package/dist/src/modules/bets/view/UserBets/UserBetsView.js +107 -0
  104. package/dist/src/modules/bets/view/components/Bet/Bet.js +32 -0
  105. package/dist/src/modules/bets/view/components/BetPill/BetPill.js +6 -0
  106. package/dist/src/modules/bets/view/components/BetsCard/BetsCard.js +15 -0
  107. package/dist/src/modules/bets/view/components/BetsCard/BetsCardHeader.js +20 -0
  108. package/dist/src/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.js +14 -0
  109. package/dist/src/modules/bets/view/components/LocationWarning/LocationWarning.js +16 -0
  110. package/dist/src/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.js +78 -0
  111. package/dist/src/modules/bets/view/components/PromoCodeBanner/index.js +1 -0
  112. package/dist/src/modules/bets/view-model/BetsViewModel.js +974 -0
  113. package/dist/src/modules/fantasy/components/ExpandedAthleteList/ExpandedAthletesList.js +107 -0
  114. package/dist/src/modules/fantasy/components/ExpandedAthleteList/index.js +1 -0
  115. package/dist/src/modules/fantasy/components/LeagueCard/LeagueCard.js +20 -0
  116. package/dist/src/modules/fantasy/components/LeagueCard/index.js +2 -0
  117. package/dist/src/modules/fantasy/components/TopPlayerCard/TopPlayerCard.js +29 -0
  118. package/dist/src/modules/fantasy/components/TopPlayerCard/index.js +2 -0
  119. package/dist/src/modules/fantasy/mocks.js +3682 -0
  120. package/dist/src/modules/fantasy/types.js +6 -0
  121. package/dist/src/modules/fantasy/view/ActiveAthletesMarquee/ActiveAthletesMarquee.js +74 -0
  122. package/dist/src/modules/fantasy/view/ActiveAthletesMarquee/index.js +2 -0
  123. package/dist/src/modules/fantasy/view/ErrorBoundary.d.ts +13 -0
  124. package/dist/src/modules/fantasy/view/FantasyItemView.js +74 -0
  125. package/dist/src/modules/fantasy/view/FantasyView.js +133 -0
  126. package/dist/src/modules/fantasy/view/InactiveLeague/DraftDateCountdown.js +95 -0
  127. package/dist/src/modules/fantasy/view/InactiveLeague/InactiveLeague.js +13 -0
  128. package/dist/src/modules/fantasy/view/InactiveLeague/index.js +2 -0
  129. package/dist/src/modules/fantasy/view/LoginView/LoginView.js +27 -0
  130. package/dist/src/modules/fantasy/view/LoginView/index.js +2 -0
  131. package/dist/src/modules/fantasy/view/MatchupPair/DoubleAthleteCard/DoubleAthleteCard.js +25 -0
  132. package/dist/src/modules/fantasy/view/MatchupPair/DoubleAthleteCard/index.js +2 -0
  133. package/dist/src/modules/fantasy/view/MatchupPair/ExpandedDoubleAthleteCards.js +9 -0
  134. package/dist/src/modules/fantasy/view/MatchupPair/MatchupPair.js +118 -0
  135. package/dist/src/modules/fantasy/view/MatchupPair/index.js +2 -0
  136. package/dist/src/modules/fantasy/view/MatchupSingle/ExpandedSingleAthleteCards.js +9 -0
  137. package/dist/src/modules/fantasy/view/MatchupSingle/MatchupSingle.js +108 -0
  138. package/dist/src/modules/fantasy/view/MatchupSingle/SingleAthleteCard/SingleAthleteCard.js +18 -0
  139. package/dist/src/modules/fantasy/view/MatchupSingle/SingleAthleteCard/index.js +2 -0
  140. package/dist/src/modules/fantasy/view/MatchupSingle/index.js +2 -0
  141. package/dist/src/modules/fantasy/view/PromoView/PromoView.js +12 -0
  142. package/dist/src/modules/fantasy/view/PromoView/index.js +2 -0
  143. package/dist/src/modules/fantasy/view/index.js +2 -0
  144. package/dist/src/modules/fantasy/view-model/FantasyViewModel.FantasyPolling.js +132 -0
  145. package/dist/src/modules/fantasy/view-model/FantasyViewModel.LeagueManagerPolling.js +141 -0
  146. package/dist/src/modules/fantasy/view-model/FantasyViewModel.js +534 -0
  147. package/dist/src/modules/key-plays/constants.js +292 -0
  148. package/dist/src/modules/key-plays/interfaces/IKeyPlays.js +14 -0
  149. package/dist/src/modules/key-plays/interfaces/IKeyPlaysResponse.js +1 -0
  150. package/dist/src/modules/key-plays/view/KeyPlayCardScoreTagView.js +16 -0
  151. package/dist/src/modules/key-plays/view/KeyPlayCardView.js +144 -0
  152. package/dist/src/modules/key-plays/view/KeyPlayErrorStateView.js +65 -0
  153. package/dist/src/modules/key-plays/view/KeyPlaysView.js +151 -0
  154. package/dist/src/modules/key-plays/view-model/KeyPlaysViewModel.js +246 -0
  155. package/dist/src/modules/shop/mocks.js +390 -0
  156. package/dist/src/modules/shop/types.js +7 -0
  157. package/dist/src/modules/shop/view/ProductDetailView/ProductDetailView.js +56 -0
  158. package/dist/src/modules/shop/view/ProductDetailView/index.js +2 -0
  159. package/dist/src/modules/shop/view/ShopView.js +182 -0
  160. package/dist/src/modules/shop/view/components/BrowseCard/BrowseCard.js +23 -0
  161. package/dist/src/modules/shop/view/components/BrowseCard/index.js +2 -0
  162. package/dist/src/modules/shop/view/components/ProductSummaryCard/ProductSummaryCard.js +26 -0
  163. package/dist/src/modules/shop/view/components/ProductSummaryCard/index.js +1 -0
  164. package/dist/src/modules/shop/view/components/ShopPromoView/ShopPromoView.js +19 -0
  165. package/dist/src/modules/shop/view/components/ShopPromoView/index.js +1 -0
  166. package/dist/src/modules/shop/view/components/ShopSection/ShopSection.d.ts +1 -0
  167. package/dist/src/modules/shop/view/components/ShopSection/ShopSection.js +61 -0
  168. package/dist/src/modules/shop/view/components/ShopSection/ShopSectionItem.d.ts +18 -0
  169. package/dist/src/modules/shop/view/components/ShopSection/ShopSectionItem.js +22 -0
  170. package/dist/src/modules/shop/view/components/ShopSection/index.js +1 -0
  171. package/dist/src/modules/shop/view/index.js +2 -0
  172. package/dist/src/modules/shop/view-model/ShopViewModel.ShopPolling.js +111 -0
  173. package/dist/src/modules/shop/view-model/ShopViewModel.js +353 -0
  174. package/dist/src/modules/stats/interfaces/IStats.js +1 -0
  175. package/dist/src/modules/stats/mocks.js +746 -0
  176. package/dist/src/modules/stats/utils/driveSummaryUtils.js +48 -0
  177. package/dist/src/modules/stats/utils/renderTeamStatistic.js +16 -0
  178. package/dist/src/modules/stats/utils.js +62 -0
  179. package/dist/src/modules/stats/view/ActiveAthletes/ActiveAthletes.js +98 -0
  180. package/dist/src/modules/stats/view/ActiveAthletes/CollapsedAthletes/CollapsedAthletes.js +27 -0
  181. package/dist/src/modules/stats/view/ActiveAthletes/ExpandedAthletes/ExpandedAthletes.js +89 -0
  182. package/dist/src/modules/stats/view/ActiveAthletes/index.js +2 -0
  183. package/dist/src/modules/stats/view/DriveSummary/DrivePlayCard.js +70 -0
  184. package/dist/src/modules/stats/view/DriveSummary/DriveSummary.js +87 -0
  185. package/dist/src/modules/stats/view/DriveSummary/ExpandedItems/DriveSummaryExpanded.js +129 -0
  186. package/dist/src/modules/stats/view/DriveSummary/Header/DriveSummaryHeader.js +26 -0
  187. package/dist/src/modules/stats/view/DriveSummary/MainStat/MainStat.js +24 -0
  188. package/dist/src/modules/stats/view/DriveSummary/index.js +2 -0
  189. package/dist/src/modules/stats/view/GameLeaders/GameLeaders.js +48 -0
  190. package/dist/src/modules/stats/view/GameLeaders/index.js +2 -0
  191. package/dist/src/modules/stats/view/MatchPredictor/DonutChart/DonutChart.js +55 -0
  192. package/dist/src/modules/stats/view/MatchPredictor/DonutChart/index.js +1 -0
  193. package/dist/src/modules/stats/view/MatchPredictor/MatchPredictorView.js +60 -0
  194. package/dist/src/modules/stats/view/MatchPredictor/index.js +2 -0
  195. package/dist/src/modules/stats/view/Penalties/Penalties.js +6 -0
  196. package/dist/src/modules/stats/view/Penalties/index.js +2 -0
  197. package/dist/src/modules/stats/view/RecentGames/RecentGames.js +23 -0
  198. package/dist/src/modules/stats/view/RecentGames/index.js +2 -0
  199. package/dist/src/modules/stats/view/ScoringSummary/ExpandedScores/ExpandedScores.js +121 -0
  200. package/dist/src/modules/stats/view/ScoringSummary/ExpandedScores/index.js +2 -0
  201. package/dist/src/modules/stats/view/ScoringSummary/ScoreItem/ScoreItem.js +62 -0
  202. package/dist/src/modules/stats/view/ScoringSummary/ScoreItem/index.js +2 -0
  203. package/dist/src/modules/stats/view/ScoringSummary/ScoresSection/ScoresSection.js +23 -0
  204. package/dist/src/modules/stats/view/ScoringSummary/ScoresSection/index.js +2 -0
  205. package/dist/src/modules/stats/view/ScoringSummary/ScoringSummary.js +106 -0
  206. package/dist/src/modules/stats/view/ScoringSummary/index.js +2 -0
  207. package/dist/src/modules/stats/view/StatsItemView.js +92 -0
  208. package/dist/src/modules/stats/view/StatsQRCode/StatsQRCodeView.js +36 -0
  209. package/dist/src/modules/stats/view/StatsQRCode/index.js +1 -0
  210. package/dist/src/modules/stats/view/StatsView.js +137 -0
  211. package/dist/src/modules/stats/view/TeamStats/TeamStatsView.js +43 -0
  212. package/dist/src/modules/stats/view/TeamStats/index.js +1 -0
  213. package/dist/src/modules/stats/view/Teams/StatsCarousel.js +83 -0
  214. package/dist/src/modules/stats/view/Teams/StatsProgressBar.js +19 -0
  215. package/dist/src/modules/stats/view/Teams/Teams.js +27 -0
  216. package/dist/src/modules/stats/view/Teams/index.js +2 -0
  217. package/dist/src/modules/stats/view/WinProbability/WinProbability.js +28 -0
  218. package/dist/src/modules/stats/view/WinProbability/index.js +2 -0
  219. package/dist/src/modules/stats/view/components/AthletesStatistics/AthletesStatistics.js +89 -0
  220. package/dist/src/modules/stats/view/components/AthletesStatistics/StatisticTable.js +12 -0
  221. package/dist/src/modules/stats/view/components/AthletesStatistics/index.js +2 -0
  222. package/dist/src/modules/stats/view/index.js +2 -0
  223. package/dist/src/modules/stats/view-model/StatsViewModel.d.ts +5 -0
  224. package/dist/src/modules/stats/view-model/StatsViewModel.js +989 -0
  225. package/dist/src/sentry.js +31 -0
  226. package/dist/src/services/AnalyticsService/AnalyticsService.d.ts +12 -7
  227. package/dist/src/services/AnalyticsService/AnalyticsService.js +402 -0
  228. package/dist/src/services/AnalyticsService/types.js +1 -0
  229. package/dist/src/services/BetsService.js +122 -0
  230. package/dist/src/services/FantasyService.js +92 -0
  231. package/dist/src/services/GlobalService/GlobalService.d.ts +9 -0
  232. package/dist/src/services/GlobalService/PageService.d.ts +9 -0
  233. package/dist/src/services/GlobalService/index.d.ts +2 -0
  234. package/dist/src/services/GlobalService/mocks.d.ts +2 -0
  235. package/dist/src/services/GlobalService/types.d.ts +11 -0
  236. package/dist/src/services/InsightsService/InsightsPayloadBuilder.d.ts +1 -2
  237. package/dist/src/services/InsightsService/InsightsPayloadBuilder.js +386 -0
  238. package/dist/src/services/InsightsService/InsightsService.js +74 -0
  239. package/dist/src/services/NetworkManager/NetworkManager.js +457 -0
  240. package/dist/src/services/NetworkManager/NetworkManagerFactory.js +101 -0
  241. package/dist/src/services/NetworkManager/errors.js +45 -0
  242. package/dist/src/services/NetworkManager/types.js +10 -0
  243. package/dist/src/services/PageService/PageService.d.ts +9 -0
  244. package/dist/src/services/PageService/PageService.js +39 -0
  245. package/dist/src/services/PageService/index.d.ts +2 -0
  246. package/dist/src/services/PageService/index.js +2 -0
  247. package/dist/src/services/PageService/mocks.d.ts +2 -0
  248. package/dist/src/services/PageService/mocks.js +104 -0
  249. package/dist/src/services/PageService/types.d.ts +76 -0
  250. package/dist/src/services/PageService/types.js +1 -0
  251. package/dist/src/services/ShopService.js +46 -0
  252. package/dist/src/services/StaticService/PageService.d.ts +9 -0
  253. package/dist/src/services/StaticService/StaticService.d.ts +3 -1
  254. package/dist/src/services/StaticService/StaticService.js +59 -0
  255. package/dist/src/services/StaticService/index.js +2 -0
  256. package/dist/src/services/StaticService/mocks.js +104 -0
  257. package/dist/src/services/StaticService/types.js +1 -0
  258. package/dist/src/services/StatsService.d.ts +1 -0
  259. package/dist/src/services/StatsService.js +147 -0
  260. package/dist/src/services/ThemeManager/constants.js +47 -0
  261. package/dist/src/services/UserSettingsManager.js +155 -0
  262. package/dist/src/test-polyfills.js +15 -0
  263. package/dist/src/types/OverlayTypes.js +4 -0
  264. package/dist/src/view-models/MaestroEventViewModel.d.ts +1 -2
  265. package/dist/src/view-models/MaestroEventViewModel.js +307 -0
  266. package/dist/src/view-models/OverlayViewModel.js +222 -0
  267. package/dist/src/view-models/PanelManagerViewModel.js +212 -0
  268. package/dist/src/view-models/ViewModel.js +32 -0
  269. package/package.json +1 -1
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "@maestro_io/maestro-web-sdk",
3
+ "private": false,
4
+ "version": "3.3.1",
5
+ "type": "commonjs",
6
+ "license": "MIT",
7
+ "main": "dist/maestro-web-sdk.umd.js",
8
+ "module": "dist/maestro-web-sdk.esm.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "import": "./dist/maestro-web-sdk.esm.js",
16
+ "require": "./dist/maestro-web-sdk.umd.js",
17
+ "types": "./dist/index.d.ts"
18
+ }
19
+ },
20
+ "sideEffects": [
21
+ "*.css"
22
+ ],
23
+ "engines": {
24
+ "node": ">=10"
25
+ },
26
+ "scripts": {
27
+ "dev": "nodemon",
28
+ "sdk-only": "webpack-dev-server --config webpack/webpack.dev.js",
29
+ "lint": "eslint src --ext .ts,.tsx --ignore-pattern '**/*.test.*'",
30
+ "test": "jest",
31
+ "build": "tsc --emitDeclarationOnly --outDir dist/types & webpack --config webpack/webpack.prod.js",
32
+ "types": "tsc -b"
33
+ },
34
+ "devDependencies": {
35
+ "@babel/core": "7.12.3",
36
+ "@babel/plugin-proposal-class-properties": "7.12.1",
37
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
38
+ "@babel/preset-env": "7.12.1",
39
+ "@babel/preset-react": "7.12.1",
40
+ "@babel/preset-typescript": "7.12.1",
41
+ "@types/enzyme-adapter-react-15": "^1.0.9",
42
+ "@types/jest": "24.0.25",
43
+ "@types/node": "10",
44
+ "@types/prop-types": "^15.7.10",
45
+ "@types/react": "15",
46
+ "@types/react-dom": "15",
47
+ "@typescript-eslint/eslint-plugin": "2.34.0",
48
+ "@typescript-eslint/parser": "2.34.0",
49
+ "babel-jest": "26.6.3",
50
+ "babel-loader": "8",
51
+ "css-loader": "5",
52
+ "enzyme": "3.11.0",
53
+ "enzyme-adapter-react-15": "1.0.6",
54
+ "eslint": "6.8.0",
55
+ "eslint-config-prettier": "6.0.0",
56
+ "eslint-plugin-react": "7.20.0",
57
+ "file-loader": "^6.2.0",
58
+ "globals": "^10",
59
+ "html-webpack-plugin": "4",
60
+ "husky": "^6.0.0",
61
+ "identity-obj-proxy": "^3.0.0",
62
+ "jest": "26.6.3",
63
+ "nodemon": "^3.1.9",
64
+ "prettier": "2.0.5",
65
+ "react-test-renderer": "15",
66
+ "style-loader": "2",
67
+ "tsconfig-paths-webpack-plugin": "^4.2.0",
68
+ "typescript": "^4",
69
+ "webpack": "4",
70
+ "webpack-cli": "3.3.12",
71
+ "webpack-dev-server": "3.11.2"
72
+ },
73
+ "dependencies": {
74
+ "@rive-app/canvas": "^2.27.3",
75
+ "@sentry/browser": "7.68.0",
76
+ "axios": "^0.27.2",
77
+ "flexibility": "^2.0.1",
78
+ "prop-types": "15",
79
+ "react": "^15.0.0",
80
+ "react-dom": "^15.0.0"
81
+ },
82
+ "resolutions": {
83
+ "sockjs-client": "1.5.1",
84
+ "cheerio": "0.22.0",
85
+ "@sentry/replay": "0.6.14"
86
+ }
87
+ }
@@ -0,0 +1,4 @@
1
+ /// <reference types="jest" />
2
+ export declare const captureException: jest.Mock<any, any>;
3
+ declare const initSentry: jest.Mock<any, any>;
4
+ export default initSentry;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import './BaseButton.styles.css';
3
+ import FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';
4
+ class BaseButton extends React.Component {
5
+ render() {
6
+ const className = ['base-button', this.props.className].join(' ');
7
+ return (React.createElement(FocusableItem, null,
8
+ React.createElement("button", { ...this.props, className: className }, this.props.children)));
9
+ }
10
+ }
11
+ export default BaseButton;
@@ -0,0 +1,2 @@
1
+ import BaseButton from './BaseButton';
2
+ export default BaseButton;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ class Image extends React.Component {
3
+ constructor(props) {
4
+ super(props);
5
+ Object.defineProperty(this, "state", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: {
10
+ failed: false,
11
+ }
12
+ });
13
+ Object.defineProperty(this, "handleError", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: () => {
18
+ this.setState({ failed: true });
19
+ }
20
+ });
21
+ }
22
+ render() {
23
+ if (this.state.failed) {
24
+ console.warn('Image failed to load:', this.props.src);
25
+ return null;
26
+ }
27
+ if (!this.props.src) {
28
+ console.warn('Image source is empty');
29
+ return null;
30
+ }
31
+ return (React.createElement("img", { alt: this.props.alt || 'Image', ...this.props, onError: this.handleError }));
32
+ }
33
+ }
34
+ export default Image;
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { withFocusable, } from '@/external/spatial-navigation';
3
+ import SDK from '@/index';
4
+ class Rive extends React.Component {
5
+ constructor() {
6
+ super(...arguments);
7
+ Object.defineProperty(this, "riveInstance", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: null
12
+ });
13
+ }
14
+ componentDidMount() {
15
+ const canvas = document.getElementById(this.props.id);
16
+ if (!canvas) {
17
+ console.error('Canvas element not found with id:', this.props.id);
18
+ throw new Error('canvas not found');
19
+ }
20
+ try {
21
+ // Temporarily commented out due to issues with RiveCanvas import
22
+ // this.riveInstance = new RiveCanvas({
23
+ // src: this.props.src,
24
+ // canvas,
25
+ // autoplay: this.props.autoPlay,
26
+ // stateMachines: 'stateMachine',
27
+ // onLoad: () => {
28
+ // this.props.onLoadRiveInstance(this.riveInstance);
29
+ // },
30
+ // onLoadError: (error: any) => {
31
+ // console.error('RiveCanvas load error:', error);
32
+ // },
33
+ // });
34
+ }
35
+ catch (error) {
36
+ console.error('Error creating RiveCanvas:', error);
37
+ }
38
+ setTimeout(() => {
39
+ if (this.props.focusKey && this.props.autoFocus) {
40
+ SDK.getMaestroEventViewModel().navigation.setFocus(this.props.focusKey);
41
+ }
42
+ }, 0);
43
+ }
44
+ componentWillUnmount() {
45
+ if (this.riveInstance) {
46
+ this.riveInstance.cleanup();
47
+ }
48
+ }
49
+ render() {
50
+ return (React.createElement("canvas", { style: this.props.style, id: this.props.id, "data-focused": this.props.focused }));
51
+ }
52
+ }
53
+ export default withFocusable()(Rive);
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ const BetGeneralIcon = (props) => {
3
+ return (React.createElement("svg", { width: props.width, height: props.height, viewBox: "0 0 48 48", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
+ React.createElement("rect", { x: "1", y: "1", width: "46", height: "46", rx: "23", fill: "#101113" }),
5
+ React.createElement("rect", { x: "1", y: "1", width: "46", height: "46", rx: "23", stroke: "#A1A2A3", strokeWidth: "2" }),
6
+ React.createElement("path", { d: "M23.9994 25.2964L22.9624 26.3334L23.9624 27.3334L22.6661 28.6298L21.6661 27.6298L20.6476 28.6482L19.3512 27.3519L20.3697 26.3334L19.3697 25.3334L20.6661 24.037L21.6661 25.037L22.7031 24.0001L21.7031 23.0001L22.9994 21.7037L23.9994 22.7037L25.0364 21.6667L24.0364 20.6667L25.3328 19.3704L26.3328 20.3704L27.3512 19.3519L28.6476 20.6482L27.6291 21.6667L28.6291 22.6667L27.3328 23.9631L26.3328 22.9631L25.2958 24.0001L26.2958 25.0001L24.9994 26.2964L23.9994 25.2964Z", fill: "#A1A2A3" }),
7
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M36.425 12.9435C36.389 12.7762 36.1471 11.8521 36.1471 11.8521C36.1471 11.8521 35.2231 11.6104 35.0558 11.5744C34.7212 11.5025 34.2407 11.4098 33.6432 11.3229C32.4502 11.1494 30.781 10.9976 28.8705 11.0844C25.0579 11.2578 20.1968 12.3884 16.2923 16.2931C12.3877 20.1978 11.2571 25.0588 11.0838 28.8714C10.9969 30.7818 11.1488 32.4509 11.3223 33.644C11.4092 34.2414 11.5019 34.7218 11.5738 35.0564C11.6097 35.2238 11.8528 36.1466 11.8528 36.1466C11.8528 36.1466 12.7755 36.3896 12.9429 36.4256C13.2774 36.4975 13.7579 36.5902 14.3553 36.6771C15.5484 36.8507 17.2175 37.0026 19.1279 36.9158C22.9405 36.7426 27.8016 35.6121 31.7065 31.7073C35.6113 27.8025 36.7419 22.9414 36.9151 19.1287C37.0019 17.2182 36.85 15.5491 36.6765 14.356C36.5896 13.7586 36.4969 13.2781 36.425 12.9435ZM17.7065 17.7073C21.1351 14.2786 25.4406 13.2424 28.9614 13.0824C30.7175 13.0025 32.2568 13.1423 33.3554 13.3021C33.8244 13.3703 34.2113 13.4419 34.4984 13.501C34.5575 13.7881 34.6291 14.175 34.6973 14.644C34.8571 15.7426 34.997 17.2818 34.9172 19.0379C34.7572 22.5587 33.7211 26.8643 30.2923 30.2931C26.8634 33.7219 22.5578 34.7579 19.0372 34.9179C17.281 34.9977 15.7419 34.8578 14.6433 34.698C14.1743 34.6297 13.7874 34.5581 13.5003 34.4991C13.4413 34.212 13.3697 33.8251 13.3015 33.3561C13.1417 32.2575 13.0019 30.7183 13.0817 28.9622C13.2418 25.4415 14.2779 21.136 17.7065 17.7073Z", fill: "#A1A2A3" })));
8
+ };
9
+ export default BetGeneralIcon;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ class BetsIcon extends React.Component {
3
+ constructor(props) {
4
+ super(props);
5
+ }
6
+ render() {
7
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
+ React.createElement("path", { d: "M26.4393 4.5H6.61944L3.34766 31.5C3.34766 31.5 19.7066 31.5 22.7432 31.5C23.3056 31.5 23.8679 31.4591 24.4251 31.3773C26.0406 31.1268 28.7193 30.3445 29.8491 27.6808C30.3501 26.4947 30.7387 23.1919 30.8665 22.3023C31.1783 20.1345 30.0178 18.8819 28.8625 18.1508C28.6069 17.9923 28.6733 17.6038 28.9647 17.5322C30.1814 17.2203 31.3266 16.571 31.6435 15.1906C31.8633 14.2192 32.0781 12.0872 32.2263 10.9011C32.9113 5.92643 29.568 4.5 26.4393 4.5ZM24.1542 19.792H15.8213L15.6117 21.5047H23.9497L23.4589 25.4773H10.1468L11.2715 16.3154H24.5836L24.1593 19.7869L24.1542 19.792ZM24.7779 14.7202H11.4658L11.9821 10.5227H25.2942L24.783 14.7202H24.7779Z", fill: "#9DA0A6" })));
9
+ }
10
+ }
11
+ export default BetsIcon;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ class BetsWarningIcon extends React.Component {
3
+ constructor(props) {
4
+ super(props);
5
+ }
6
+ render() {
7
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M3 16C3 8.8203 8.8203 3 16 3C23.1797 3 29 8.8203 29 16C29 23.1797 23.1797 29 16 29C8.8203 29 3 23.1797 3 16ZM14.6001 12.0668H17.4001V9.26676H14.6001V12.0668ZM17.3333 22.6667V14H14.6667V22.6667H17.3333Z", fill: "#FFB759" })));
9
+ }
10
+ }
11
+ export default BetsWarningIcon;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ const CheckmarkIcon = (props) => {
3
+ return (React.createElement("svg", { width: props.width, height: props.height, viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M22.0678 6.50019L9.79999 18.768L3.53223 12.5002L5.29999 10.7324L9.79999 15.2324L20.3 4.73242L22.0678 6.50019Z", fill: "#41BA42" })));
5
+ };
6
+ export default CheckmarkIcon;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ const CollapseIcon = (props) => {
3
+ return (React.createElement("svg", { width: props.width, height: props.height, viewBox: "0 0 49 48", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M20 39L20 28.5L9.5 28.5L9.5 25.5L23 25.5L23 39L20 39ZM39.5 22.5L26 22.5L26 9.00392L29 9.00392L29 19.5L39.5 19.5L39.5 22.5Z", fill: "white" })));
5
+ };
6
+ export default CollapseIcon;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ const ExpandIcon = (props) => {
3
+ return (React.createElement("svg", { width: props.width, height: props.height, viewBox: "0 0 48 48", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M13.5 34.5L24 34.5L24 37.5L10.5 37.5L10.5 24L13.5 24L13.5 34.5ZM34.5 24L34.5 13.5006L24.0006 13.5045L23.9994 10.5045L37.5 10.4994L37.5 24L34.5 24Z", fill: "white" })));
5
+ };
6
+ export default ExpandIcon;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ class FantasyIcon extends React.Component {
3
+ constructor(props) {
4
+ super(props);
5
+ }
6
+ render() {
7
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
+ React.createElement("g", { clipPath: "url(#clip0_25549_230289)" },
9
+ React.createElement("path", { d: "M34.2005 2.7002L34.1664 2.99609C33.8501 5.6774 33.5057 8.38303 33.1722 10.999C33.0175 12.2089 32.8635 13.4189 32.7123 14.6357C32.6229 15.3335 32.5467 16.045 32.471 16.7324C32.3026 18.3 32.1272 19.9231 31.8041 21.4941C31.058 25.1414 28.8167 27.7058 25.1419 29.1152C22.495 30.1293 18.1571 31.8342 14.9808 33.082L14.8705 33.127L10.9896 31.1396C10.615 30.9506 10.2435 30.7691 9.87925 30.5869C6.18719 28.7615 2.99695 27.1863 1.96909 22.3633C1.65979 20.923 1.8387 19.4995 2.01401 18.1211L2.06479 17.7197C2.55294 13.7905 3.05907 9.81937 3.54722 5.97949L3.96616 2.7002H34.2005ZM10.9349 14.2236L9.75229 23.8623H23.2728L23.7845 19.6895H15.4349L15.6888 17.6025H24.0423L24.4554 14.2236H10.9349ZM11.6566 8.3623L11.1546 12.4355H24.6751L25.1771 8.3623H11.6566Z", fill: "white" })),
10
+ React.createElement("defs", null,
11
+ React.createElement("clipPath", { id: "clip0_25549_230289" },
12
+ React.createElement("rect", { width: this.props.width, height: this.props.height, fill: "white" })))));
13
+ }
14
+ }
15
+ export default FantasyIcon;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ class FlameIcon extends React.Component {
3
+ constructor(props) {
4
+ super(props);
5
+ }
6
+ render() {
7
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8.54183 0.327148L9.39895 0.669996C11.7818 1.62315 13.1252 3.98581 13.1252 7.08363V7.65808L14.6806 6.1026L15.1035 6.73694C15.9332 7.98141 17.2918 10.2078 17.2918 12.5003C17.2918 16.6478 14.0406 19.3753 10.0002 19.3753C5.95971 19.3753 2.7085 16.6478 2.7085 12.5003C2.7085 9.7532 4.31768 8.02946 5.74552 6.49998L5.79325 6.44885C7.27047 4.86611 8.54183 3.47254 8.54183 1.25029V0.327148ZM10.5323 10.5213L10.6145 10.7677C11.0056 11.941 11.4873 12.5422 11.892 13.0473L11.9337 13.0993C12.1409 13.3583 12.338 13.61 12.4799 13.9081C12.6244 14.2115 12.7085 14.5549 12.7085 15.0003C12.7085 16.496 11.4959 17.7086 10.0002 17.7086C8.50439 17.7086 7.29183 16.496 7.29183 15.0003C7.29183 13.5264 8.18282 11.9311 10.3096 10.655L10.5323 10.5213Z", fill: "#F58B00" })));
9
+ }
10
+ }
11
+ export default FlameIcon;
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import KeyPlaysIcon from './KeyPlaysIcon';
3
+ import PlayIcon from './PlayIcon';
4
+ import BetsIcon from './BetsIcon';
5
+ import StatsIcon from './StatsIcon';
6
+ import WarningIcon from './WarningIcon';
7
+ import ExpandIcon from './ExpandIcon';
8
+ import CollapseIcon from './CollapseIcon';
9
+ import TimesIcon from './TimesIcon';
10
+ import CheckmarkIcon from './CheckmarkIcon';
11
+ import FlameIcon from './FlameIcon';
12
+ import BetsWarningIcon from './BetsWarningIcon';
13
+ import MobilePhoneIcon from './MobilePhoneIcon';
14
+ import FantasyIcon from './FantasyIcon';
15
+ import ShopIcon from './ShopIcon';
16
+ const iconImports = {
17
+ keyPlays: KeyPlaysIcon,
18
+ play: PlayIcon,
19
+ bets: BetsIcon,
20
+ stats: StatsIcon,
21
+ warning: WarningIcon,
22
+ expand: ExpandIcon,
23
+ collapse: CollapseIcon,
24
+ times: TimesIcon,
25
+ checkmark: CheckmarkIcon,
26
+ flame: FlameIcon,
27
+ betsWarning: BetsWarningIcon,
28
+ mobilePhone: MobilePhoneIcon,
29
+ fantasy: FantasyIcon,
30
+ shop: ShopIcon,
31
+ };
32
+ // Skeleton component for loading state
33
+ const Skeleton = (props) => (React.createElement("div", { style: { width: props.width, height: props.height } }));
34
+ class Icon extends React.Component {
35
+ render() {
36
+ const { iconName, width, height } = this.props;
37
+ const IconComponent = iconImports[iconName];
38
+ if (!IconComponent) {
39
+ return React.createElement(Skeleton, { width: width, height: height });
40
+ }
41
+ return React.createElement(IconComponent, { iconName: iconName, width: width, height: height });
42
+ }
43
+ }
44
+ export default Icon;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ class KeyPlaysIcon extends React.Component {
3
+ render() {
4
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 30 32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
+ React.createElement("path", { d: "M27.375 4.75H2.625V7H27.375V4.75Z", fill: "white" }),
6
+ React.createElement("path", { d: "M25.125 0.25H4.875V2.5H25.125V0.25Z", fill: "white" }),
7
+ React.createElement("path", { d: "M0.375 9.25V31.75H29.625V9.25H0.375ZM11.625 26.125V14.875L20.625 20.5L11.625 26.125Z", fill: "white" })));
8
+ }
9
+ }
10
+ export default KeyPlaysIcon;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ class MobilePhoneIcon extends React.Component {
3
+ constructor(props) {
4
+ super(props);
5
+ }
6
+ render() {
7
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9.33333 1.66663C8.04467 1.66663 7 2.7113 7 3.99996V28C7 29.2886 8.04467 30.3333 9.33333 30.3333H22.6667C23.9553 30.3333 25 29.2886 25 28V3.99996C25 2.7113 23.9553 1.66663 22.6667 1.66663H9.33333ZM9 7.66663V23H23V7.66663H9ZM18 26H14V27.3333H18V26Z", fill: "#6C6E6F" })));
9
+ }
10
+ }
11
+ export default MobilePhoneIcon;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ class PlayIcon extends React.Component {
3
+ render() {
4
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M18.1891 8.29879C18.6116 8.5331 18.9367 8.80345 19.162 9.10985C19.3873 9.41624 19.5 9.71863 19.5 10.019C19.5 10.3194 19.396 10.6158 19.1837 10.9102C18.9713 11.2026 18.6463 11.4669 18.2108 11.7012L10.9111 15.6724L3.58975 19.6035C3.15207 19.8378 2.74256 19.9679 2.36122 19.994C1.98204 20.02 1.65703 19.9619 1.38836 19.8177C1.12185 19.6735 0.905177 19.4453 0.742673 19.1328C0.582335 18.8204 0.5 18.4419 0.5 17.9994V2.00062C0.5 1.55805 0.573669 1.17956 0.721006 0.867153C0.87051 0.554748 1.09152 0.326452 1.38836 0.182265C1.6852 0.0380777 2.02104 -0.0199976 2.39372 0.00603615C2.76639 0.0340725 3.16507 0.164241 3.58975 0.398545L10.9111 4.36769L18.1891 8.29879Z", fill: "white" })));
6
+ }
7
+ }
8
+ export default PlayIcon;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export default class ShopIcon extends React.Component {
3
+ render() {
4
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12.3745 7.5V9.375H6.45201L4.99216 29.813C4.88362 31.3325 6.08709 32.625 7.61049 32.625H28.3886C29.912 32.625 31.1154 31.3325 31.0069 29.813L29.547 9.375H23.6245V7.5C23.6245 4.3934 21.1061 1.875 17.9995 1.875C14.8929 1.875 12.3745 4.3934 12.3745 7.5ZM17.9995 4.125C16.1356 4.125 14.6245 5.63604 14.6245 7.5V9.375H21.3745V7.5C21.3745 5.63604 19.8635 4.125 17.9995 4.125ZM12.3745 14.25V11.625H14.6245V14.25C14.6245 14.8713 14.1208 15.375 13.4995 15.375C12.8782 15.375 12.3745 14.8713 12.3745 14.25ZM21.3745 14.25V11.625H23.6245V14.25C23.6245 14.8713 23.1208 15.375 22.4995 15.375C21.8782 15.375 21.3745 14.8713 21.3745 14.25Z", fill: "white" })));
6
+ }
7
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ class StatsIcon extends React.Component {
3
+ render() {
4
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
+ React.createElement("g", { clipPath: "url(#clip0_538_5831)" },
6
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M14.5925 1.7998V32.6941H10.4849V14.8588H3.671V32.6941H0.899902V34.7641H35.099V32.6941H32.3603V8.0125H25.514V32.6941H21.4397V1.7998H14.5925Z", fill: "#9DA0A6" })),
7
+ React.createElement("defs", null,
8
+ React.createElement("clipPath", { id: "clip0_538_5831" },
9
+ React.createElement("rect", { width: "36", height: "36", fill: "white" })))));
10
+ }
11
+ }
12
+ export default StatsIcon;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ const TimesIcon = (props) => {
3
+ return (React.createElement("svg", { width: props.width, height: props.height, viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M6.29999 3.73242L12.8 10.2324L19.3 3.73242L21.0678 5.50019L14.5678 12.0002L21.0678 18.5002L19.3 20.268L12.8 13.768L6.29999 20.268L4.53223 18.5002L11.0322 12.0002L4.53223 5.50019L6.29999 3.73242Z", fill: "#FF7F7F" })));
5
+ };
6
+ export default TimesIcon;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ class WarningIcon extends React.Component {
3
+ render() {
4
+ return (React.createElement("svg", { width: this.props.width, height: this.props.height, viewBox: "0 0 22 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.0022 0.75L21.8012 19.4545H0.203125L11.0022 0.75ZM11.7522 13.5V7.5H10.2522V13.5H11.7522ZM11.8022 14.95H10.2022V16.55H11.8022V14.95Z", fill: "#F58B00" })));
6
+ }
7
+ }
8
+ export default WarningIcon;
@@ -0,0 +1,2 @@
1
+ import Icon from './Icon';
2
+ export default Icon;
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { DARK_THEME } from '@/services/ThemeManager/constants';
3
+ import './App.styles.css';
4
+ import SDK from '@/index';
5
+ const FONT_FAMILY_MAP = {
6
+ body: 'BentonSans',
7
+ headline: 'BentonSansBold',
8
+ title: 'BentonSansMedium',
9
+ };
10
+ class App extends React.Component {
11
+ get colors() {
12
+ const config = SDK.getPageConfig();
13
+ return config?.theme?.colors || DARK_THEME.colors;
14
+ }
15
+ componentDidMount() {
16
+ Object.keys(this.colors).forEach((key) => {
17
+ document.documentElement.style.setProperty(`--sdk-${key}`, this.colors[key]);
18
+ });
19
+ Object.keys(FONT_FAMILY_MAP).forEach((key) => {
20
+ document.documentElement.style.setProperty(`--sdk-font-${key}`, FONT_FAMILY_MAP[key]);
21
+ });
22
+ }
23
+ componentWillUnmount() {
24
+ Object.keys(this.colors).forEach((key) => {
25
+ document.documentElement.style.removeProperty(`--sdk-${key}`);
26
+ });
27
+ Object.keys(FONT_FAMILY_MAP).forEach((key) => {
28
+ document.documentElement.style.removeProperty(`--sdk-font-${key}`);
29
+ });
30
+ }
31
+ render() {
32
+ return React.createElement("div", { className: "sdk-wrapper" }, this.props.children);
33
+ }
34
+ }
35
+ export default App;
@@ -0,0 +1,2 @@
1
+ import App from './App';
2
+ export default App;
@@ -0,0 +1,58 @@
1
+ import React from 'react';
2
+ const OverlayContainer = React.createClass({
3
+ propTypes: {
4
+ viewModels: React.PropTypes.object,
5
+ },
6
+ getInitialState() {
7
+ return {
8
+ isVisible: false,
9
+ currentOverlay: null,
10
+ };
11
+ },
12
+ componentDidMount() {
13
+ if (!this.props.viewModels?.overlayViewModel)
14
+ return;
15
+ const overlayVM = this.props.viewModels.overlayViewModel;
16
+ // Subscribe to overlay visibility changes
17
+ this.unsubscribeVisible = overlayVM.isVisible.subscribe((visible) => {
18
+ this.setState({ isVisible: visible });
19
+ });
20
+ // Subscribe to current overlay changes
21
+ this.unsubscribeOverlay = overlayVM.currentOverlay.subscribe((overlay) => {
22
+ this.setState({ currentOverlay: overlay });
23
+ });
24
+ },
25
+ componentWillUnmount() {
26
+ if (this.unsubscribeVisible)
27
+ this.unsubscribeVisible();
28
+ if (this.unsubscribeOverlay)
29
+ this.unsubscribeOverlay();
30
+ },
31
+ render() {
32
+ if (!this.state.isVisible || !this.state.currentOverlay) {
33
+ return null;
34
+ }
35
+ const overlay = this.state.currentOverlay;
36
+ const Overlay = require('../molecules/Overlay').default;
37
+ return React.createElement(Overlay, {
38
+ key: `overlay-${overlay.type}-${Date.now()}`,
39
+ id: 'sdk-managed-rive-overlay',
40
+ overlayType: overlay.type,
41
+ position: overlay.position,
42
+ winningBet: overlay.winningBet,
43
+ fantasy: overlay.fantasy,
44
+ onOverlayViewed: (overlayType) => {
45
+ if (this.props.viewModels?.overlayViewModel) {
46
+ this.props.viewModels.overlayViewModel.handleOverlayViewed(overlayType);
47
+ }
48
+ },
49
+ onOverlayAction: (overlayType) => {
50
+ if (this.props.viewModels?.overlayViewModel) {
51
+ this.props.viewModels.overlayViewModel.handleOverlayAction(overlayType);
52
+ this.props.viewModels.overlayViewModel.hideOverlay();
53
+ }
54
+ },
55
+ });
56
+ },
57
+ });
58
+ export default OverlayContainer;
@@ -0,0 +1,86 @@
1
+ import React from 'react';
2
+ import './PanelManager.styles.css';
3
+ import PanelNavigation from '@/components/organisms/PanelNavigation';
4
+ import KeyPlaysView from '@/modules/key-plays/view/KeyPlaysView';
5
+ import BetsView from '@/modules/bets/view/BetsView';
6
+ import StatsView from '@/modules/stats/view';
7
+ import SDK from '@/index';
8
+ import FantasyView from '@/modules/fantasy/view';
9
+ import ShopView from '@/modules/shop/view';
10
+ const PANELS_MAP = {
11
+ keyPlays: React.createElement(KeyPlaysView, null),
12
+ bets: React.createElement(BetsView, null),
13
+ stats: React.createElement(StatsView, null),
14
+ fantasy: React.createElement(FantasyView, null),
15
+ shop: React.createElement(ShopView, null),
16
+ };
17
+ class PanelManager extends React.Component {
18
+ constructor(props) {
19
+ super(props);
20
+ Object.defineProperty(this, "unsubscribe", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: null
25
+ });
26
+ Object.defineProperty(this, "panelsUnsubscribe", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true,
30
+ value: null
31
+ });
32
+ Object.defineProperty(this, "viewModel", {
33
+ enumerable: true,
34
+ configurable: true,
35
+ writable: true,
36
+ value: void 0
37
+ });
38
+ this.viewModel = SDK.getMaestroEventViewModel().panelManagerViewModel;
39
+ this.state = {
40
+ activePanel: this.viewModel.currentPanel,
41
+ visiblePanels: this.viewModel.panelsObservable.value,
42
+ };
43
+ }
44
+ componentDidMount() {
45
+ // Subscribe to changes in the current panel
46
+ this.unsubscribe = this.viewModel.currentPanelObservable.subscribe(() => {
47
+ this.setState({ activePanel: this.viewModel.currentPanel });
48
+ });
49
+ // Subscribe to changes in the visible panels
50
+ this.panelsUnsubscribe = this.viewModel.panelsObservable.subscribe((panels) => {
51
+ this.setState({ visiblePanels: panels });
52
+ });
53
+ }
54
+ componentWillUnmount() {
55
+ if (this.unsubscribe) {
56
+ this.unsubscribe();
57
+ this.unsubscribe = null;
58
+ }
59
+ if (this.panelsUnsubscribe) {
60
+ this.panelsUnsubscribe();
61
+ this.panelsUnsubscribe = null;
62
+ }
63
+ }
64
+ goToPanel(panel) {
65
+ return () => {
66
+ if (this.viewModel.currentPanel === panel) {
67
+ return;
68
+ }
69
+ this.viewModel.currentPanel = panel;
70
+ };
71
+ }
72
+ render() {
73
+ const { activePanel, visiblePanels } = this.state;
74
+ // Create panel items only for visible panels
75
+ const PANEL_ITEMS = visiblePanels.map((panel) => ({
76
+ iconName: panel.type,
77
+ onEnter: this.goToPanel(panel.type),
78
+ title: panel.title,
79
+ active: activePanel === panel.type,
80
+ }));
81
+ return (React.createElement("div", { className: "sdk--panel-manager" },
82
+ React.createElement(PanelNavigation, { items: PANEL_ITEMS }),
83
+ activePanel && (React.createElement("div", { className: "sdk--panel-wrapper" }, PANELS_MAP[activePanel]))));
84
+ }
85
+ }
86
+ export default PanelManager;
@@ -0,0 +1,2 @@
1
+ import PanelManager from './PanelManager';
2
+ export default PanelManager;