@maestro_io/maestro-web-sdk 4.0.0-beta.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 (125) hide show
  1. package/dist/maestro-web-sdk.esm.js +4 -4
  2. package/dist/maestro-web-sdk.esm.js.map +1 -1
  3. package/dist/maestro-web-sdk.umd.js +4 -4
  4. package/dist/maestro-web-sdk.umd.js.map +1 -1
  5. package/dist/package.json +9 -13
  6. package/dist/src/components/atoms/BaseButton/BaseButton.d.ts +1 -1
  7. package/dist/src/components/atoms/Image/index.d.ts +1 -1
  8. package/dist/src/components/atoms/Rive/index.d.ts +11 -141
  9. package/dist/src/components/atoms/SvgIcon/BetGeneralIcon.d.ts +2 -1
  10. package/dist/src/components/atoms/SvgIcon/BetsIcon.d.ts +1 -1
  11. package/dist/src/components/atoms/SvgIcon/BetsWarningIcon.d.ts +1 -1
  12. package/dist/src/components/atoms/SvgIcon/CheckmarkIcon.d.ts +2 -1
  13. package/dist/src/components/atoms/SvgIcon/CollapseIcon.d.ts +2 -1
  14. package/dist/src/components/atoms/SvgIcon/ExpandIcon.d.ts +2 -1
  15. package/dist/src/components/atoms/SvgIcon/FantasyIcon.d.ts +1 -1
  16. package/dist/src/components/atoms/SvgIcon/FlameIcon.d.ts +1 -1
  17. package/dist/src/components/atoms/SvgIcon/Icon.d.ts +5 -5
  18. package/dist/src/components/atoms/SvgIcon/KeyPlaysIcon.d.ts +1 -1
  19. package/dist/src/components/atoms/SvgIcon/MobilePhoneIcon.d.ts +1 -1
  20. package/dist/src/components/atoms/SvgIcon/PlayIcon.d.ts +1 -1
  21. package/dist/src/components/atoms/SvgIcon/ShopIcon.d.ts +1 -1
  22. package/dist/src/components/atoms/SvgIcon/StatsIcon.d.ts +1 -1
  23. package/dist/src/components/atoms/SvgIcon/TimesIcon.d.ts +2 -1
  24. package/dist/src/components/atoms/SvgIcon/WarningIcon.d.ts +1 -1
  25. package/dist/src/components/core/App/App.d.ts +1 -1
  26. package/dist/src/components/core/PanelManager/PanelManager.d.ts +1 -1
  27. package/dist/src/components/core/ScrollableContainer/ScrollableContainer.d.ts +7 -8
  28. package/dist/src/components/core/ScrollableContainer/ScrollableContainer.js +6 -7
  29. package/dist/src/components/molecules/ActionButton/ActionButton.d.ts +7 -53
  30. package/dist/src/components/molecules/HeadshotImage/HeadshotImage.d.ts +1 -1
  31. package/dist/src/components/molecules/Overlay/Overlay.d.ts +1 -1
  32. package/dist/src/components/molecules/PanelNavButton/PanelNavButton.d.ts +7 -53
  33. package/dist/src/components/molecules/TabLoadError/TabLoadError.d.ts +7 -53
  34. package/dist/src/components/molecules/WatchButton/WatchButton.d.ts +1 -1
  35. package/dist/src/components/organisms/PanelNavigation/PanelNavigation.d.ts +1 -1
  36. package/dist/src/components/organisms/SegmentController/SegmentController.d.ts +4 -5
  37. package/dist/src/development/TimeSeek.d.ts +1 -1
  38. package/dist/src/development/development.js +4 -7
  39. package/dist/src/external/ReactRenderer.js +3 -15
  40. package/dist/src/external/spatial-navigation/withFocusable.d.ts +7 -53
  41. package/dist/src/interfaces/IMaestroEvent.d.ts +12 -0
  42. package/dist/src/modules/bets/view/BetsView.d.ts +3 -3
  43. package/dist/src/modules/bets/view/HotProps/HotPropsView.d.ts +7 -53
  44. package/dist/src/modules/bets/view/SixPack/SixPackView.d.ts +4 -5
  45. package/dist/src/modules/bets/view/UserBets/BetResult/BetResult.d.ts +1 -1
  46. package/dist/src/modules/bets/view/UserBets/BetsCard/BetsCard.d.ts +7 -53
  47. package/dist/src/modules/bets/view/UserBets/BetsCard/BetsCardEvent.d.ts +4 -5
  48. package/dist/src/modules/bets/view/UserBets/BetsCard/BetsCardFooter.d.ts +2 -1
  49. package/dist/src/modules/bets/view/UserBets/Boost/Boost.d.ts +2 -1
  50. package/dist/src/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.d.ts +2 -1
  51. package/dist/src/modules/bets/view/UserBets/Parlay/Parlay.d.ts +2 -1
  52. package/dist/src/modules/bets/view/UserBets/Straight/Straight.d.ts +2 -1
  53. package/dist/src/modules/bets/view/UserBets/Teaser/Teaser.d.ts +2 -1
  54. package/dist/src/modules/bets/view/UserBets/UserBetsView.d.ts +3 -3
  55. package/dist/src/modules/bets/view/components/Bet/Bet.d.ts +11 -99
  56. package/dist/src/modules/bets/view/components/BetPill/BetPill.d.ts +1 -1
  57. package/dist/src/modules/bets/view/components/BetsCard/BetsCardHeader.d.ts +1 -1
  58. package/dist/src/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.d.ts +1 -1
  59. package/dist/src/modules/bets/view/components/LocationWarning/LocationWarning.d.ts +1 -1
  60. package/dist/src/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.d.ts +4 -5
  61. package/dist/src/modules/fantasy/components/ExpandedAthleteList/ExpandedAthletesList.d.ts +1 -1
  62. package/dist/src/modules/fantasy/components/LeagueCard/LeagueCard.d.ts +7 -53
  63. package/dist/src/modules/fantasy/components/TopPlayerCard/TopPlayerCard.d.ts +7 -53
  64. package/dist/src/modules/fantasy/view/ActiveAthletesMarquee/ActiveAthletesMarquee.d.ts +1 -1
  65. package/dist/src/modules/fantasy/view/FantasyItemView.d.ts +5 -6
  66. package/dist/src/modules/fantasy/view/FantasyView.d.ts +3 -3
  67. package/dist/src/modules/fantasy/view/InactiveLeague/DraftDateCountdown.d.ts +1 -1
  68. package/dist/src/modules/fantasy/view/InactiveLeague/InactiveLeague.d.ts +7 -53
  69. package/dist/src/modules/fantasy/view/LoginView/LoginView.d.ts +7 -53
  70. package/dist/src/modules/fantasy/view/MatchupPair/DoubleAthleteCard/DoubleAthleteCard.d.ts +7 -53
  71. package/dist/src/modules/fantasy/view/MatchupPair/ExpandedDoubleAthleteCards.d.ts +1 -1
  72. package/dist/src/modules/fantasy/view/MatchupPair/MatchupPair.d.ts +7 -53
  73. package/dist/src/modules/fantasy/view/MatchupSingle/ExpandedSingleAthleteCards.d.ts +1 -1
  74. package/dist/src/modules/fantasy/view/MatchupSingle/MatchupSingle.d.ts +7 -53
  75. package/dist/src/modules/fantasy/view/MatchupSingle/SingleAthleteCard/SingleAthleteCard.d.ts +7 -53
  76. package/dist/src/modules/fantasy/view/PromoView/PromoView.d.ts +7 -53
  77. package/dist/src/modules/key-plays/view/KeyPlayCardScoreTagView.d.ts +1 -1
  78. package/dist/src/modules/key-plays/view/KeyPlayCardView.d.ts +6 -7
  79. package/dist/src/modules/key-plays/view/KeyPlayCardView.js +8 -3
  80. package/dist/src/modules/key-plays/view/KeyPlayErrorStateView.d.ts +1 -1
  81. package/dist/src/modules/key-plays/view/KeyPlaysView.d.ts +3 -3
  82. package/dist/src/modules/key-plays/view-model/KeyPlaysViewModel.js +1 -2
  83. package/dist/src/modules/shop/view/ProductDetailView/ProductDetailView.d.ts +2 -1
  84. package/dist/src/modules/shop/view/ProductDetailView/ProductDetailView.js +3 -3
  85. package/dist/src/modules/shop/view/ShopView.d.ts +3 -3
  86. package/dist/src/modules/shop/view/components/BrowseCard/BrowseCard.d.ts +8 -54
  87. package/dist/src/modules/shop/view/components/ProductSummaryCard/ProductSummaryCard.d.ts +7 -53
  88. package/dist/src/modules/shop/view/components/ShopPromoView/ShopPromoView.d.ts +2 -1
  89. package/dist/src/modules/shop/view/components/ShopSection/ShopSection.d.ts +4 -5
  90. package/dist/src/modules/stats/utils/renderTeamStatistic.d.ts +2 -1
  91. package/dist/src/modules/stats/view/ActiveAthletes/ActiveAthletes.d.ts +2 -2
  92. package/dist/src/modules/stats/view/ActiveAthletes/CollapsedAthletes/CollapsedAthletes.d.ts +2 -1
  93. package/dist/src/modules/stats/view/ActiveAthletes/ExpandedAthletes/ExpandedAthletes.d.ts +1 -1
  94. package/dist/src/modules/stats/view/DriveSummary/DrivePlayCard.d.ts +7 -53
  95. package/dist/src/modules/stats/view/DriveSummary/DriveSummary.d.ts +1 -1
  96. package/dist/src/modules/stats/view/DriveSummary/ExpandedItems/DriveSummaryExpanded.d.ts +1 -1
  97. package/dist/src/modules/stats/view/DriveSummary/Header/DriveSummaryHeader.d.ts +2 -1
  98. package/dist/src/modules/stats/view/DriveSummary/MainStat/MainStat.d.ts +2 -1
  99. package/dist/src/modules/stats/view/GameLeaders/GameLeaders.d.ts +4 -5
  100. package/dist/src/modules/stats/view/MatchPredictor/DonutChart/DonutChart.d.ts +2 -2
  101. package/dist/src/modules/stats/view/MatchPredictor/MatchPredictorView.d.ts +7 -53
  102. package/dist/src/modules/stats/view/Penalties/Penalties.d.ts +2 -1
  103. package/dist/src/modules/stats/view/RecentGames/RecentGames.d.ts +7 -53
  104. package/dist/src/modules/stats/view/ScoringSummary/ExpandedScores/ExpandedScores.d.ts +1 -1
  105. package/dist/src/modules/stats/view/ScoringSummary/ScoreItem/ScoreItem.d.ts +7 -53
  106. package/dist/src/modules/stats/view/ScoringSummary/ScoresSection/ScoresSection.d.ts +2 -1
  107. package/dist/src/modules/stats/view/ScoringSummary/ScoringSummary.d.ts +2 -2
  108. package/dist/src/modules/stats/view/StatsItemView.d.ts +5 -6
  109. package/dist/src/modules/stats/view/StatsQRCode/StatsQRCodeView.d.ts +7 -53
  110. package/dist/src/modules/stats/view/StatsView.d.ts +3 -3
  111. package/dist/src/modules/stats/view/TeamStats/TeamStatsView.d.ts +7 -53
  112. package/dist/src/modules/stats/view/Teams/StatsCarousel.d.ts +2 -2
  113. package/dist/src/modules/stats/view/Teams/StatsProgressBar.d.ts +2 -1
  114. package/dist/src/modules/stats/view/Teams/Teams.d.ts +7 -53
  115. package/dist/src/modules/stats/view/Teams/Teams.js +1 -17
  116. package/dist/src/modules/stats/view/WinProbability/WinProbability.d.ts +7 -53
  117. package/dist/src/modules/stats/view/components/AthletesStatistics/AthletesStatistics.d.ts +7 -53
  118. package/dist/src/modules/stats/view/components/AthletesStatistics/StatisticTable.d.ts +2 -1
  119. package/dist/src/modules/stats/view-model/StatsViewModel.d.ts +5 -0
  120. package/dist/src/modules/stats/view-model/StatsViewModel.js +37 -14
  121. package/dist/src/services/StatsService.d.ts +1 -0
  122. package/dist/src/services/StatsService.js +11 -0
  123. package/dist/src/view-models/MaestroEventViewModel.d.ts +1 -0
  124. package/dist/src/view-models/MaestroEventViewModel.js +27 -0
  125. package/package.json +9 -13
@@ -142,6 +142,19 @@ export class StatsViewModel extends ViewModel {
142
142
  this.statsService = new StatsService(delegate);
143
143
  this.analyticsService = new AnalyticsService();
144
144
  }
145
+ /**
146
+ * Sets panel-specific data configuration
147
+ * @param panelData - Object containing panel configuration
148
+ */
149
+ setPanelData(panelData) {
150
+ if ('overrideUrl' in panelData) {
151
+ const overrideUrl = panelData.overrideUrl;
152
+ if (typeof overrideUrl === 'string' && overrideUrl.length > 0) {
153
+ console.log('[StatsViewModel] Setting overrideUrl:', overrideUrl);
154
+ this.statsService.overrideUrl = overrideUrl;
155
+ }
156
+ }
157
+ }
145
158
  /**
146
159
  * Initialize the ViewModel and start data fetching
147
160
  */
@@ -397,7 +410,7 @@ export class StatsViewModel extends ViewModel {
397
410
  this.currentGameState.value = data.gameState;
398
411
  }
399
412
  parseDriveSummary(data) {
400
- const teams = data.entities.teams;
413
+ const teams = data.entities?.teams;
401
414
  const drives = data.drives;
402
415
  if (!teams || !drives || drives.length === 0) {
403
416
  return [];
@@ -432,7 +445,7 @@ export class StatsViewModel extends ViewModel {
432
445
  return result;
433
446
  }
434
447
  parseTeamsStatistics(data) {
435
- const teams = data.entities.teams;
448
+ const teams = data.entities?.teams;
436
449
  if (!teams) {
437
450
  return null;
438
451
  }
@@ -475,9 +488,9 @@ export class StatsViewModel extends ViewModel {
475
488
  };
476
489
  }
477
490
  parseMatchPredictor(data) {
478
- const teams = data.entities.teams;
491
+ const teams = data.entities?.teams;
479
492
  const predictor = data.predictor;
480
- if (!predictor || !predictor.homeTeam || !predictor.awayTeam) {
493
+ if (!teams || !predictor || !predictor.homeTeam || !predictor.awayTeam) {
481
494
  return null;
482
495
  }
483
496
  // Get team data
@@ -522,7 +535,10 @@ export class StatsViewModel extends ViewModel {
522
535
  };
523
536
  }
524
537
  parseHeaderTeams(response) {
525
- const teams = response.entities.teams;
538
+ const teams = response.entities?.teams;
539
+ if (!teams || !response.header?.teams) {
540
+ return null;
541
+ }
526
542
  const homeTeamHeader = response.header.teams.find((t) => {
527
543
  const team = teams[t.$key];
528
544
  return team && team.homeAway === 'home';
@@ -588,7 +604,7 @@ export class StatsViewModel extends ViewModel {
588
604
  };
589
605
  }
590
606
  parseRecentGames(response) {
591
- const teams = response.entities.teams;
607
+ const teams = response.entities?.teams;
592
608
  const previousGames = response.previousGames;
593
609
  if (!teams || !previousGames || previousGames.length === 0) {
594
610
  return null;
@@ -653,7 +669,10 @@ export class StatsViewModel extends ViewModel {
653
669
  !winProbability.awayTeam) {
654
670
  return null;
655
671
  }
656
- const teams = response.entities.teams;
672
+ const teams = response.entities?.teams;
673
+ if (!teams) {
674
+ return null;
675
+ }
657
676
  const homeTeam = teams[winProbability.homeTeam.team.$key];
658
677
  const awayTeam = teams[winProbability.awayTeam.team.$key];
659
678
  if (!homeTeam || !awayTeam) {
@@ -677,7 +696,7 @@ export class StatsViewModel extends ViewModel {
677
696
  };
678
697
  }
679
698
  parseGameLeaders(response) {
680
- if (!response.entities.athletes || !response.entities.teams) {
699
+ if (!response.entities?.athletes || !response.entities?.teams) {
681
700
  return null;
682
701
  }
683
702
  const leaders = response.leaders;
@@ -740,7 +759,7 @@ export class StatsViewModel extends ViewModel {
740
759
  const activeAthletes = response.activeAthletes;
741
760
  const { awayTeam, homeTeam } = this.getActiveAthletesTeamInfo(response);
742
761
  const athletes = [];
743
- if (!response.entities.athletes ||
762
+ if (!response.entities?.athletes ||
744
763
  !activeAthletes ||
745
764
  awayTeam.index === -1 ||
746
765
  homeTeam.index === -1) {
@@ -836,9 +855,13 @@ export class StatsViewModel extends ViewModel {
836
855
  logo: '',
837
856
  name: '-',
838
857
  };
858
+ const entitiesTeams = data.entities?.teams;
859
+ if (!entitiesTeams) {
860
+ return { awayTeam, homeTeam };
861
+ }
839
862
  for (let i = 0; i < teams.length; i++) {
840
863
  const teamInfo = teams[i];
841
- const team = data.entities.teams[teamInfo.team.$key];
864
+ const team = entitiesTeams[teamInfo.team.$key];
842
865
  if (!team) {
843
866
  continue;
844
867
  }
@@ -866,8 +889,8 @@ export class StatsViewModel extends ViewModel {
866
889
  if (!scoringSummary || !scoringSummary.sections) {
867
890
  return null;
868
891
  }
869
- const teams = data.entities.teams;
870
- const athletes = data.entities.athletes;
892
+ const teams = data.entities?.teams;
893
+ const athletes = data.entities?.athletes;
871
894
  const sections = scoringSummary.sections.map((section) => {
872
895
  const scores = section.items
873
896
  .filter((item) => item?.team?.$key && item?.athlete?.$key)
@@ -915,8 +938,8 @@ export class StatsViewModel extends ViewModel {
915
938
  if (!penalties || !penalties.sections) {
916
939
  return null;
917
940
  }
918
- const teams = data.entities.teams;
919
- const athletes = data.entities.athletes;
941
+ const teams = data.entities?.teams;
942
+ const athletes = data.entities?.athletes;
920
943
  const sections = penalties.sections.map((section) => {
921
944
  const scores = section.items
922
945
  .filter((item) => item?.team?.$key && item?.athlete?.$key)
@@ -6,6 +6,7 @@ import IMaestroEventDelegate from '@/interfaces/IMaestroEventDelegate';
6
6
  */
7
7
  declare class StatsService {
8
8
  networkManager: IStatsNetworkManager;
9
+ overrideUrl: string | null;
9
10
  constructor(delegate: IMaestroEventDelegate);
10
11
  /**
11
12
  * Get stats using a full sync URL (for timecode support)
@@ -13,6 +13,12 @@ class StatsService {
13
13
  writable: true,
14
14
  value: void 0
15
15
  });
16
+ Object.defineProperty(this, "overrideUrl", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: null
21
+ });
16
22
  this.networkManager = NetworkManagerFactory.createStatsNetworkManager(delegate.getStatsAPIBaseURL());
17
23
  }
18
24
  /**
@@ -58,6 +64,11 @@ class StatsService {
58
64
  * @throws Error if page config is not available or required fields are missing
59
65
  */
60
66
  getSyncEndpoint(timeCode) {
67
+ // Apply overrideUrl if set
68
+ if (this.overrideUrl) {
69
+ console.log('[StatsService] Using overrideUrl:', this.overrideUrl);
70
+ return this.overrideUrl;
71
+ }
61
72
  const pageConfig = SDK.getPageConfig();
62
73
  if (!pageConfig) {
63
74
  throw new Error('Page config is null or undefined');
@@ -30,6 +30,7 @@ export declare class MaestroEventViewModel extends ViewModel implements IMaestro
30
30
  setActivePanel(panelType: MaestroPanelType): void;
31
31
  updatePlayerTimeCode(timestamp: number): void;
32
32
  getPlayerTimeCode(): number | null;
33
+ setPanelData(panelData: Record<string, any>): void;
33
34
  deinit(): Promise<void>;
34
35
  updateKeyPlaysData(data: IMaestroKeyPlaysResponse | null): Promise<void>;
35
36
  updateUserSettings(settings: IUserSettings): Promise<void>;
@@ -143,6 +143,33 @@ export class MaestroEventViewModel extends ViewModel {
143
143
  getPlayerTimeCode() {
144
144
  return this.playerTimeCode;
145
145
  }
146
+ setPanelData(panelData) {
147
+ const panelTypes = Object.keys(panelData);
148
+ // Map panel types to view model instances
149
+ const viewModels = {
150
+ espnStats: this.statsViewModel,
151
+ espnBet: this.betsViewModel,
152
+ espnKeyPlays: this.keyPlaysViewModel,
153
+ espnFantasy: this.fantasyViewModel,
154
+ espnShop: this.shopViewModel,
155
+ };
156
+ for (const panelType of panelTypes) {
157
+ const data = panelData[panelType];
158
+ if (!data)
159
+ continue;
160
+ const viewModel = viewModels[panelType];
161
+ if (!viewModel) {
162
+ // Panel is not initialized, so we ignore the data
163
+ console.log(`[setPanelData] Panel '${panelType}' not initialized/supported. Data ignored.`);
164
+ }
165
+ else {
166
+ // Panel exists, call its setPanelData method
167
+ if (panelType === 'espnStats' && viewModel.setPanelData) {
168
+ viewModel.setPanelData(data);
169
+ }
170
+ }
171
+ }
172
+ }
146
173
  async deinit() {
147
174
  this.betsViewModel?.cleanup();
148
175
  this.statsViewModel?.cleanup();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maestro_io/maestro-web-sdk",
3
3
  "private": false,
4
- "version": "4.0.0-beta.1",
4
+ "version": "4.0.0-beta.2",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "main": "dist/maestro-web-sdk.umd.js",
@@ -38,19 +38,19 @@
38
38
  "@babel/preset-env": "7.12.1",
39
39
  "@babel/preset-react": "7.12.1",
40
40
  "@babel/preset-typescript": "7.12.1",
41
- "@types/enzyme-adapter-react-16": "^1.0.6",
41
+ "@types/enzyme-adapter-react-15": "^1.0.9",
42
42
  "@types/jest": "24.0.25",
43
43
  "@types/node": "10",
44
44
  "@types/prop-types": "^15.7.10",
45
- "@types/react": "16.14.34",
46
- "@types/react-dom": "16.9.18",
45
+ "@types/react": "15",
46
+ "@types/react-dom": "15",
47
47
  "@typescript-eslint/eslint-plugin": "2.34.0",
48
48
  "@typescript-eslint/parser": "2.34.0",
49
49
  "babel-jest": "26.6.3",
50
50
  "babel-loader": "8",
51
51
  "css-loader": "5",
52
52
  "enzyme": "3.11.0",
53
- "enzyme-adapter-react-16": "1.15.7",
53
+ "enzyme-adapter-react-15": "1.0.6",
54
54
  "eslint": "6.8.0",
55
55
  "eslint-config-prettier": "6.0.0",
56
56
  "eslint-plugin-react": "7.20.0",
@@ -62,7 +62,7 @@
62
62
  "jest": "26.6.3",
63
63
  "nodemon": "^3.1.9",
64
64
  "prettier": "2.0.5",
65
- "react-test-renderer": "16.14.0",
65
+ "react-test-renderer": "15",
66
66
  "style-loader": "2",
67
67
  "tsconfig-paths-webpack-plugin": "^4.2.0",
68
68
  "typescript": "^4",
@@ -75,13 +75,9 @@
75
75
  "@sentry/browser": "7.68.0",
76
76
  "axios": "^0.27.2",
77
77
  "flexibility": "^2.0.1",
78
- "prop-types": "15.8.1",
79
- "react": "16.14.0",
80
- "react-dom": "16.14.0"
81
- },
82
- "peerDependencies": {
83
- "react": "^16.0.0",
84
- "react-dom": "^16.0.0"
78
+ "prop-types": "15",
79
+ "react": "^15.0.0",
80
+ "react-dom": "^15.0.0"
85
81
  },
86
82
  "resolutions": {
87
83
  "sockjs-client": "1.5.1",