@maestro_io/maestro-web-sdk 5.1.1 → 5.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 (162) hide show
  1. package/dist/1.maestro-web-sdk.esm.js +1 -1
  2. package/dist/1.maestro-web-sdk.esm.js.map +1 -1
  3. package/dist/10.maestro-web-sdk.esm.js +1 -1
  4. package/dist/10.maestro-web-sdk.esm.js.map +1 -1
  5. package/dist/11.maestro-web-sdk.esm.js +1 -1
  6. package/dist/11.maestro-web-sdk.esm.js.map +1 -1
  7. package/dist/12.maestro-web-sdk.esm.js +1 -1
  8. package/dist/12.maestro-web-sdk.esm.js.map +1 -1
  9. package/dist/13.maestro-web-sdk.esm.js +1 -1
  10. package/dist/13.maestro-web-sdk.esm.js.map +1 -1
  11. package/dist/14.maestro-web-sdk.esm.js +1 -1
  12. package/dist/14.maestro-web-sdk.esm.js.map +1 -1
  13. package/dist/15.maestro-web-sdk.esm.js +1 -1
  14. package/dist/15.maestro-web-sdk.esm.js.map +1 -1
  15. package/dist/16.maestro-web-sdk.esm.js +1 -1
  16. package/dist/16.maestro-web-sdk.esm.js.map +1 -1
  17. package/dist/17.maestro-web-sdk.esm.js +1 -1
  18. package/dist/17.maestro-web-sdk.esm.js.map +1 -1
  19. package/dist/18.maestro-web-sdk.esm.js +1 -1
  20. package/dist/18.maestro-web-sdk.esm.js.map +1 -1
  21. package/dist/19.maestro-web-sdk.esm.js +1 -1
  22. package/dist/19.maestro-web-sdk.esm.js.map +1 -1
  23. package/dist/2.maestro-web-sdk.esm.js +1 -1
  24. package/dist/20.maestro-web-sdk.esm.js +1 -1
  25. package/dist/20.maestro-web-sdk.esm.js.map +1 -1
  26. package/dist/21.maestro-web-sdk.esm.js +1 -1
  27. package/dist/21.maestro-web-sdk.esm.js.map +1 -1
  28. package/dist/22.maestro-web-sdk.esm.js +1 -1
  29. package/dist/22.maestro-web-sdk.esm.js.map +1 -1
  30. package/dist/23.maestro-web-sdk.esm.js +1 -1
  31. package/dist/23.maestro-web-sdk.esm.js.map +1 -1
  32. package/dist/24.maestro-web-sdk.esm.js +1 -1
  33. package/dist/24.maestro-web-sdk.esm.js.map +1 -1
  34. package/dist/25.maestro-web-sdk.esm.js +1 -1
  35. package/dist/25.maestro-web-sdk.esm.js.map +1 -1
  36. package/dist/26.maestro-web-sdk.esm.js +1 -1
  37. package/dist/26.maestro-web-sdk.esm.js.map +1 -1
  38. package/dist/27.maestro-web-sdk.esm.js +1 -1
  39. package/dist/27.maestro-web-sdk.esm.js.map +1 -1
  40. package/dist/28.maestro-web-sdk.esm.js +1 -1
  41. package/dist/28.maestro-web-sdk.esm.js.map +1 -1
  42. package/dist/29.maestro-web-sdk.esm.js +1 -1
  43. package/dist/29.maestro-web-sdk.esm.js.map +1 -1
  44. package/dist/3.maestro-web-sdk.esm.js +1 -1
  45. package/dist/3.maestro-web-sdk.esm.js.map +1 -1
  46. package/dist/30.maestro-web-sdk.esm.js +1 -1
  47. package/dist/30.maestro-web-sdk.esm.js.map +1 -1
  48. package/dist/31.maestro-web-sdk.esm.js +1 -1
  49. package/dist/31.maestro-web-sdk.esm.js.map +1 -1
  50. package/dist/32.maestro-web-sdk.esm.js +1 -1
  51. package/dist/32.maestro-web-sdk.esm.js.map +1 -1
  52. package/dist/33.maestro-web-sdk.esm.js +1 -1
  53. package/dist/33.maestro-web-sdk.esm.js.map +1 -1
  54. package/dist/34.maestro-web-sdk.esm.js +1 -1
  55. package/dist/34.maestro-web-sdk.esm.js.map +1 -1
  56. package/dist/35.maestro-web-sdk.esm.js +1 -1
  57. package/dist/35.maestro-web-sdk.esm.js.map +1 -1
  58. package/dist/36.maestro-web-sdk.esm.js +1 -1
  59. package/dist/36.maestro-web-sdk.esm.js.map +1 -1
  60. package/dist/37.maestro-web-sdk.esm.js +1 -1
  61. package/dist/37.maestro-web-sdk.esm.js.map +1 -1
  62. package/dist/38.maestro-web-sdk.esm.js +1 -1
  63. package/dist/38.maestro-web-sdk.esm.js.map +1 -1
  64. package/dist/39.maestro-web-sdk.esm.js +2 -0
  65. package/dist/39.maestro-web-sdk.esm.js.map +1 -0
  66. package/dist/4.maestro-web-sdk.esm.js +1 -1
  67. package/dist/4.maestro-web-sdk.esm.js.map +1 -1
  68. package/dist/40.maestro-web-sdk.esm.js +2 -0
  69. package/dist/40.maestro-web-sdk.esm.js.map +1 -0
  70. package/dist/5.maestro-web-sdk.esm.js +1 -1
  71. package/dist/5.maestro-web-sdk.esm.js.map +1 -1
  72. package/dist/6.maestro-web-sdk.esm.js +1 -1
  73. package/dist/6.maestro-web-sdk.esm.js.map +1 -1
  74. package/dist/7.maestro-web-sdk.esm.js +1 -1
  75. package/dist/7.maestro-web-sdk.esm.js.map +1 -1
  76. package/dist/8.maestro-web-sdk.esm.js +1 -1
  77. package/dist/8.maestro-web-sdk.esm.js.map +1 -1
  78. package/dist/9.maestro-web-sdk.esm.js +1 -1
  79. package/dist/9.maestro-web-sdk.esm.js.map +1 -1
  80. package/dist/index.d.ts +12 -2
  81. package/dist/maestro-web-sdk.esm.js +3 -3
  82. package/dist/maestro-web-sdk.esm.js.map +1 -1
  83. package/dist/maestro-web-sdk.umd.js +3 -3
  84. package/dist/maestro-web-sdk.umd.js.map +1 -1
  85. package/dist/package.json +1 -1
  86. package/dist/src/components/atoms/SvgIcon/AddIcon.d.ts +3 -0
  87. package/dist/src/components/atoms/SvgIcon/AddIcon.js +6 -0
  88. package/dist/src/components/atoms/SvgIcon/Icon.js +2 -0
  89. package/dist/src/components/core/PanelManager/PanelManager.js +5 -3
  90. package/dist/src/components/molecules/NetworkDialog/NetworkDialog.d.ts +11 -0
  91. package/dist/src/components/molecules/NetworkDialog/NetworkDialog.js +34 -0
  92. package/dist/src/components/molecules/NetworkDialog/index.d.ts +2 -0
  93. package/dist/src/components/molecules/NetworkDialog/index.js +2 -0
  94. package/dist/src/components/molecules/NetworkError/NetworkError.d.ts +104 -0
  95. package/dist/src/components/molecules/NetworkError/NetworkError.js +26 -0
  96. package/dist/src/components/molecules/NetworkError/index.d.ts +2 -0
  97. package/dist/src/components/molecules/NetworkError/index.js +2 -0
  98. package/dist/src/components/molecules/PanelNavButton/PanelNavButton.d.ts +1 -0
  99. package/dist/src/components/molecules/PanelNavButton/PanelNavButton.js +16 -7
  100. package/dist/src/components/organisms/PanelNavigation/PanelNavigation.d.ts +1 -0
  101. package/dist/src/components/organisms/PanelNavigation/PanelNavigation.js +11 -7
  102. package/dist/src/development/MaestroEventDelegate.js +1 -0
  103. package/dist/src/helpers/site.d.ts +1 -0
  104. package/dist/src/helpers/site.js +6 -0
  105. package/dist/src/helpers/siteConfig.d.ts +1 -0
  106. package/dist/src/helpers/siteConfig.js +5 -0
  107. package/dist/src/interfaces/IMaestroEventDelegate.d.ts +8 -1
  108. package/dist/src/models/IPanel.d.ts +1 -1
  109. package/dist/src/models/IPanel.js +1 -1
  110. package/dist/src/modules/espn/bets/view/BetsView.js +1 -1
  111. package/dist/src/modules/espn/components/TabLoadError/TabLoadError.d.ts +96 -0
  112. package/dist/src/modules/espn/components/TabLoadError/TabLoadError.js +14 -0
  113. package/dist/src/modules/espn/components/TabLoadError/index.d.ts +2 -0
  114. package/dist/src/modules/espn/components/TabLoadError/index.js +2 -0
  115. package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/TournamentOverflowQR.d.ts +5 -5
  116. package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/TournamentOverflowQR.js +7 -73
  117. package/dist/src/modules/espn/fantasy/services/FantasyService.js +1 -1
  118. package/dist/src/modules/espn/fantasy/view/FantasyItemView.js +1 -1
  119. package/dist/src/modules/espn/fantasy/view/FantasyView.js +1 -1
  120. package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.js +7 -0
  121. package/dist/src/modules/espn/key-plays/view/KeyPlayErrorStateView.js +1 -1
  122. package/dist/src/modules/espn/shop/view/ShopView.js +1 -1
  123. package/dist/src/modules/espn/stats/view/StatsView.js +1 -1
  124. package/dist/src/modules/fox/components/TabLoadError/TabLoadError.d.ts +96 -0
  125. package/dist/src/modules/fox/components/TabLoadError/TabLoadError.js +19 -0
  126. package/dist/src/modules/fox/components/TabLoadError/index.d.ts +2 -0
  127. package/dist/src/modules/fox/components/TabLoadError/index.js +2 -0
  128. package/dist/src/modules/fox/multi-view/interfaces/IMultiViewViewModel.d.ts +3 -0
  129. package/dist/src/modules/fox/multi-view/interfaces/IMultiViewViewModel.js +1 -0
  130. package/dist/src/modules/fox/multi-view/services/MultiViewService.d.ts +99 -0
  131. package/dist/src/modules/fox/multi-view/services/MultiViewService.js +94 -0
  132. package/dist/src/modules/fox/multi-view/types.d.ts +48 -0
  133. package/dist/src/modules/fox/multi-view/types.js +86 -0
  134. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/CuratedMultiviews.d.ts +8 -0
  135. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/CuratedMultiviews.js +91 -0
  136. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/index.d.ts +2 -0
  137. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/index.js +2 -0
  138. package/dist/src/modules/fox/multi-view/view/FoxMultiView.d.ts +1 -0
  139. package/dist/src/modules/fox/multi-view/view/FoxMultiView.js +62 -2
  140. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/CustomMultiviewStreamsCard.d.ts +122 -0
  141. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/CustomMultiviewStreamsCard.js +51 -0
  142. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/index.d.ts +2 -0
  143. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/index.js +2 -0
  144. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/LayoutSelector.d.ts +13 -0
  145. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/LayoutSelector.js +40 -0
  146. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/index.d.ts +2 -0
  147. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/index.js +2 -0
  148. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/CuratedMultiviewCard.d.ts +101 -0
  149. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/CuratedMultiviewCard.js +21 -0
  150. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/index.d.ts +2 -0
  151. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/index.js +2 -0
  152. package/dist/src/modules/fox/multi-view/view-model/MultiViewViewModel.d.ts +63 -0
  153. package/dist/src/modules/fox/multi-view/view-model/MultiViewViewModel.js +328 -0
  154. package/dist/src/modules/fox/multi-view/view-model/index.d.ts +1 -0
  155. package/dist/src/modules/fox/multi-view/view-model/index.js +1 -0
  156. package/dist/src/services/NetworkManager/NetworkManager.js +1 -1
  157. package/dist/src/services/NetworkManager/errors.d.ts +3 -1
  158. package/dist/src/services/NetworkManager/errors.js +15 -1
  159. package/dist/src/services/StaticService/StaticService.js +1 -0
  160. package/dist/src/view-models/MaestroEventViewModel.d.ts +2 -0
  161. package/dist/src/view-models/MaestroEventViewModel.js +17 -1
  162. package/package.json +1 -1
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maestro_io/maestro-web-sdk",
3
3
  "private": false,
4
- "version": "5.0.0",
4
+ "version": "5.2.0",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "main": "dist/maestro-web-sdk.umd.js",
@@ -0,0 +1,3 @@
1
+ import { IconProps } from './Icon';
2
+ declare const AddIcon: (props: IconProps) => JSX.Element;
3
+ export default AddIcon;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ const AddIcon = (props) => {
3
+ return (React.createElement("svg", { width: props.width, height: props.height, viewBox: "0 0 21 21", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
+ React.createElement("path", { d: "M10.5 1V20M1 10.5H20", stroke: "#FFFFFF", strokeWidth: "2", strokeLinecap: "round" })));
5
+ };
6
+ export default AddIcon;
@@ -22,6 +22,7 @@ const BuilderIcon = lazy(() => import('./BuilderIcon'));
22
22
  const FoxKeyPlaysIcon = lazy(() => import('./FoxKeyPlaysIcon'));
23
23
  const FoxStatsIcon = lazy(() => import('./FoxStatsIcon'));
24
24
  const FoxMultiViewIcon = lazy(() => import('./FoxMultiViewIcon'));
25
+ const AddIcon = lazy(() => import('./AddIcon'));
25
26
  // Ensures all MaestroPanelType values have icons
26
27
  const panelIcons = {
27
28
  [MaestroPanelType.ESPN_KEY_PLAYS]: KeyPlaysIcon,
@@ -47,6 +48,7 @@ const otherIcons = {
47
48
  mobilePhone: MobilePhoneIcon,
48
49
  chat: ChatIcon,
49
50
  shopifyBlockPanel: ShopifyIcon,
51
+ add: AddIcon,
50
52
  };
51
53
  const iconImports = {
52
54
  ...panelIcons,
@@ -2,6 +2,7 @@ import React, { Suspense, lazy } from 'react';
2
2
  import './PanelManager.styles.css';
3
3
  import PanelNavigation from '@/components/organisms/PanelNavigation';
4
4
  import SDK from '@/index';
5
+ import { isFoxSiteID } from '@/helpers/site';
5
6
  // Lazy load panel components
6
7
  const KeyPlaysView = lazy(() => import('@/modules/espn/key-plays/view/KeyPlaysView'));
7
8
  const BetsView = lazy(() => import('@/modules/espn/bets/view/BetsView'));
@@ -23,7 +24,7 @@ const PANELS_MAP = {
23
24
  espnShop: ShopView,
24
25
  helloWorld: HelloWorldView,
25
26
  foxKeyPlays: FoxKeyPlays,
26
- foxMultiview: FoxMultiView,
27
+ foxMultiView: FoxMultiView,
27
28
  foxStats: FoxStatsView,
28
29
  builderBlockPanel: BuilderView,
29
30
  };
@@ -84,6 +85,7 @@ class PanelManager extends React.Component {
84
85
  }
85
86
  render() {
86
87
  const { activePanel, visiblePanels } = this.state;
88
+ const isFoxSite = isFoxSiteID(SDK.getSiteID());
87
89
  // Create panel items only for visible panels
88
90
  const PANEL_ITEMS = visiblePanels.map((panel) => ({
89
91
  iconName: panel.type,
@@ -92,8 +94,8 @@ class PanelManager extends React.Component {
92
94
  active: activePanel === panel.type,
93
95
  }));
94
96
  const ActivePanelComponent = activePanel ? PANELS_MAP[activePanel] : null;
95
- return (React.createElement("div", { className: "sdk--panel-manager" },
96
- React.createElement(PanelNavigation, { items: PANEL_ITEMS }),
97
+ return (React.createElement("div", { className: 'sdk--panel-manager' + (isFoxSite ? ' sdk--panel-manager-fox' : '') },
98
+ React.createElement(PanelNavigation, { items: PANEL_ITEMS, isFoxSite: isFoxSite }),
97
99
  ActivePanelComponent && (React.createElement("div", { className: "sdk--panel-wrapper" },
98
100
  React.createElement(Suspense, { fallback: React.createElement(PanelLoading, null) },
99
101
  React.createElement(ActivePanelComponent, null))))));
@@ -0,0 +1,11 @@
1
+ import './NetworkDialog.styles.css';
2
+ type NetworkDialogViewDetails = {
3
+ description?: string;
4
+ icon?: 'warning' | 'info' | 'loading';
5
+ };
6
+ interface NetworkDialogViewProps {
7
+ details?: NetworkDialogViewDetails;
8
+ isVisible?: boolean;
9
+ }
10
+ declare const NetworkDialogView: (props: NetworkDialogViewProps) => JSX.Element | null;
11
+ export default NetworkDialogView;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import './NetworkDialog.styles.css';
3
+ const WarningIcon = () => (React.createElement("svg", { className: "network-dialog-icon", width: "21", height: "19", viewBox: "0 0 21 19", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M10.333 0C9.16683 0 8.31608 0.70209 7.58823 1.61668C6.87631 2.51125 6.1187 3.81989 5.18179 5.43827L2.52557 10.0263C1.58508 11.6507 0.824792 12.9639 0.402195 14.0299C-0.029695 15.1194 -0.215504 16.2097 0.368381 17.2224C0.952267 18.2351 1.98898 18.6206 3.14823 18.7927C4.28254 18.9611 5.79993 18.9611 7.67693 18.9611H12.9891C14.8661 18.9611 16.3835 18.9611 17.5178 18.7927C18.6771 18.6206 19.7138 18.2351 20.2977 17.2224C20.8815 16.2097 20.6957 15.1194 20.2638 14.0299C19.8413 12.9639 19.081 11.6507 18.1405 10.0263L15.4843 5.43827C14.5473 3.81989 13.7897 2.51125 13.0778 1.61668C12.35 0.70209 11.4992 0 10.333 0ZM11.2809 6.67659C11.2809 6.15337 10.8567 5.72922 10.3335 5.72922C9.81027 5.72922 9.38612 6.15337 9.38612 6.67659V10.7992C9.38612 11.3224 9.81027 11.7465 10.3335 11.7465C10.8567 11.7465 11.2809 11.3224 11.2809 10.7992V6.67659ZM11.3641 13.8909C11.3641 14.4601 10.9027 14.9215 10.3334 14.9215C9.76423 14.9215 9.3028 14.4601 9.3028 13.8909C9.3028 13.3216 9.76423 12.8602 10.3334 12.8602C10.9027 12.8602 11.3641 13.3216 11.3641 13.8909Z", fill: "white" })));
5
+ const InfoIcon = () => (React.createElement("svg", { className: "network-dialog-icon", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
6
+ React.createElement("circle", { cx: "12", cy: "12", r: "11", stroke: "currentColor", strokeWidth: "2" }),
7
+ React.createElement("path", { d: "M12 8V16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
8
+ React.createElement("circle", { cx: "12", cy: "6", r: "1", fill: "currentColor" })));
9
+ const LoadingIcon = () => (React.createElement("svg", { className: "network-dialog-icon network-dialog-icon--loading", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
10
+ React.createElement("circle", { cx: "12", cy: "12", r: "11", stroke: "currentColor", strokeWidth: "2", opacity: "0.3" }),
11
+ React.createElement("path", { d: "M23 12C23 18.0751 18.0751 23 12 23", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })));
12
+ const getIcon = (iconType) => {
13
+ switch (iconType) {
14
+ case 'warning':
15
+ return React.createElement(WarningIcon, null);
16
+ case 'info':
17
+ return React.createElement(InfoIcon, null);
18
+ case 'loading':
19
+ return React.createElement(LoadingIcon, null);
20
+ default:
21
+ return React.createElement(InfoIcon, null);
22
+ }
23
+ };
24
+ const NetworkDialogView = (props) => {
25
+ const { details = {}, isVisible = false } = props;
26
+ const { description, icon = 'info' } = details;
27
+ if (!description || !isVisible)
28
+ return null;
29
+ return (React.createElement("div", { className: "network-dialog-container" },
30
+ React.createElement("div", { className: "network-dialog-notification" },
31
+ getIcon(icon),
32
+ React.createElement("p", { className: "T10 FONT_BOLD" }, description))));
33
+ };
34
+ export default NetworkDialogView;
@@ -0,0 +1,2 @@
1
+ import NetworkDialog from './NetworkDialog';
2
+ export default NetworkDialog;
@@ -0,0 +1,2 @@
1
+ import NetworkDialog from './NetworkDialog';
2
+ export default NetworkDialog;
@@ -0,0 +1,104 @@
1
+ /// <reference types="prop-types" />
2
+ import { WithFocusableProps } from '@/external/spatial-navigation';
3
+ import React from 'react';
4
+ import './NetworkError.styles.css';
5
+ type NetworkErrorViewDetails = {
6
+ description?: string;
7
+ actionButtonText?: string;
8
+ };
9
+ interface NetworkErrorViewState {
10
+ details?: NetworkErrorViewDetails;
11
+ isVisible?: boolean;
12
+ }
13
+ declare const _default: {
14
+ new (props: (NetworkErrorViewState & WithFocusableProps) | Readonly<NetworkErrorViewState & WithFocusableProps>): {
15
+ state: import("../../../external/spatial-navigation/withFocusable").WithFocusableState;
16
+ navigation: import("../../../external/spatial-navigation/spatialNavigation").default;
17
+ getChildContext(): {
18
+ parentFocusKey: string;
19
+ };
20
+ setFocus: (focusKey: string) => void;
21
+ navigateByDirection: (direction: import("../../../external/spatial-navigation/utils").Direction, details?: import("../../../external/spatial-navigation/utils").Details) => void;
22
+ stealFocus: () => void;
23
+ onUpdateFocus: (focused: boolean) => void;
24
+ onUpdateHasFocusedChild: (hasFocusedChild: boolean) => void;
25
+ onEnterPressHandler: (details: import("../../../external/spatial-navigation/utils").Details) => void;
26
+ onClickPressHandler: (details: import("../../../external/spatial-navigation/utils").Details) => void;
27
+ onEnterReleaseHandler: () => void;
28
+ onBackPressHandler: (details: import("../../../external/spatial-navigation/utils").Details) => void;
29
+ onArrowPressHandler: (direction: import("../../../external/spatial-navigation/utils").Direction, details: import("../../../external/spatial-navigation/utils").Details) => boolean | void;
30
+ onBecameFocusedHandler: (layout: import("../../../external/spatial-navigation/utils").Layout, details: import("../../../external/spatial-navigation/utils").Details) => void;
31
+ onBecameBlurredHandler: (layout: import("../../../external/spatial-navigation/utils").Layout, details: import("../../../external/spatial-navigation/utils").Details) => void;
32
+ componentDidMount(): void;
33
+ componentDidUpdate(): void;
34
+ componentWillUnmount(): void;
35
+ render(): React.ReactElement<NetworkErrorViewState & WithFocusableProps, string | React.JSXElementConstructor<any>>;
36
+ context: any;
37
+ setState<K extends keyof import("../../../external/spatial-navigation/withFocusable").WithFocusableState>(state: import("../../../external/spatial-navigation/withFocusable").WithFocusableState | ((prevState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, props: Readonly<NetworkErrorViewState & WithFocusableProps>) => import("../../../external/spatial-navigation/withFocusable").WithFocusableState | Pick<import("../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null) | Pick<import("../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null, callback?: (() => void) | undefined): void;
38
+ forceUpdate(callback?: (() => void) | undefined): void;
39
+ readonly props: Readonly<NetworkErrorViewState & WithFocusableProps> & Readonly<{
40
+ children?: React.ReactNode;
41
+ }>;
42
+ refs: {
43
+ [key: string]: React.ReactInstance;
44
+ };
45
+ shouldComponentUpdate?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): boolean;
46
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
47
+ getSnapshotBeforeUpdate?(prevProps: Readonly<NetworkErrorViewState & WithFocusableProps>, prevState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>): any;
48
+ componentWillMount?(): void;
49
+ UNSAFE_componentWillMount?(): void;
50
+ componentWillReceiveProps?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextContext: any): void;
51
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextContext: any): void;
52
+ componentWillUpdate?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
53
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
54
+ };
55
+ new (props: NetworkErrorViewState & WithFocusableProps, context: any): {
56
+ state: import("../../../external/spatial-navigation/withFocusable").WithFocusableState;
57
+ navigation: import("../../../external/spatial-navigation/spatialNavigation").default;
58
+ getChildContext(): {
59
+ parentFocusKey: string;
60
+ };
61
+ setFocus: (focusKey: string) => void;
62
+ navigateByDirection: (direction: import("../../../external/spatial-navigation/utils").Direction, details?: import("../../../external/spatial-navigation/utils").Details) => void;
63
+ stealFocus: () => void;
64
+ onUpdateFocus: (focused: boolean) => void;
65
+ onUpdateHasFocusedChild: (hasFocusedChild: boolean) => void;
66
+ onEnterPressHandler: (details: import("../../../external/spatial-navigation/utils").Details) => void;
67
+ onClickPressHandler: (details: import("../../../external/spatial-navigation/utils").Details) => void;
68
+ onEnterReleaseHandler: () => void;
69
+ onBackPressHandler: (details: import("../../../external/spatial-navigation/utils").Details) => void;
70
+ onArrowPressHandler: (direction: import("../../../external/spatial-navigation/utils").Direction, details: import("../../../external/spatial-navigation/utils").Details) => boolean | void;
71
+ onBecameFocusedHandler: (layout: import("../../../external/spatial-navigation/utils").Layout, details: import("../../../external/spatial-navigation/utils").Details) => void;
72
+ onBecameBlurredHandler: (layout: import("../../../external/spatial-navigation/utils").Layout, details: import("../../../external/spatial-navigation/utils").Details) => void;
73
+ componentDidMount(): void;
74
+ componentDidUpdate(): void;
75
+ componentWillUnmount(): void;
76
+ render(): React.ReactElement<NetworkErrorViewState & WithFocusableProps, string | React.JSXElementConstructor<any>>;
77
+ context: any;
78
+ setState<K extends keyof import("../../../external/spatial-navigation/withFocusable").WithFocusableState>(state: import("../../../external/spatial-navigation/withFocusable").WithFocusableState | ((prevState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, props: Readonly<NetworkErrorViewState & WithFocusableProps>) => import("../../../external/spatial-navigation/withFocusable").WithFocusableState | Pick<import("../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null) | Pick<import("../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null, callback?: (() => void) | undefined): void;
79
+ forceUpdate(callback?: (() => void) | undefined): void;
80
+ readonly props: Readonly<NetworkErrorViewState & WithFocusableProps> & Readonly<{
81
+ children?: React.ReactNode;
82
+ }>;
83
+ refs: {
84
+ [key: string]: React.ReactInstance;
85
+ };
86
+ shouldComponentUpdate?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): boolean;
87
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
88
+ getSnapshotBeforeUpdate?(prevProps: Readonly<NetworkErrorViewState & WithFocusableProps>, prevState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>): any;
89
+ componentWillMount?(): void;
90
+ UNSAFE_componentWillMount?(): void;
91
+ componentWillReceiveProps?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextContext: any): void;
92
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextContext: any): void;
93
+ componentWillUpdate?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
94
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<NetworkErrorViewState & WithFocusableProps>, nextState: Readonly<import("../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
95
+ };
96
+ contextTypes: {
97
+ parentFocusKey: import("prop-types").Requireable<string>;
98
+ };
99
+ childContextTypes: {
100
+ parentFocusKey: import("prop-types").Requireable<string>;
101
+ };
102
+ contextType?: React.Context<any> | undefined;
103
+ };
104
+ export default _default;
@@ -0,0 +1,26 @@
1
+ import { withFocusable, } from '@/external/spatial-navigation';
2
+ import React from 'react';
3
+ import ActionButton from '../ActionButton';
4
+ import './NetworkError.styles.css';
5
+ const DefaultDetails = {
6
+ description: '',
7
+ actionButtonText: '',
8
+ };
9
+ const NetworkErrorView = (props) => {
10
+ const { focused, onEnterPress, details = DefaultDetails, isVisible = false, focusKey = 'network-error', } = props;
11
+ const { description, actionButtonText } = details;
12
+ if ((!description && !actionButtonText) || !isVisible)
13
+ return null;
14
+ return (React.createElement(React.Fragment, null,
15
+ React.createElement("div", { "data-focused": focused, className: "network-error-container" },
16
+ React.createElement("div", { className: "network-error-content" },
17
+ description && React.createElement("p", { className: "T10 FONT_BOLD" }, description),
18
+ actionButtonText && (React.createElement("div", { className: "fox" },
19
+ React.createElement(ActionButton, { focusKey: `${focusKey}-action-button`, "data-focused": focused, onEnterPress: onEnterPress }, actionButtonText))))),
20
+ React.createElement("div", { className: "network-error-background" })));
21
+ };
22
+ export default withFocusable({
23
+ trackChildren: true,
24
+ autoRestoreFocus: true,
25
+ blockNavigationOut: true,
26
+ })(NetworkErrorView);
@@ -0,0 +1,2 @@
1
+ import NetworkError from './NetworkError';
2
+ export default NetworkError;
@@ -0,0 +1,2 @@
1
+ import NetworkError from './NetworkError';
2
+ export default NetworkError;
@@ -6,6 +6,7 @@ type PanelNavButtonProps = {
6
6
  iconName: IconsName;
7
7
  index: number;
8
8
  active: boolean;
9
+ isFoxSite: boolean;
9
10
  children?: React.ReactNode;
10
11
  focused?: boolean;
11
12
  focusKey: string;
@@ -4,18 +4,27 @@ import './PanelNavButton.styles.css';
4
4
  import React from 'react';
5
5
  import { withFocusable } from '@/external/spatial-navigation';
6
6
  class PanelNavButton extends React.Component {
7
+ getContainerClassName() {
8
+ const { active, isFoxSite } = this.props;
9
+ if (isFoxSite && active) {
10
+ return 'panel-nav-button-container panel-nav-button-container-fox T02 panel-nav-button-active';
11
+ }
12
+ if (isFoxSite) {
13
+ return 'panel-nav-button-container panel-nav-button-container-fox T02';
14
+ }
15
+ if (active) {
16
+ return 'panel-nav-button-container T02 panel-nav-button-active';
17
+ }
18
+ return 'panel-nav-button-container T02';
19
+ }
7
20
  render() {
8
- const { iconName, active, children, focused, width } = this.props;
9
- return (React.createElement("div", { className: [
10
- 'panel-nav-button-container',
11
- 'T02',
12
- active ? 'panel-nav-button-active' : '',
13
- ].join(' '), "data-focused": focused, style: {
21
+ const { iconName, isFoxSite, children, focused, width } = this.props;
22
+ return (React.createElement("div", { className: this.getContainerClassName(), "data-focused": focused, style: {
14
23
  width,
15
24
  } },
16
25
  React.createElement(BaseButton, null,
17
26
  React.createElement(Icon, { iconName: iconName, height: 36, width: 36 })),
18
- React.createElement("div", { className: "panel-nav-label FONT_BOLD" }, children)));
27
+ !isFoxSite && (React.createElement("div", { className: "panel-nav-label FONT_BOLD" }, children))));
19
28
  }
20
29
  }
21
30
  Object.defineProperty(PanelNavButton, "displayName", {
@@ -8,6 +8,7 @@ interface PanelNavigationProps {
8
8
  iconName: IconsName;
9
9
  active: boolean;
10
10
  }[];
11
+ isFoxSite: boolean;
11
12
  }
12
13
  declare class PanelNavigation extends React.Component<PanelNavigationProps> {
13
14
  handleBecameFocused: (index: number) => () => void;
@@ -2,8 +2,9 @@ import PanelNavButton from '@/components/molecules/PanelNavButton';
2
2
  import './PanelNavigation.styles.css';
3
3
  import React from 'react';
4
4
  import SDK from '@/index';
5
- import { withFocusable, } from '@/external/spatial-navigation';
6
- const BUTTON_MARGIN = 12;
5
+ import { withFocusable } from '@/external/spatial-navigation';
6
+ const ESPN_BUTTON_MARGIN = 12;
7
+ const FOX_BUTTON_MARGIN = 8;
7
8
  class PanelNavigationButton extends React.Component {
8
9
  constructor() {
9
10
  super(...arguments);
@@ -23,8 +24,8 @@ class PanelNavigationButton extends React.Component {
23
24
  });
24
25
  }
25
26
  render() {
26
- const { item, index, width } = this.props;
27
- return (React.createElement(PanelNavButton, { iconName: item.iconName, key: item.title, index: index, onBecameFocused: this.props.onBecameFocused(index), active: item.active, focusKey: `PANEL_NAV_BUTTON_${index}`, onArrowPress: this.handleArrowPress, parentFocusKey: "PANEL_NAVIGATION", width: width }, item.title));
27
+ const { item, index, isFoxSite, width } = this.props;
28
+ return (React.createElement(PanelNavButton, { iconName: item.iconName, key: item.title, index: index, isFoxSite: isFoxSite, onBecameFocused: this.props.onBecameFocused(index), active: item.active, focusKey: `PANEL_NAV_BUTTON_${index}`, onArrowPress: this.handleArrowPress, parentFocusKey: "PANEL_NAVIGATION", width: width }, item.title));
28
29
  }
29
30
  }
30
31
  class PanelNavigation extends React.Component {
@@ -43,17 +44,20 @@ class PanelNavigation extends React.Component {
43
44
  }
44
45
  render() {
45
46
  const itemsCount = this.props.items.length;
47
+ const { isFoxSite } = this.props;
48
+ const buttonMargin = isFoxSite ? FOX_BUTTON_MARGIN : ESPN_BUTTON_MARGIN;
46
49
  if (itemsCount === 0) {
47
50
  return null;
48
51
  }
49
- const marginTotal = (itemsCount - 1) * BUTTON_MARGIN;
52
+ const marginTotal = (itemsCount - 1) * buttonMargin;
50
53
  const buttonWidth = `calc((100% - ${marginTotal}px) / ${itemsCount})`;
51
- return (React.createElement(FocusableWrapper, { focusKey: "PANEL_NAVIGATION" }, this.props.items.map((item, index) => (React.createElement(PanelNavigationButton, { onBecameFocused: this.handleBecameFocused, key: item.title, item: item, index: index, width: buttonWidth })))));
54
+ return (React.createElement(FocusableWrapper, { focusKey: "PANEL_NAVIGATION", isFoxSite: isFoxSite }, this.props.items.map((item, index) => (React.createElement(PanelNavigationButton, { onBecameFocused: this.handleBecameFocused, key: item.title, item: item, index: index, isFoxSite: isFoxSite, width: buttonWidth })))));
52
55
  }
53
56
  }
54
57
  class Wrapper extends React.Component {
55
58
  render() {
56
- return React.createElement("div", { className: "panel-navigation" }, this.props.children);
59
+ const { isFoxSite } = this.props;
60
+ return (React.createElement("div", { className: 'panel-navigation' + (isFoxSite ? ' panel-navigation-fox' : '') }, this.props.children));
57
61
  }
58
62
  }
59
63
  const FocusableWrapper = withFocusable({ trackChildren: true })(Wrapper);
@@ -61,6 +61,7 @@ export default class MaestroEventDelegate {
61
61
  throw new Error('Method not implemented.');
62
62
  }
63
63
  startFocusManagement() {
64
+ alert('Focus going to client. Passing back to SDK');
64
65
  return Promise.resolve(SDK.getMaestroEventViewModel().startFocusManagement());
65
66
  }
66
67
  userIsAuthenticated() {
@@ -0,0 +1 @@
1
+ export declare const isFoxSiteID: (siteID: string) => boolean;
@@ -0,0 +1,6 @@
1
+ import { SITE_BRAND_BY_SITE_ID } from './siteConfig';
2
+ export const isFoxSiteID = (siteID) => {
3
+ const normalizedSiteID = siteID.trim().toLowerCase();
4
+ const siteBrand = SITE_BRAND_BY_SITE_ID[normalizedSiteID];
5
+ return siteBrand === 'fox';
6
+ };
@@ -0,0 +1 @@
1
+ export declare const SITE_BRAND_BY_SITE_ID: Record<string, 'espn' | 'fox' | 'maestro'>;
@@ -0,0 +1,5 @@
1
+ export const SITE_BRAND_BY_SITE_ID = {
2
+ '664b9c57d59a7a431542d814': 'espn',
3
+ '69388ee52b46b639897261f1': 'maestro',
4
+ '695c05610f99e7584a1b7407': 'fox',
5
+ };
@@ -8,7 +8,14 @@ export type RequestLoginPanelEvent = {
8
8
  onLoginSuccess: () => void;
9
9
  };
10
10
  };
11
- export type PanelEvent = RequestLoginPanelEvent;
11
+ /**
12
+ * Generic panel event type that supports client-specific events
13
+ * without exposing specific event structures in the SDK interface
14
+ */
15
+ export type PanelEvent = {
16
+ type: string;
17
+ payload: unknown;
18
+ };
12
19
  /**
13
20
  * @description Interface for the client app to implement in order to handle Maestro TV SDK events.
14
21
  */
@@ -6,7 +6,7 @@ export declare const MaestroPanelType: {
6
6
  readonly ESPN_SHOP: "espnShop";
7
7
  readonly HELLO_WORLD: "helloWorld";
8
8
  readonly FOX_KEY_PLAYS: "foxKeyPlays";
9
- readonly FOX_MULTI_VIEW: "foxMultiview";
9
+ readonly FOX_MULTI_VIEW: "foxMultiView";
10
10
  readonly FOX_STATS: "foxStats";
11
11
  readonly BUILDER_BLOCK_PANEL: "builderBlockPanel";
12
12
  };
@@ -6,7 +6,7 @@ export const MaestroPanelType = {
6
6
  ESPN_SHOP: 'espnShop',
7
7
  HELLO_WORLD: 'helloWorld',
8
8
  FOX_KEY_PLAYS: 'foxKeyPlays',
9
- FOX_MULTI_VIEW: 'foxMultiview',
9
+ FOX_MULTI_VIEW: 'foxMultiView',
10
10
  FOX_STATS: 'foxStats',
11
11
  BUILDER_BLOCK_PANEL: 'builderBlockPanel',
12
12
  };
@@ -8,8 +8,8 @@ import HotPropsView from './HotProps/HotPropsView';
8
8
  import GamblingDisclaimer from './components/GamblingDisclaimer/GamblingDisclaimer';
9
9
  import LocationWarning from './components/LocationWarning/LocationWarning';
10
10
  import { BetItemPromoCode } from './components/PromoCodeBanner';
11
- import TabLoadErrorView from '@/components/molecules/TabLoadError';
12
11
  import { setupMaxHeightToBottom } from '@/hooks/useMaxHeightToBottom';
12
+ import TabLoadErrorView from '../../components/TabLoadError';
13
13
  class BetsView extends Component {
14
14
  constructor(props) {
15
15
  super(props);
@@ -0,0 +1,96 @@
1
+ /// <reference types="prop-types" />
2
+ import { WithFocusableProps } from '@/external/spatial-navigation';
3
+ import React from 'react';
4
+ import './TabLoadError.styles.css';
5
+ declare const _default: {
6
+ new (props: (object & WithFocusableProps) | Readonly<object & WithFocusableProps>): {
7
+ state: import("../../../../external/spatial-navigation/withFocusable").WithFocusableState;
8
+ navigation: import("../../../../external/spatial-navigation/spatialNavigation").default;
9
+ getChildContext(): {
10
+ parentFocusKey: string;
11
+ };
12
+ setFocus: (focusKey: string) => void;
13
+ navigateByDirection: (direction: import("../../../../external/spatial-navigation/utils").Direction, details?: import("../../../../external/spatial-navigation/utils").Details) => void;
14
+ stealFocus: () => void;
15
+ onUpdateFocus: (focused: boolean) => void;
16
+ onUpdateHasFocusedChild: (hasFocusedChild: boolean) => void;
17
+ onEnterPressHandler: (details: import("../../../../external/spatial-navigation/utils").Details) => void;
18
+ onClickPressHandler: (details: import("../../../../external/spatial-navigation/utils").Details) => void;
19
+ onEnterReleaseHandler: () => void;
20
+ onBackPressHandler: (details: import("../../../../external/spatial-navigation/utils").Details) => void;
21
+ onArrowPressHandler: (direction: import("../../../../external/spatial-navigation/utils").Direction, details: import("../../../../external/spatial-navigation/utils").Details) => boolean | void;
22
+ onBecameFocusedHandler: (layout: import("../../../../external/spatial-navigation/utils").Layout, details: import("../../../../external/spatial-navigation/utils").Details) => void;
23
+ onBecameBlurredHandler: (layout: import("../../../../external/spatial-navigation/utils").Layout, details: import("../../../../external/spatial-navigation/utils").Details) => void;
24
+ componentDidMount(): void;
25
+ componentDidUpdate(): void;
26
+ componentWillUnmount(): void;
27
+ render(): React.ReactElement<object & WithFocusableProps, string | React.JSXElementConstructor<any>>;
28
+ context: any;
29
+ setState<K extends keyof import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>(state: import("../../../../external/spatial-navigation/withFocusable").WithFocusableState | ((prevState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, props: Readonly<object & WithFocusableProps>) => import("../../../../external/spatial-navigation/withFocusable").WithFocusableState | Pick<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null) | Pick<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null, callback?: (() => void) | undefined): void;
30
+ forceUpdate(callback?: (() => void) | undefined): void;
31
+ readonly props: Readonly<object & WithFocusableProps> & Readonly<{
32
+ children?: React.ReactNode;
33
+ }>;
34
+ refs: {
35
+ [key: string]: React.ReactInstance;
36
+ };
37
+ shouldComponentUpdate?(nextProps: Readonly<object & WithFocusableProps>, nextState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): boolean;
38
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
39
+ getSnapshotBeforeUpdate?(prevProps: Readonly<object & WithFocusableProps>, prevState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>): any;
40
+ componentWillMount?(): void;
41
+ UNSAFE_componentWillMount?(): void;
42
+ componentWillReceiveProps?(nextProps: Readonly<object & WithFocusableProps>, nextContext: any): void;
43
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<object & WithFocusableProps>, nextContext: any): void;
44
+ componentWillUpdate?(nextProps: Readonly<object & WithFocusableProps>, nextState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
45
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<object & WithFocusableProps>, nextState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
46
+ };
47
+ new (props: object & WithFocusableProps, context: any): {
48
+ state: import("../../../../external/spatial-navigation/withFocusable").WithFocusableState;
49
+ navigation: import("../../../../external/spatial-navigation/spatialNavigation").default;
50
+ getChildContext(): {
51
+ parentFocusKey: string;
52
+ };
53
+ setFocus: (focusKey: string) => void;
54
+ navigateByDirection: (direction: import("../../../../external/spatial-navigation/utils").Direction, details?: import("../../../../external/spatial-navigation/utils").Details) => void;
55
+ stealFocus: () => void;
56
+ onUpdateFocus: (focused: boolean) => void;
57
+ onUpdateHasFocusedChild: (hasFocusedChild: boolean) => void;
58
+ onEnterPressHandler: (details: import("../../../../external/spatial-navigation/utils").Details) => void;
59
+ onClickPressHandler: (details: import("../../../../external/spatial-navigation/utils").Details) => void;
60
+ onEnterReleaseHandler: () => void;
61
+ onBackPressHandler: (details: import("../../../../external/spatial-navigation/utils").Details) => void;
62
+ onArrowPressHandler: (direction: import("../../../../external/spatial-navigation/utils").Direction, details: import("../../../../external/spatial-navigation/utils").Details) => boolean | void;
63
+ onBecameFocusedHandler: (layout: import("../../../../external/spatial-navigation/utils").Layout, details: import("../../../../external/spatial-navigation/utils").Details) => void;
64
+ onBecameBlurredHandler: (layout: import("../../../../external/spatial-navigation/utils").Layout, details: import("../../../../external/spatial-navigation/utils").Details) => void;
65
+ componentDidMount(): void;
66
+ componentDidUpdate(): void;
67
+ componentWillUnmount(): void;
68
+ render(): React.ReactElement<object & WithFocusableProps, string | React.JSXElementConstructor<any>>;
69
+ context: any;
70
+ setState<K extends keyof import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>(state: import("../../../../external/spatial-navigation/withFocusable").WithFocusableState | ((prevState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, props: Readonly<object & WithFocusableProps>) => import("../../../../external/spatial-navigation/withFocusable").WithFocusableState | Pick<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null) | Pick<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState, K> | null, callback?: (() => void) | undefined): void;
71
+ forceUpdate(callback?: (() => void) | undefined): void;
72
+ readonly props: Readonly<object & WithFocusableProps> & Readonly<{
73
+ children?: React.ReactNode;
74
+ }>;
75
+ refs: {
76
+ [key: string]: React.ReactInstance;
77
+ };
78
+ shouldComponentUpdate?(nextProps: Readonly<object & WithFocusableProps>, nextState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): boolean;
79
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
80
+ getSnapshotBeforeUpdate?(prevProps: Readonly<object & WithFocusableProps>, prevState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>): any;
81
+ componentWillMount?(): void;
82
+ UNSAFE_componentWillMount?(): void;
83
+ componentWillReceiveProps?(nextProps: Readonly<object & WithFocusableProps>, nextContext: any): void;
84
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<object & WithFocusableProps>, nextContext: any): void;
85
+ componentWillUpdate?(nextProps: Readonly<object & WithFocusableProps>, nextState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
86
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<object & WithFocusableProps>, nextState: Readonly<import("../../../../external/spatial-navigation/withFocusable").WithFocusableState>, nextContext: any): void;
87
+ };
88
+ contextTypes: {
89
+ parentFocusKey: import("prop-types").Requireable<string>;
90
+ };
91
+ childContextTypes: {
92
+ parentFocusKey: import("prop-types").Requireable<string>;
93
+ };
94
+ contextType?: React.Context<any> | undefined;
95
+ };
96
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import { withFocusable, } from '@/external/spatial-navigation';
2
+ import React from 'react';
3
+ import './TabLoadError.styles.css';
4
+ import ActionButton from '@/components/molecules/ActionButton';
5
+ class TabLoadErrorView extends React.Component {
6
+ render() {
7
+ const { focused, onEnterPress } = this.props;
8
+ return (React.createElement("div", { "data-focused": focused, className: "tab-load-error focus-ring" },
9
+ React.createElement("h3", { className: "T70" }, "We dropped the ball."),
10
+ React.createElement("p", { className: "T20" }, "We're having trouble loading that for you. Please try again."),
11
+ React.createElement(ActionButton, { "data-focused": focused, onEnterPress: onEnterPress }, "Try Again")));
12
+ }
13
+ }
14
+ export default withFocusable()(TabLoadErrorView);
@@ -0,0 +1,2 @@
1
+ import TabLoadErrorView from './TabLoadError';
2
+ export default TabLoadErrorView;
@@ -0,0 +1,2 @@
1
+ import TabLoadErrorView from './TabLoadError';
2
+ export default TabLoadErrorView;