@times-components/ts-components 1.144.1-d88954832f63cdbc40779d5cd4f06c4568affa14.22 → 1.145.1-ffc8fe2350c1f6194dbd798c9b12b0d865cd13fb.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 (60) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/components/opta/football/opta-match-stats/commentary/__tests__/OptaMatchStatsCommentary.test.js +36 -9
  3. package/dist/components/opta/football/opta-match-stats/shared/styles.js +33 -26
  4. package/dist/components/opta/football/opta-match-stats/stats-graphs/WidgetContainer.js +14 -1
  5. package/dist/components/opta/football/opta-match-stats/{matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.d.ts → stats-graphs/__tests__/WidgetContainer.test.d.ts} +0 -1
  6. package/dist/components/opta/football/opta-match-stats/stats-graphs/__tests__/WidgetContainer.test.js +57 -0
  7. package/dist/components/opta/football/opta-match-stats/summary/WidgetContainer.js +12 -4
  8. package/dist/components/opta/football/opta-match-stats/summary/__tests__/WidgetContainer.test.d.ts +1 -0
  9. package/dist/components/opta/football/opta-match-stats/summary/__tests__/WidgetContainer.test.js +70 -0
  10. package/dist/components/opta/shared/fixtures-ticker/OptaFixturesTicker.d.ts +1 -0
  11. package/dist/components/opta/shared/fixtures-ticker/OptaFixturesTicker.js +12 -3
  12. package/dist/components/opta/shared/fixtures-ticker/styles.d.ts +1 -0
  13. package/dist/components/opta/shared/fixtures-ticker/styles.js +8 -1
  14. package/dist/components/opta/utils/__tests__/useAddFixtureNavigation.test.d.ts +1 -0
  15. package/dist/components/opta/utils/__tests__/useAddFixtureNavigation.test.js +200 -0
  16. package/dist/components/opta/utils/useAddFixtureNavigation.d.ts +7 -0
  17. package/dist/components/opta/utils/useAddFixtureNavigation.js +77 -0
  18. package/dist/index.d.ts +0 -1
  19. package/dist/index.js +1 -2
  20. package/package.json +13 -12
  21. package/rnw.js +1 -1
  22. package/src/components/opta/football/opta-match-stats/commentary/__tests__/OptaMatchStatsCommentary.test.tsx +45 -10
  23. package/src/components/opta/football/opta-match-stats/commentary/__tests__/__snapshots__/OptaMatchStatsCommentary.test.tsx.snap +25 -10
  24. package/src/components/opta/football/opta-match-stats/shared/styles.ts +36 -28
  25. package/src/components/opta/football/opta-match-stats/stats-graphs/WidgetContainer.tsx +15 -0
  26. package/src/components/opta/football/opta-match-stats/stats-graphs/__tests__/WidgetContainer.test.tsx +117 -0
  27. package/src/components/opta/football/opta-match-stats/stats-graphs/__tests__/__snapshots__/OptaMatchStatsGraphs.test.tsx.snap +2 -2
  28. package/src/components/opta/football/opta-match-stats/summary/WidgetContainer.tsx +13 -3
  29. package/src/components/opta/football/opta-match-stats/summary/__tests__/WidgetContainer.test.tsx +125 -0
  30. package/src/components/opta/football/opta-match-stats/summary/__tests__/__snapshots__/OptaMatchStatsSummary.test.tsx.snap +1 -1
  31. package/src/components/opta/shared/fixtures-ticker/OptaFixturesTicker.tsx +19 -2
  32. package/src/components/opta/shared/fixtures-ticker/__tests__/__snapshots__/OptaFixturesTicker.test.tsx.snap +5 -5
  33. package/src/components/opta/shared/fixtures-ticker/styles.ts +9 -0
  34. package/src/components/opta/utils/__tests__/useAddFixtureNavigation.test.tsx +235 -0
  35. package/src/components/opta/utils/useAddFixtureNavigation.ts +101 -0
  36. package/src/index.ts +0 -3
  37. package/dist/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.d.ts +0 -10
  38. package/dist/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.js +0 -69
  39. package/dist/components/opta/football/opta-match-stats/matchday-live/MobileWidget.d.ts +0 -12
  40. package/dist/components/opta/football/opta-match-stats/matchday-live/MobileWidget.js +0 -90
  41. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.d.ts +0 -12
  42. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.js +0 -10
  43. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.d.ts +0 -1
  44. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.js +0 -24
  45. package/dist/components/opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.js +0 -48
  46. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.d.ts +0 -1
  47. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.js +0 -19
  48. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.d.ts +0 -12
  49. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.js +0 -67
  50. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.d.ts +0 -6
  51. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.js +0 -714
  52. package/src/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.tsx +0 -108
  53. package/src/components/opta/football/opta-match-stats/matchday-live/MobileWidget.tsx +0 -158
  54. package/src/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.tsx +0 -38
  55. package/src/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.tsx +0 -23
  56. package/src/components/opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.tsx +0 -61
  57. package/src/components/opta/football/opta-match-stats/matchday-live/__tests__/__snapshots__/OptaMatchStatsMatchdayLive.test.tsx.snap +0 -22
  58. package/src/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.tsx +0 -19
  59. package/src/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.tsx +0 -81
  60. package/src/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.tsx +0 -745
@@ -0,0 +1,235 @@
1
+ import React, { useRef } from 'react';
2
+ import ReactDOM from 'react-dom';
3
+ import { act } from 'react-dom/test-utils';
4
+ import '@testing-library/jest-dom';
5
+ import { useAddFixtureNavigation } from '../useAddFixtureNavigation';
6
+
7
+ describe('useAddFixtureNavigation', () => {
8
+ const Component: React.FC<{
9
+ sport: string;
10
+ competition: string;
11
+ season: string;
12
+ children?: React.ReactNode;
13
+ }> = ({ sport, competition, season, children }) => {
14
+ const ref = useRef<HTMLDivElement>(null);
15
+ useAddFixtureNavigation({ ref, sport, competition, season });
16
+ return <div ref={ref}>{children}</div>;
17
+ };
18
+
19
+ let container: HTMLDivElement;
20
+ const baseProps = { sport: 'football', competition: '8', season: '2025' };
21
+
22
+ beforeEach(() => {
23
+ jest.useFakeTimers();
24
+ container = document.createElement('div');
25
+ document.body.appendChild(container);
26
+ });
27
+
28
+ afterEach(() => {
29
+ ReactDOM.unmountComponentAtNode(container);
30
+ container.remove();
31
+ jest.useRealTimers();
32
+ delete (window as any).webkit;
33
+ delete (window as any).Android;
34
+ });
35
+
36
+ const renderFixtures = (html: string) => {
37
+ act(() => {
38
+ ReactDOM.render(
39
+ <Component {...baseProps}>
40
+ <div dangerouslySetInnerHTML={{ __html: html }} />
41
+ </Component>,
42
+ container
43
+ );
44
+ });
45
+ };
46
+
47
+ it('does nothing when ref is missing and clears after 26 ticks', () => {
48
+ act(() => {
49
+ ReactDOM.render(<Component {...baseProps} />, container);
50
+ });
51
+ act(() => {
52
+ jest.advanceTimersByTime(25 * 500);
53
+ });
54
+ const clearSpy = jest.spyOn(window, 'clearInterval');
55
+ act(() => {
56
+ jest.advanceTimersByTime(500);
57
+ });
58
+ expect(clearSpy).toHaveBeenCalled();
59
+ clearSpy.mockRestore();
60
+ });
61
+
62
+ it('binds click handler once per fixture and sets _optaClickBound', () => {
63
+ const html = `
64
+ <div class="Opta-fixture" data-match="2561903" data-period="FT">
65
+ <span class="Opta-Team Opta-Home Opta-Team-123"></span>
66
+ <span class="Opta-Team Opta-Away Opta-Team-456"></span>
67
+ </div>
68
+ `;
69
+ renderFixtures(html);
70
+
71
+ act(() => {
72
+ jest.advanceTimersByTime(500);
73
+ });
74
+
75
+ const fixture = container.querySelector('.Opta-fixture') as any;
76
+ expect(fixture).toBeTruthy();
77
+ expect(fixture._optaClickBound).toBe(true);
78
+
79
+ // Re-render same DOM, ensure it does not re-bind
80
+ const addEventListenerSpy = jest.spyOn(fixture, 'addEventListener');
81
+ renderFixtures(html);
82
+ act(() => {
83
+ jest.advanceTimersByTime(500);
84
+ });
85
+ expect(addEventListenerSpy).not.toHaveBeenCalled();
86
+ addEventListenerSpy.mockRestore();
87
+ });
88
+
89
+ it('navigates via iOS webkit message handler when available', () => {
90
+ (window as any).webkit = {
91
+ messageHandlers: {
92
+ interactiveSliceEvent: {
93
+ postMessage: jest.fn()
94
+ }
95
+ }
96
+ };
97
+
98
+ const html = `
99
+ <div class="Opta-fixture" data-match="2561903" data-period="FT">
100
+ <span class="Opta-Team Opta-Home Opta-Team-123"></span>
101
+ <span class="Opta-Team Opta-Away Opta-Team-456"></span>
102
+ </div>
103
+ `;
104
+ renderFixtures(html);
105
+ act(() => {
106
+ jest.advanceTimersByTime(500);
107
+ });
108
+
109
+ const fixture = container.querySelector('.Opta-fixture') as HTMLElement;
110
+ act(() => {
111
+ fixture.click();
112
+ });
113
+ expect(
114
+ (window as any).webkit.messageHandlers.interactiveSliceEvent.postMessage
115
+ ).toHaveBeenCalledTimes(1);
116
+ });
117
+
118
+ it('navigates via Android postMessage when available', () => {
119
+ (window as any).Android = {
120
+ postMessage: jest.fn()
121
+ };
122
+
123
+ const html = `
124
+ <div class="Opta-fixture" data-match="2561903" data-period="FT">
125
+ <span class="Opta-Team Opta-Home Opta-Team-123"></span>
126
+ <span class="Opta-Team Opta-Away Opta-Team-456"></span>
127
+ </div>
128
+ `;
129
+ renderFixtures(html);
130
+ act(() => {
131
+ jest.advanceTimersByTime(500);
132
+ });
133
+
134
+ const fixture = container.querySelector('.Opta-fixture') as HTMLElement;
135
+ act(() => {
136
+ fixture.click();
137
+ });
138
+ expect((window as any).Android.postMessage).toHaveBeenCalledTimes(1);
139
+ });
140
+
141
+ it('falls back to window.location.href navigation in web', () => {
142
+ const html = `
143
+ <div class="Opta-fixture" data-match="2561903" data-period="FT">
144
+ <span class="Opta-Team Opta-Home Opta-Team-123"></span>
145
+ <span class="Opta-Team Opta-Away Opta-Team-456"></span>
146
+ </div>
147
+ `;
148
+ renderFixtures(html);
149
+ act(() => {
150
+ jest.advanceTimersByTime(500);
151
+ });
152
+
153
+ const originalLocation = window.location;
154
+ const originalHref = window.location.href;
155
+ delete (window as any).location;
156
+ (window as any).location = { href: originalHref };
157
+
158
+ const fixture = container.querySelector('.Opta-fixture') as HTMLElement;
159
+ act(() => {
160
+ fixture.click();
161
+ });
162
+
163
+ expect(window.location.href).not.toBe(originalHref);
164
+ expect(window.location.href).toContain('homeTeam=123');
165
+ expect(window.location.href).toContain('awayTeam=456');
166
+
167
+ (window as any).location = originalLocation;
168
+ });
169
+
170
+ it('returns early when required attributes are missing', () => {
171
+ const html = `
172
+ <div class="Opta-fixture">
173
+ <span class="Opta-Team Opta-Home"></span>
174
+ <span class="Opta-Team Opta-Away"></span>
175
+ </div>
176
+ `;
177
+ renderFixtures(html);
178
+ const fixture = container.querySelector('.Opta-fixture') as any;
179
+ const addSpy = jest.spyOn(fixture, 'addEventListener');
180
+ act(() => {
181
+ jest.advanceTimersByTime(500);
182
+ });
183
+ expect(addSpy).not.toHaveBeenCalled();
184
+ addSpy.mockRestore();
185
+ });
186
+
187
+ it('returns early when team ids cannot be extracted (no Opta-Team- classes)', () => {
188
+ const html = `
189
+ <div class="Opta-fixture" data-match="2561903" data-period="FT">
190
+ <span class="Opta-Team Opta-Home"></span>
191
+ <span class="Opta-Team Opta-Away"></span>
192
+ </div>
193
+ `;
194
+ renderFixtures(html);
195
+ const fixture = container.querySelector('.Opta-fixture') as any;
196
+ const addSpy = jest.spyOn(fixture, 'addEventListener');
197
+ act(() => {
198
+ jest.advanceTimersByTime(500);
199
+ });
200
+ expect(addSpy).not.toHaveBeenCalled();
201
+ addSpy.mockRestore();
202
+ });
203
+
204
+ it('returns early when only one team id is present', () => {
205
+ const html = `
206
+ <div class="Opta-fixture" data-match="2561903" data-period="FT">
207
+ <span class="Opta-Team Opta-Home"></span>
208
+ <span class="Opta-Team Opta-Away Opta-Team-456"></span>
209
+ </div>
210
+ `;
211
+ renderFixtures(html);
212
+ const fixture = container.querySelector('.Opta-fixture') as any;
213
+ const addSpy = jest.spyOn(fixture, 'addEventListener');
214
+ act(() => {
215
+ jest.advanceTimersByTime(500);
216
+ });
217
+ expect(addSpy).not.toHaveBeenCalled();
218
+ addSpy.mockRestore();
219
+ });
220
+
221
+ it('extracts team ids from classList using getTeamIdFromClassList', () => {
222
+ const html = `
223
+ <div class="Opta-fixture" data-match="2561903" data-period="FT">
224
+ <span class="Opta-Team Opta-Home Opta-Team-999 Opta-Other"></span>
225
+ <span class="Opta-Team Opta-Away Opta-Team-888 Opta-Other"></span>
226
+ </div>
227
+ `;
228
+ renderFixtures(html);
229
+ act(() => {
230
+ jest.advanceTimersByTime(500);
231
+ });
232
+ const fixture = container.querySelector('.Opta-fixture') as any;
233
+ expect(fixture._optaClickBound).toBe(true);
234
+ });
235
+ });
@@ -0,0 +1,101 @@
1
+ import { RefObject, useEffect } from 'react';
2
+
3
+ export const useAddFixtureNavigation = (args: {
4
+ ref: RefObject<HTMLDivElement>;
5
+ sport: string;
6
+ competition: string;
7
+ season: string;
8
+ }) => {
9
+ const { ref, sport, competition, season } = args;
10
+ useEffect(
11
+ () => {
12
+ updateTimestamps(ref, sport, competition, season);
13
+ },
14
+ [ref]
15
+ );
16
+ };
17
+
18
+ const getTeamIdFromClassList = (classList: DOMTokenList): string | null => {
19
+ let teamId: string | null = null;
20
+ classList.forEach(cls => {
21
+ if (cls.includes('Opta-Team-')) {
22
+ teamId = cls.replace('Opta-Team-', '');
23
+ }
24
+ });
25
+ return teamId;
26
+ };
27
+
28
+ // Moves the venue info from match data to match header
29
+ const updateTimestamps = (
30
+ element: RefObject<HTMLDivElement>,
31
+ sport: string,
32
+ competition: string,
33
+ season: string
34
+ ) => {
35
+ let count = 0;
36
+ const updateTimestampsInterval = setInterval(() => {
37
+ // we're no longer able to use pub/sub method, due to limitations with Opta implementation, so loop with a max count of 25
38
+ if (count >= 25) {
39
+ clearInterval(updateTimestampsInterval);
40
+ }
41
+ count++;
42
+
43
+ if (!element.current) {
44
+ return;
45
+ }
46
+ const fixtureCards = element.current.querySelectorAll('.Opta-fixture');
47
+ fixtureCards.forEach(el => {
48
+ // Prevent multiple bindings
49
+ if ((el as any)._optaClickBound) {
50
+ return;
51
+ }
52
+
53
+ const match = el.getAttribute('data-match');
54
+ const status = el.getAttribute('data-period');
55
+
56
+ let homeTeam: string | null = null;
57
+ let awayTeam: string | null = null;
58
+ const homeTeamClasses = el.querySelector('.Opta-Team.Opta-Home');
59
+ const awayTeamClasses = el.querySelector('.Opta-Team.Opta-Away');
60
+ if (homeTeamClasses && homeTeamClasses.classList) {
61
+ homeTeam = getTeamIdFromClassList(homeTeamClasses.classList);
62
+ }
63
+ if (awayTeamClasses && awayTeamClasses.classList) {
64
+ awayTeam = getTeamIdFromClassList(awayTeamClasses.classList);
65
+ }
66
+
67
+ if (!match || !status || !homeTeam || !awayTeam) {
68
+ return;
69
+ }
70
+
71
+ const safeWindow = window as any;
72
+ const isIOS =
73
+ safeWindow.webkit &&
74
+ safeWindow.webkit.messageHandlers &&
75
+ safeWindow.webkit.messageHandlers.interactiveSliceEvent;
76
+
77
+ const isAndroid = safeWindow.Android && safeWindow.Android.postMessage;
78
+
79
+ const navigationUrl = `/sport/${sport}/match-stats?competition=${competition}&season=${season}&match=${match}&status=${status}&homeTeam=${homeTeam}&awayTeam=${awayTeam}&enableMatchStats=true`;
80
+ const appMessage = {
81
+ type: 'openPage',
82
+ title: 'Football',
83
+ url: `${navigationUrl}&enableEmbeddedMode=true`
84
+ };
85
+
86
+ el.addEventListener('click', () => {
87
+ if (isIOS) {
88
+ safeWindow.webkit.messageHandlers.interactiveSliceEvent.postMessage(
89
+ JSON.stringify(appMessage)
90
+ );
91
+ } else if (isAndroid) {
92
+ safeWindow.Android.postMessage(JSON.stringify(appMessage));
93
+ } else {
94
+ window.location.href = navigationUrl;
95
+ }
96
+ });
97
+ (el as any)._optaClickBound = true;
98
+ clearInterval(updateTimestampsInterval);
99
+ });
100
+ }, 500);
101
+ };
package/src/index.ts CHANGED
@@ -152,6 +152,3 @@ export {
152
152
  export {
153
153
  OptaMatchStatsCommentary
154
154
  } from './components/opta/football/opta-match-stats/commentary/OptaMatchStatsCommentary';
155
- export {
156
- OptaMatchStatsMatchdayLive
157
- } from './components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive';
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { TeamColor } from '../shared/types';
3
- export declare const DesktopWidget: React.FC<{
4
- season: string;
5
- competition: string;
6
- match: string;
7
- isApp?: boolean;
8
- homeTeamColor?: TeamColor;
9
- awayTeamColor?: TeamColor;
10
- }>;
@@ -1,69 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { Placeholder } from '@times-components/image';
3
- import { initSettings, initStyleSheet, initScript, initElement, initComponent } from '../../../utils/config';
4
- import { PlaceholderContainer } from '../../../shared/shared-styles';
5
- import { WidgetContainer } from './styles/WidgetContainer';
6
- import { WidgetWrapper } from '../shared/styles';
7
- export const DesktopWidget = React.memo(({ season, competition, match, isApp = false, homeTeamColor = { light: '#000000', dark: '#a19c9cff' }, awayTeamColor = { light: '#007A3F', dark: '#007A3F' } }) => {
8
- const ref = React.createRef();
9
- const [isReady, setIsReady] = useState(false);
10
- useEffect(() => {
11
- const sport = 'football';
12
- initSettings();
13
- initStyleSheet(sport);
14
- initScript()
15
- .then(() => {
16
- if (ref.current) {
17
- ref.current.innerHTML = initElement('opta-widget', {
18
- sport,
19
- widget: 'matchday_live',
20
- season,
21
- competition,
22
- match,
23
- template: 'normal',
24
- live: true,
25
- orientation: 'horizontal',
26
- side: 'both',
27
- show_match_header: true,
28
- show_crests: true,
29
- show_pitch_crests: false,
30
- show_team_formation: true,
31
- show_score: false,
32
- show_halftime_score: false,
33
- show_competition_name: false,
34
- show_date: false,
35
- date_format: 'dddd D MMMM YYYY',
36
- narrow_date_format: 'DD/MM/YY',
37
- show_referee: true,
38
- show_venue: true,
39
- show_attendance: true,
40
- show_images: false,
41
- show_pitch_images: false,
42
- show_team_sheets: false,
43
- show_event_icons: true,
44
- show_player_names: true,
45
- show_player_stats: true,
46
- show_subs: 'all',
47
- competition_naming: 'brief',
48
- team_naming: 'full',
49
- player_naming: 'last_name',
50
- show_live: false,
51
- show_logo: false,
52
- show_title: false,
53
- breakpoints: '400, 700'
54
- }).outerHTML;
55
- initComponent();
56
- }
57
- })
58
- .then(() => {
59
- setIsReady(true);
60
- });
61
- }, []);
62
- return (React.createElement(React.Fragment, null,
63
- React.createElement(WidgetWrapper, { isApp: isApp, className: "matchday-live-widget-desktop" },
64
- React.createElement("h3", null, "Line-ups"),
65
- React.createElement(WidgetContainer, { ref: ref, isApp: isApp, homeTeamColor: homeTeamColor, awayTeamColor: awayTeamColor })),
66
- !isReady && (React.createElement(PlaceholderContainer, { "data-testid": "placeholder" },
67
- React.createElement(Placeholder, null)))));
68
- });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVza3RvcFdpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29wdGEvZm9vdGJhbGwvb3B0YS1tYXRjaC1zdGF0cy9tYXRjaGRheS1saXZlL0Rlc2t0b3BXaWRnZXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxFQUNWLFdBQVcsRUFDWCxhQUFhLEVBQ2QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FPckIsS0FBSyxDQUFDLElBQUksQ0FDYixDQUFDLEVBQ0MsTUFBTSxFQUNOLFdBQVcsRUFDWCxLQUFLLEVBQ0wsS0FBSyxHQUFHLEtBQUssRUFDYixhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFDdkQsYUFBYSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQ3RELEVBQUUsRUFBRTtJQUNILE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQWtCLENBQUM7SUFDOUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxRQUFRLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFdkQsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUV6QixZQUFZLEVBQUUsQ0FBQztRQUNmLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixVQUFVLEVBQUU7YUFDVCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO2dCQUNmLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxhQUFhLEVBQUU7b0JBQ2pELEtBQUs7b0JBQ0wsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE1BQU07b0JBQ04sV0FBVztvQkFDWCxLQUFLO29CQUNMLFFBQVEsRUFBRSxRQUFRO29CQUNsQixJQUFJLEVBQUUsSUFBSTtvQkFDVixXQUFXLEVBQUUsWUFBWTtvQkFDekIsSUFBSSxFQUFFLE1BQU07b0JBQ1osaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLGlCQUFpQixFQUFFLEtBQUs7b0JBQ3hCLG1CQUFtQixFQUFFLElBQUk7b0JBQ3pCLFVBQVUsRUFBRSxLQUFLO29CQUNqQixtQkFBbUIsRUFBRSxLQUFLO29CQUMxQixxQkFBcUIsRUFBRSxLQUFLO29CQUM1QixTQUFTLEVBQUUsS0FBSztvQkFDaEIsV0FBVyxFQUFFLGtCQUFrQjtvQkFDL0Isa0JBQWtCLEVBQUUsVUFBVTtvQkFDOUIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsSUFBSTtvQkFDckIsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLGlCQUFpQixFQUFFLEtBQUs7b0JBQ3hCLGdCQUFnQixFQUFFLEtBQUs7b0JBQ3ZCLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLFNBQVMsRUFBRSxLQUFLO29CQUNoQixrQkFBa0IsRUFBRSxPQUFPO29CQUMzQixXQUFXLEVBQUUsTUFBTTtvQkFDbkIsYUFBYSxFQUFFLFdBQVc7b0JBQzFCLFNBQVMsRUFBRSxLQUFLO29CQUNoQixTQUFTLEVBQUUsS0FBSztvQkFDaEIsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFdBQVcsRUFBRSxVQUFVO2lCQUN4QixDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUViLGFBQWEsRUFBRSxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE9BQU8sQ0FDTDtRQUNFLG9CQUFDLGFBQWEsSUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyw4QkFBOEI7WUFDbkUsMkNBQWlCO1lBQ2pCLG9CQUFDLGVBQWUsSUFDZCxHQUFHLEVBQUUsR0FBRyxFQUNSLEtBQUssRUFBRSxLQUFLLEVBQ1osYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsR0FDNUIsQ0FDWTtRQUNmLENBQUMsT0FBTyxJQUFJLENBQ1gsb0JBQUMsb0JBQW9CLG1CQUFhLGFBQWE7WUFDN0Msb0JBQUMsV0FBVyxPQUFHLENBQ00sQ0FDeEIsQ0FDQSxDQUNKLENBQUM7QUFDSixDQUFDLENBQ0YsQ0FBQyJ9
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { TeamColor } from '../shared/types';
3
- export declare const MobileWidget: React.FC<{
4
- season: string;
5
- competition: string;
6
- match: string;
7
- isApp?: boolean;
8
- homeTeamColor?: TeamColor;
9
- awayTeamColor?: TeamColor;
10
- homeTeamName: string;
11
- awayTeamName: string;
12
- }>;
@@ -1,90 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { Placeholder } from '@times-components/image';
3
- import { initSettings, initStyleSheet, initScript, initElement, initComponent } from '../../../utils/config';
4
- import { PlaceholderContainer } from '../../../shared/shared-styles';
5
- import { NavigationWrapper } from './styles/NavigationWrapper';
6
- import { WidgetContainer } from './styles/WidgetContainer';
7
- const widgetOptions = {
8
- widget: 'matchday_live',
9
- template: 'normal',
10
- live: true,
11
- orientation: 'vertical',
12
- show_match_header: true,
13
- show_crests: false,
14
- show_pitch_crests: false,
15
- show_team_formation: true,
16
- show_score: false,
17
- show_halftime_score: false,
18
- show_competition_name: false,
19
- show_date: false,
20
- date_format: 'dddd D MMMM YYYY',
21
- narrow_date_format: 'DD/MM/YY',
22
- show_referee: true,
23
- show_venue: false,
24
- show_attendance: false,
25
- show_images: false,
26
- show_pitch_images: false,
27
- show_team_sheets: false,
28
- show_event_icons: true,
29
- show_player_names: true,
30
- show_player_stats: true,
31
- show_subs: 'all',
32
- competition_naming: 'brief',
33
- team_naming: 'full',
34
- player_naming: 'last_name',
35
- show_live: false,
36
- show_logo: false,
37
- show_title: false
38
- };
39
- export const MobileWidget = React.memo(({ season, competition, match, isApp = false, homeTeamColor = { light: '#000000', dark: '#a19c9cff' }, awayTeamColor = { light: '#007A3F', dark: '#007A3F' }, homeTeamName, awayTeamName }) => {
40
- const homeRef = React.createRef();
41
- const awayRef = React.createRef();
42
- const [isReady, setIsReady] = useState(false);
43
- const [activeTeam, setActiveTeam] = useState('home');
44
- useEffect(() => {
45
- const sport = 'football';
46
- initSettings();
47
- initStyleSheet(sport);
48
- initScript()
49
- .then(() => {
50
- if (homeRef.current) {
51
- homeRef.current.innerHTML = initElement('opta-widget', {
52
- ...widgetOptions,
53
- sport,
54
- season,
55
- competition,
56
- match,
57
- side: 'home'
58
- }).outerHTML;
59
- initComponent();
60
- }
61
- })
62
- .then(() => {
63
- if (awayRef.current) {
64
- awayRef.current.innerHTML = initElement('opta-widget', {
65
- ...widgetOptions,
66
- sport,
67
- season,
68
- competition,
69
- match,
70
- side: 'away'
71
- }).outerHTML;
72
- initComponent();
73
- }
74
- })
75
- .finally(() => {
76
- setIsReady(true);
77
- });
78
- }, []);
79
- return (React.createElement(React.Fragment, null,
80
- React.createElement("div", { className: "matchday-live-widget-mobile" },
81
- React.createElement(NavigationWrapper, { "data-testid": "mobile-navigation-wrapper", activeTeam: activeTeam, homeTeamColor: homeTeamColor, awayTeamColor: awayTeamColor, isApp: isApp },
82
- React.createElement("div", { className: "navigation-buttons" },
83
- React.createElement("button", { className: activeTeam === 'home' ? 'active home' : 'home', onClick: () => setActiveTeam('home') }, homeTeamName),
84
- React.createElement("button", { className: activeTeam === 'away' ? 'active away' : 'away', onClick: () => setActiveTeam('away') }, awayTeamName)),
85
- React.createElement(WidgetContainer, { className: "home-widget-container", ref: homeRef, isApp: isApp, homeTeamColor: homeTeamColor, awayTeamColor: awayTeamColor }),
86
- React.createElement(WidgetContainer, { className: "away-widget-container", ref: awayRef, isApp: isApp, homeTeamColor: homeTeamColor, awayTeamColor: awayTeamColor }),
87
- !isReady && (React.createElement(PlaceholderContainer, { "data-testid": "placeholder" },
88
- React.createElement(Placeholder, null)))))));
89
- });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9iaWxlV2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3B0YS9mb290YmFsbC9vcHRhLW1hdGNoLXN0YXRzL21hdGNoZGF5LWxpdmUvTW9iaWxlV2lkZ2V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNkLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE1BQU0sYUFBYSxHQUFHO0lBQ3BCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLElBQUksRUFBRSxJQUFJO0lBQ1YsV0FBVyxFQUFFLFVBQVU7SUFDdkIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixXQUFXLEVBQUUsS0FBSztJQUNsQixpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLG1CQUFtQixFQUFFLElBQUk7SUFDekIsVUFBVSxFQUFFLEtBQUs7SUFDakIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixxQkFBcUIsRUFBRSxLQUFLO0lBQzVCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFdBQVcsRUFBRSxrQkFBa0I7SUFDL0Isa0JBQWtCLEVBQUUsVUFBVTtJQUM5QixZQUFZLEVBQUUsSUFBSTtJQUNsQixVQUFVLEVBQUUsS0FBSztJQUNqQixlQUFlLEVBQUUsS0FBSztJQUN0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
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { TeamColor } from '../shared/types';
3
- export declare const OptaMatchStatsMatchdayLive: React.FC<{
4
- season: string;
5
- competition: string;
6
- match: string;
7
- isApp?: boolean;
8
- homeTeamColor?: TeamColor;
9
- awayTeamColor?: TeamColor;
10
- homeTeamName: string;
11
- awayTeamName: string;
12
- }>;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { DesktopWidget } from './DesktopWidget';
3
- import { MobileWidget } from './MobileWidget';
4
- import { MatchdayLiveController } from './styles/MatchdayLiveController';
5
- export const OptaMatchStatsMatchdayLive = React.memo(props => {
6
- return (React.createElement(MatchdayLiveController, null,
7
- React.createElement(DesktopWidget, Object.assign({}, props)),
8
- React.createElement(MobileWidget, Object.assign({}, props))));
9
- });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0YU1hdGNoU3RhdHNNYXRjaGRheUxpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcHRhL2Zvb3RiYWxsL29wdGEtbWF0Y2gtc3RhdHMvbWF0Y2hkYXktbGl2ZS9PcHRhTWF0Y2hTdGF0c01hdGNoZGF5TGl2ZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBU2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDdEIsT0FBTyxDQUNMLG9CQUFDLHNCQUFzQjtRQUNyQixvQkFBQyxhQUFhLG9CQUFLLEtBQUssRUFBSTtRQUM1QixvQkFBQyxZQUFZLG9CQUFLLEtBQUssRUFBSSxDQUNKLENBQzFCLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyJ9
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- import { showcaseConverter } from '@times-components/storybook';
3
- import { ArticleHarness } from '../../../../../fixtures/article-harness/ArticleHarness';
4
- import { OptaMatchStatsMatchdayLive } from './OptaMatchStatsMatchdayLive';
5
- const showcase = {
6
- children: [
7
- {
8
- decorator: (storyFn) => (React.createElement(ArticleHarness, null, storyFn())),
9
- type: 'decorator'
10
- },
11
- {
12
- component: () => {
13
- return (React.createElement(React.Fragment, null,
14
- React.createElement(OptaMatchStatsMatchdayLive, { season: "2025", competition: "8", match: "2562026", homeTeamName: "Arsenal", awayTeamName: "Brentford" })));
15
- },
16
- name: 'Summary',
17
- type: 'story'
18
- }
19
- ],
20
- name: 'Typescript Component/Opta Match Stats/Football/Match Stats Matchday Live'
21
- };
22
- // @ts-ignore
23
- showcaseConverter(module, showcase);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0YU1hdGNoU3RhdHNNYXRjaGRheUxpdmUuc3Rvcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29wdGEvZm9vdGJhbGwvb3B0YS1tYXRjaC1zdGF0cy9tYXRjaGRheS1saXZlL09wdGFNYXRjaFN0YXRzTWF0Y2hkYXlMaXZlLnN0b3JpZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDeEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFMUUsTUFBTSxRQUFRLEdBQUc7SUFDZixRQUFRLEVBQUU7UUFDUjtZQUNFLFNBQVMsRUFBRSxDQUFDLE9BQThCLEVBQUUsRUFBRSxDQUFDLENBQzdDLG9CQUFDLGNBQWMsUUFBRSxPQUFPLEVBQUUsQ0FBa0IsQ0FDN0M7WUFDRCxJQUFJLEVBQUUsV0FBVztTQUNsQjtRQUNEO1lBQ0UsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDZCxPQUFPLENBQ0w7b0JBQ0Usb0JBQUMsMEJBQTBCLElBQ3pCLE1BQU0sRUFBQyxNQUFNLEVBQ2IsV0FBVyxFQUFDLEdBQUcsRUFDZixLQUFLLEVBQUMsU0FBUyxFQUNmLFlBQVksRUFBQyxTQUFTLEVBQ3RCLFlBQVksRUFBQyxXQUFXLEdBQ3hCLENBQ0QsQ0FDSixDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLE9BQU87U0FDZDtLQUNGO0lBQ0QsSUFBSSxFQUNGLDBFQUEwRTtDQUM3RSxDQUFDO0FBRUYsYUFBYTtBQUNiLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyJ9
@@ -1,48 +0,0 @@
1
- import React from 'react';
2
- import { render, act } from '@testing-library/react';
3
- import 'regenerator-runtime';
4
- import '@testing-library/jest-dom';
5
- jest.mock('@times-components/image', () => ({
6
- Placeholder: () => React.createElement(React.Fragment, null, "Placeholder")
7
- }));
8
- const mockInitSettings = jest.fn();
9
- const mockInitStyleSheet = jest.fn();
10
- const mockInitComponent = jest.fn();
11
- const mockHasMatchEvents = jest.fn();
12
- const mockInitElement = () => {
13
- const element = document.createElement('div');
14
- element.appendChild(document.createTextNode('Widget'));
15
- return element;
16
- };
17
- jest.mock('../../../../utils/config', () => ({
18
- initSettings: mockInitSettings,
19
- initStyleSheet: mockInitStyleSheet,
20
- initScript: () => new Promise(resolve => resolve({})),
21
- initElement: mockInitElement,
22
- initComponent: mockInitComponent
23
- }));
24
- import { OptaMatchStatsMatchdayLive } from '../OptaMatchStatsMatchdayLive';
25
- const requiredProps = {
26
- season: '2020',
27
- competition: '3',
28
- match: '2041900',
29
- homeTeamName: 'Liverpool',
30
- awayTeamName: 'Manchester City'
31
- };
32
- describe('OptaMatchStatsSummary', () => {
33
- beforeEach(() => {
34
- jest.clearAllMocks();
35
- });
36
- it('should render correctly', async () => {
37
- const { asFragment } = render(React.createElement(OptaMatchStatsMatchdayLive, Object.assign({}, requiredProps)));
38
- act(() => {
39
- mockInitComponent();
40
- mockHasMatchEvents();
41
- });
42
- expect(mockInitSettings).toHaveBeenCalledTimes(1);
43
- expect(mockInitStyleSheet).toHaveBeenCalledTimes(1);
44
- expect(mockInitComponent).toHaveBeenCalledTimes(1);
45
- expect(asFragment()).toMatchSnapshot();
46
- });
47
- });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0YU1hdGNoU3RhdHNNYXRjaGRheUxpdmUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29wdGEvZm9vdGJhbGwvb3B0YS1tYXRjaC1zdGF0cy9tYXRjaGRheS1saXZlL19fdGVzdHNfXy9PcHRhTWF0Y2hTdGF0c01hdGNoZGF5TGl2ZS50ZXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sMkJBQTJCLENBQUM7QUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyx3REFBZ0I7Q0FDcEMsQ0FBQyxDQUFDLENBQUM7QUFFSixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNuQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNyQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUVyQyxNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUU7SUFDM0IsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDM0MsWUFBWSxFQUFFLGdCQUFnQjtJQUM5QixjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxXQUFXLEVBQUUsZUFBZTtJQUM1QixhQUFhLEVBQUUsaUJBQWlCO0NBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBRUosT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0UsTUFBTSxhQUFhLEdBQUc7SUFDcEIsTUFBTSxFQUFFLE1BQU07SUFDZCxXQUFXLEVBQUUsR0FBRztJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixZQUFZLEVBQUUsV0FBVztJQUN6QixZQUFZLEVBQUUsaUJBQWlCO0NBQ2hDLENBQUM7QUFFRixRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ3JDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdkMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FDM0Isb0JBQUMsMEJBQTBCLG9CQUFLLGFBQWEsRUFBSSxDQUNsRCxDQUFDO1FBRUYsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsa0JBQWtCLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
@@ -1 +0,0 @@
1
- export declare const MatchdayLiveController: import("styled-components").StyledComponent<"div", any, {}, never>;