@times-components/ts-components 1.146.2-be27d508c972211ad80599875cd69c63bf67d4b1.45 → 1.146.2-e5795a0ef59e2adb61ba52aeb7332fda4405cb7a.4

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 (156) hide show
  1. package/dist/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.d.ts +10 -0
  2. package/dist/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.js +69 -0
  3. package/dist/components/opta/football/opta-match-stats/matchday-live/MobileWidget.d.ts +12 -0
  4. package/dist/components/opta/football/opta-match-stats/matchday-live/MobileWidget.js +90 -0
  5. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.d.ts +12 -0
  6. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.js +10 -0
  7. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.js +24 -0
  8. package/dist/components/opta/football/opta-match-stats/matchday-live/__tests__/MobileWidget.test.js +57 -0
  9. package/dist/components/{carousel-component/__tests__/DefaultPageDot.test.d.ts → opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.d.ts} +1 -0
  10. package/dist/components/opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.js +48 -0
  11. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.d.ts +1 -0
  12. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.js +19 -0
  13. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.d.ts +12 -0
  14. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.js +67 -0
  15. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.d.ts +6 -0
  16. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.js +736 -0
  17. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/__tests__/NavigationWrapper.test.js +33 -0
  18. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/__tests__/WidgetContainer.test.js +36 -0
  19. package/dist/components/opta/football/opta-match-stats/shared/styles.js +8 -1
  20. package/dist/components/opta/football/opta-match-stats/summary/OptaMatchStatsSummary.js +2 -2
  21. package/dist/components/opta/football/opta-match-stats/summary/OptaMatchStatsSummary.stories.js +1 -1
  22. package/dist/components/opta/football/opta-match-stats/summary/WidgetContainer.js +19 -5
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.js +2 -2
  25. package/package.json +3 -3
  26. package/rnw.js +1 -1
  27. package/src/components/opta/football/opta-match-stats/commentary/__tests__/__snapshots__/OptaMatchStatsCommentary.test.tsx.snap +1 -1
  28. package/src/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.tsx +108 -0
  29. package/src/components/opta/football/opta-match-stats/matchday-live/MobileWidget.tsx +158 -0
  30. package/src/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.tsx +38 -0
  31. package/src/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.tsx +23 -0
  32. package/src/components/opta/football/opta-match-stats/matchday-live/__tests__/MobileWidget.test.tsx +69 -0
  33. package/src/components/opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.tsx +61 -0
  34. package/src/components/opta/football/opta-match-stats/matchday-live/__tests__/__snapshots__/OptaMatchStatsMatchdayLive.test.tsx.snap +61 -0
  35. package/src/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.tsx +19 -0
  36. package/src/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.tsx +81 -0
  37. package/src/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.tsx +767 -0
  38. package/src/components/opta/football/opta-match-stats/matchday-live/styles/__tests__/NavigationWrapper.test.tsx +67 -0
  39. package/src/components/opta/football/opta-match-stats/matchday-live/styles/__tests__/WidgetContainer.test.tsx +64 -0
  40. package/src/components/opta/football/opta-match-stats/shared/styles.ts +8 -0
  41. package/src/components/opta/football/opta-match-stats/stats-graphs/__tests__/__snapshots__/OptaMatchStatsGraphs.test.tsx.snap +1 -1
  42. package/src/components/opta/football/opta-match-stats/summary/OptaMatchStatsSummary.stories.tsx +1 -1
  43. package/src/components/opta/football/opta-match-stats/summary/OptaMatchStatsSummary.tsx +1 -1
  44. package/src/components/opta/football/opta-match-stats/summary/WidgetContainer.tsx +18 -4
  45. package/src/components/opta/football/opta-match-stats/summary/__tests__/__snapshots__/OptaMatchStatsSummary.test.tsx.snap +1 -1
  46. package/src/index.ts +3 -2
  47. package/dist/components/carousel-component/CarouselComponent.stories.js +0 -146
  48. package/dist/components/carousel-component/CarouselItem.d.ts +0 -3
  49. package/dist/components/carousel-component/CarouselItem.js +0 -12
  50. package/dist/components/carousel-component/DefaultNavigationArrow.d.ts +0 -8
  51. package/dist/components/carousel-component/DefaultNavigationArrow.js +0 -6
  52. package/dist/components/carousel-component/DefaultPageDot.d.ts +0 -8
  53. package/dist/components/carousel-component/DefaultPageDot.js +0 -4
  54. package/dist/components/carousel-component/__tests__/CarouselComponent.test.js +0 -163
  55. package/dist/components/carousel-component/__tests__/CarouselItem.test.js +0 -80
  56. package/dist/components/carousel-component/__tests__/DefaultNavigationArrow.test.js +0 -62
  57. package/dist/components/carousel-component/__tests__/DefaultPageDot.test.js +0 -68
  58. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.d.ts +0 -1
  59. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.js +0 -459
  60. package/dist/components/carousel-component/hooks/useCarousel.d.ts +0 -2
  61. package/dist/components/carousel-component/hooks/useCarousel.js +0 -167
  62. package/dist/components/carousel-component/index.d.ts +0 -4
  63. package/dist/components/carousel-component/index.js +0 -20
  64. package/dist/components/carousel-component/styles.d.ts +0 -28
  65. package/dist/components/carousel-component/styles.js +0 -172
  66. package/dist/components/carousel-component/types.d.ts +0 -53
  67. package/dist/components/carousel-component/types.js +0 -2
  68. package/dist/components/trip-cards/SkeletonCard.d.ts +0 -7
  69. package/dist/components/trip-cards/SkeletonCard.js +0 -22
  70. package/dist/components/trip-cards/TripCard.d.ts +0 -3
  71. package/dist/components/trip-cards/TripCard.js +0 -49
  72. package/dist/components/trip-cards/TripCards.stories.d.ts +0 -1
  73. package/dist/components/trip-cards/TripCards.stories.js +0 -159
  74. package/dist/components/trip-cards/TripCardsLayout.d.ts +0 -3
  75. package/dist/components/trip-cards/TripCardsLayout.js +0 -56
  76. package/dist/components/trip-cards/__tests__/SkeletonCard.test.d.ts +0 -1
  77. package/dist/components/trip-cards/__tests__/SkeletonCard.test.js +0 -139
  78. package/dist/components/trip-cards/__tests__/TripCard.test.d.ts +0 -1
  79. package/dist/components/trip-cards/__tests__/TripCard.test.js +0 -95
  80. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.d.ts +0 -1
  81. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.js +0 -314
  82. package/dist/components/trip-cards/__tests__/assets.test.d.ts +0 -1
  83. package/dist/components/trip-cards/__tests__/assets.test.js +0 -165
  84. package/dist/components/trip-cards/__tests__/helpers.test.d.ts +0 -1
  85. package/dist/components/trip-cards/__tests__/helpers.test.js +0 -220
  86. package/dist/components/trip-cards/__tests__/index.test.d.ts +0 -1
  87. package/dist/components/trip-cards/__tests__/index.test.js +0 -478
  88. package/dist/components/trip-cards/__tests__/mockData.test.d.ts +0 -1
  89. package/dist/components/trip-cards/__tests__/mockData.test.js +0 -57
  90. package/dist/components/trip-cards/__tests__/skeletonStyles.test.d.ts +0 -1
  91. package/dist/components/trip-cards/__tests__/skeletonStyles.test.js +0 -194
  92. package/dist/components/trip-cards/assets/BoatIcon.d.ts +0 -1
  93. package/dist/components/trip-cards/assets/BoatIcon.js +0 -4
  94. package/dist/components/trip-cards/assets/CalendarIcon.d.ts +0 -1
  95. package/dist/components/trip-cards/assets/CalendarIcon.js +0 -4
  96. package/dist/components/trip-cards/assets/ChevronRightIcon.d.ts +0 -1
  97. package/dist/components/trip-cards/assets/ChevronRightIcon.js +0 -4
  98. package/dist/components/trip-cards/assets/LocationIcon.d.ts +0 -1
  99. package/dist/components/trip-cards/assets/LocationIcon.js +0 -4
  100. package/dist/components/trip-cards/assets/MoonIcon.d.ts +0 -1
  101. package/dist/components/trip-cards/assets/MoonIcon.js +0 -4
  102. package/dist/components/trip-cards/assets/index.d.ts +0 -6
  103. package/dist/components/trip-cards/assets/index.js +0 -7
  104. package/dist/components/trip-cards/helpers.d.ts +0 -11
  105. package/dist/components/trip-cards/helpers.js +0 -138
  106. package/dist/components/trip-cards/index.d.ts +0 -4
  107. package/dist/components/trip-cards/index.js +0 -68
  108. package/dist/components/trip-cards/mockData.d.ts +0 -3
  109. package/dist/components/trip-cards/mockData.js +0 -317
  110. package/dist/components/trip-cards/skeletonStyles.d.ts +0 -9
  111. package/dist/components/trip-cards/skeletonStyles.js +0 -37
  112. package/dist/components/trip-cards/styles.d.ts +0 -43
  113. package/dist/components/trip-cards/styles.js +0 -404
  114. package/dist/components/trip-cards/types.d.ts +0 -119
  115. package/dist/components/trip-cards/types.js +0 -2
  116. package/src/components/carousel-component/CarouselComponent.stories.tsx +0 -220
  117. package/src/components/carousel-component/CarouselItem.tsx +0 -26
  118. package/src/components/carousel-component/DefaultNavigationArrow.tsx +0 -37
  119. package/src/components/carousel-component/DefaultPageDot.tsx +0 -20
  120. package/src/components/carousel-component/__tests__/CarouselComponent.test.tsx +0 -259
  121. package/src/components/carousel-component/__tests__/CarouselItem.test.tsx +0 -140
  122. package/src/components/carousel-component/__tests__/DefaultNavigationArrow.test.tsx +0 -153
  123. package/src/components/carousel-component/__tests__/DefaultPageDot.test.tsx +0 -105
  124. package/src/components/carousel-component/hooks/__tests__/useCarousel.test.ts +0 -625
  125. package/src/components/carousel-component/hooks/useCarousel.ts +0 -229
  126. package/src/components/carousel-component/index.tsx +0 -92
  127. package/src/components/carousel-component/styles.ts +0 -188
  128. package/src/components/carousel-component/types.ts +0 -62
  129. package/src/components/trip-cards/SkeletonCard.tsx +0 -64
  130. package/src/components/trip-cards/TripCard.tsx +0 -140
  131. package/src/components/trip-cards/TripCards.stories.tsx +0 -224
  132. package/src/components/trip-cards/TripCardsLayout.tsx +0 -145
  133. package/src/components/trip-cards/__tests__/SkeletonCard.test.tsx +0 -169
  134. package/src/components/trip-cards/__tests__/TripCard.test.tsx +0 -120
  135. package/src/components/trip-cards/__tests__/TripCardsLayout.test.tsx +0 -583
  136. package/src/components/trip-cards/__tests__/assets.test.tsx +0 -206
  137. package/src/components/trip-cards/__tests__/helpers.test.ts +0 -272
  138. package/src/components/trip-cards/__tests__/index.test.tsx +0 -550
  139. package/src/components/trip-cards/__tests__/mockData.test.ts +0 -67
  140. package/src/components/trip-cards/__tests__/skeletonStyles.test.tsx +0 -256
  141. package/src/components/trip-cards/assets/BoatIcon.tsx +0 -17
  142. package/src/components/trip-cards/assets/CalendarIcon.tsx +0 -17
  143. package/src/components/trip-cards/assets/ChevronRightIcon.tsx +0 -20
  144. package/src/components/trip-cards/assets/LocationIcon.tsx +0 -17
  145. package/src/components/trip-cards/assets/MoonIcon.tsx +0 -17
  146. package/src/components/trip-cards/assets/index.ts +0 -7
  147. package/src/components/trip-cards/helpers.ts +0 -176
  148. package/src/components/trip-cards/index.tsx +0 -119
  149. package/src/components/trip-cards/mockData.ts +0 -345
  150. package/src/components/trip-cards/skeletonStyles.ts +0 -46
  151. package/src/components/trip-cards/styles.ts +0 -450
  152. package/src/components/trip-cards/types.ts +0 -128
  153. /package/dist/components/{carousel-component/CarouselComponent.stories.d.ts → opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.d.ts} +0 -0
  154. /package/dist/components/{carousel-component/__tests__/CarouselComponent.test.d.ts → opta/football/opta-match-stats/matchday-live/__tests__/MobileWidget.test.d.ts} +0 -0
  155. /package/dist/components/{carousel-component/__tests__/CarouselItem.test.d.ts → opta/football/opta-match-stats/matchday-live/styles/__tests__/NavigationWrapper.test.d.ts} +0 -0
  156. /package/dist/components/{carousel-component/__tests__/DefaultNavigationArrow.test.d.ts → opta/football/opta-match-stats/matchday-live/styles/__tests__/WidgetContainer.test.d.ts} +0 -0
@@ -0,0 +1,67 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import { NavigationWrapper } from '../NavigationWrapper';
5
+
6
+ const HomeColour = { light: '#123456', dark: '#abcdef' };
7
+ const AwayColour = { light: '#654321', dark: '#fedcba' };
8
+
9
+ describe('Matchday Live NavigationWrapper', () => {
10
+ it('renders with active home', () => {
11
+ const { container } = render(
12
+ <NavigationWrapper
13
+ isApp={false}
14
+ activeTeam="home"
15
+ homeTeamColor={HomeColour}
16
+ awayTeamColor={AwayColour}
17
+ >
18
+ <div className="navigation-buttons">
19
+ <button className="active home">Home</button>
20
+ <button className="away">Away</button>
21
+ </div>
22
+ <div className="home-widget-container">Home widget</div>
23
+ <div className="away-widget-container">Away widget</div>
24
+ </NavigationWrapper>
25
+ );
26
+
27
+ expect(container.querySelector('.navigation-buttons')).toBeInTheDocument();
28
+ expect(
29
+ container.querySelector('.navigation-buttons .active.home')
30
+ ).toBeInTheDocument();
31
+ expect(
32
+ container.querySelector('.home-widget-container')
33
+ ).toBeInTheDocument();
34
+ expect(
35
+ container.querySelector('.away-widget-container')
36
+ ).toBeInTheDocument();
37
+ });
38
+
39
+ it('renders with active away and isApp true', () => {
40
+ const { container } = render(
41
+ <NavigationWrapper
42
+ isApp={true}
43
+ activeTeam="away"
44
+ homeTeamColor={HomeColour}
45
+ awayTeamColor={AwayColour}
46
+ >
47
+ <div className="navigation-buttons">
48
+ <button className="home">Home</button>
49
+ <button className="active away">Away</button>
50
+ </div>
51
+ <div className="home-widget-container">Home widget</div>
52
+ <div className="away-widget-container">Away widget</div>
53
+ </NavigationWrapper>
54
+ );
55
+
56
+ expect(container.querySelector('.navigation-buttons')).toBeInTheDocument();
57
+ expect(
58
+ container.querySelector('.navigation-buttons .active.away')
59
+ ).toBeInTheDocument();
60
+ expect(
61
+ container.querySelector('.home-widget-container')
62
+ ).toBeInTheDocument();
63
+ expect(
64
+ container.querySelector('.away-widget-container')
65
+ ).toBeInTheDocument();
66
+ });
67
+ });
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import { WidgetContainer } from '../WidgetContainer';
5
+
6
+ describe('Matchday Live WidgetContainer', () => {
7
+ const baseProps = {
8
+ isApp: true,
9
+ homeTeamColor: { light: '#000000', dark: '#a19c9cff' },
10
+ awayTeamColor: { light: '#007A3F', dark: '#007A3F' }
11
+ };
12
+
13
+ it('generates styles', () => {
14
+ const { container } = render(
15
+ <WidgetContainer {...baseProps}>
16
+ <div className="Opta">
17
+ <div className="Opta_W">content</div>
18
+ </div>
19
+ </WidgetContainer>
20
+ );
21
+ expect(container.querySelector('.Opta > .Opta_W')).toBeTruthy();
22
+ });
23
+
24
+ it('generates dark-mode styles under .Opta-Overlay .Opta-Flex', () => {
25
+ const { container } = render(
26
+ <WidgetContainer {...baseProps}>
27
+ <div className="Opta-Overlay">
28
+ <div className="Opta-Flex">flex</div>
29
+ </div>
30
+ </WidgetContainer>
31
+ );
32
+ expect(container.querySelector('.Opta-Overlay .Opta-Flex')).toBeTruthy();
33
+ });
34
+
35
+ it('applies home-widget-container styles', () => {
36
+ const { container } = render(
37
+ <WidgetContainer {...baseProps} className="home-widget-container">
38
+ <div className="Opta-MatchHeader">
39
+ <div className="Opta-Away">Away Team</div>
40
+ </div>
41
+ </WidgetContainer>
42
+ );
43
+ expect(
44
+ container.querySelector(
45
+ '.home-widget-container .Opta-MatchHeader .Opta-Away'
46
+ )
47
+ ).toBeTruthy();
48
+ });
49
+
50
+ it('applies away-widget-container styles', () => {
51
+ const { container } = render(
52
+ <WidgetContainer {...baseProps} className="away-widget-container">
53
+ <div className="Opta-MatchHeader">
54
+ <div className="Opta-Home">Home Team</div>
55
+ </div>
56
+ </WidgetContainer>
57
+ );
58
+ expect(
59
+ container.querySelector(
60
+ '.away-widget-container .Opta-MatchHeader .Opta-Home'
61
+ )
62
+ ).toBeTruthy();
63
+ });
64
+ });
@@ -54,5 +54,13 @@ export const WidgetWrapper = styled.div<{
54
54
  @media (max-width: ${maxMDBreakpoint}px) {
55
55
  display: none;
56
56
  }
57
+
58
+ ${props =>
59
+ props.isApp &&
60
+ `
61
+ @media(prefers-color-scheme: dark) {
62
+ color: ${darkTextColor} !important;
63
+ }
64
+ `}
57
65
  }
58
66
  `;
@@ -3,7 +3,7 @@
3
3
  exports[`OptaMatchStatsSummary should render correctly 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
- class="sc-bxivhb JyPwY"
6
+ class="sc-bxivhb dwwqvg"
7
7
  >
8
8
  <h3>
9
9
  Match Stats
@@ -26,7 +26,7 @@ const showcase = {
26
26
  <OptaMatchStatsSummary
27
27
  season="2025"
28
28
  competition="8"
29
- match="2561901"
29
+ match="2562044"
30
30
  isApp
31
31
  />
32
32
  </>
@@ -72,7 +72,7 @@ export const OptaMatchStatsSummary: React.FC<{
72
72
  show_competition_name: true,
73
73
  competition_naming: 'full',
74
74
  team_naming: 'full',
75
- player_naming: 'initial',
75
+ player_naming: 'last_name',
76
76
  show_live: false,
77
77
  show_logo: false,
78
78
  show_title: false
@@ -94,9 +94,14 @@ export const WidgetContainer = styled.div<{
94
94
  .Opta-Team {
95
95
  flex: 1;
96
96
  font-family: ${fonts.headline};
97
- font-size: 24px;
97
+ font-size: 20px;
98
98
  font-weight: 800;
99
99
  color: ${textColor};
100
+
101
+ @media (min-width: ${1024}px) {
102
+ font-size: 24px;
103
+ }
104
+
100
105
  ${props =>
101
106
  props.isApp &&
102
107
  `
@@ -316,14 +321,23 @@ export const WidgetContainer = styled.div<{
316
321
  display: flex;
317
322
  text-align: right;
318
323
  }
324
+
325
+ &.Opta-Home {
326
+ .Opta-Event-Player {
327
+ text-align: left;
328
+ }
329
+ }
330
+
331
+ &.Opta-Away {
332
+ .Opta-Event-Player {
333
+ text-align: right;
334
+ }
335
+ }
319
336
  }
320
337
 
321
338
  .Opta-Event-Text {
322
339
  display: flex;
323
340
  align-items: center;
324
- .Opta-Event-Player {
325
- text-align: left;
326
- }
327
341
 
328
342
  &.Opta-Home {
329
343
  li {
@@ -3,7 +3,7 @@
3
3
  exports[`OptaMatchStatsSummary should render correctly 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
- class="sc-ifAKCX eIVfcL"
6
+ class="sc-ifAKCX hyetdF"
7
7
  />
8
8
  <div
9
9
  class="sc-bwzfXH eSqyJ"
package/src/index.ts CHANGED
@@ -104,8 +104,6 @@ export {
104
104
  default as ArticleHeader
105
105
  } from './components/article-header/ArticleHeader';
106
106
 
107
- export { TripCards } from './components/trip-cards';
108
-
109
107
  export {
110
108
  UpdatedTimestamp
111
109
  } from './components/updated-timestamp/UpdatedTimestamp';
@@ -154,3 +152,6 @@ export {
154
152
  export {
155
153
  OptaMatchStatsCommentary
156
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,146 +0,0 @@
1
- import React from 'react';
2
- import { storiesOf } from '@storybook/react';
3
- import { CarouselComponent, CarouselItem } from './index';
4
- import styled from 'styled-components';
5
- // Simple card component for demos
6
- const SimpleCard = styled.div `
7
- background: ${props => props.color};
8
- height: 300px;
9
- border-radius: 8px;
10
- display: flex;
11
- align-items: center;
12
- justify-content: center;
13
- color: white;
14
- font-size: 24px;
15
- font-weight: 600;
16
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
17
- `;
18
- const Container = styled.div `
19
- max-width: 1200px;
20
- margin: 40px auto;
21
- padding: 0 20px;
22
- `;
23
- const Title = styled.h2 `
24
- margin-bottom: 24px;
25
- font-size: 24px;
26
- font-weight: 600;
27
- `;
28
- storiesOf('Typescript Component/CarouselComponent', module)
29
- .add('Two Cards Per Page', () => {
30
- const colors = [
31
- '#005C8A',
32
- '#FF6B6B',
33
- '#4ECDC4',
34
- '#45B7D1',
35
- '#96CEB4',
36
- '#FFEAA7'
37
- ];
38
- const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
39
- mobile: '90%',
40
- tablet: '70%',
41
- desktop: 'calc(47% - 10px)'
42
- } },
43
- React.createElement(SimpleCard, { color: color },
44
- "Card ",
45
- index + 1))));
46
- return (React.createElement(Container, null,
47
- React.createElement(Title, null, "Two Cards Per Page (with peek)"),
48
- React.createElement(CarouselComponent, { items: items, options: {
49
- itemsPerPage: 2
50
- }, showArrows: true, showDots: true })));
51
- })
52
- .add('Three Cards Per Page', () => {
53
- const colors = [
54
- '#005C8A',
55
- '#FF6B6B',
56
- '#4ECDC4',
57
- '#45B7D1',
58
- '#96CEB4',
59
- '#FFEAA7',
60
- '#DFE6E9',
61
- '#74B9FF',
62
- '#A29BFE'
63
- ];
64
- const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
65
- mobile: '85%',
66
- tablet: '40%',
67
- desktop: 'calc(31% - 14px)'
68
- } },
69
- React.createElement(SimpleCard, { color: color },
70
- "Card ",
71
- index + 1))));
72
- return (React.createElement(Container, null,
73
- React.createElement(Title, null, "Three Cards Per Page (with peek)"),
74
- React.createElement(CarouselComponent, { items: items, options: {
75
- itemsPerPage: 3
76
- }, showArrows: true, showDots: true })));
77
- })
78
- .add('Minimal Example', () => {
79
- const items = [
80
- React.createElement(CarouselItem, { key: "1", widthItemConfig: {
81
- mobile: '90%',
82
- tablet: '70%',
83
- desktop: 'calc(47% - 10px)'
84
- } },
85
- React.createElement(SimpleCard, { color: "#005C8A" }, "Card 1")),
86
- React.createElement(CarouselItem, { key: "2", widthItemConfig: {
87
- mobile: '90%',
88
- tablet: '70%',
89
- desktop: 'calc(47% - 10px)'
90
- } },
91
- React.createElement(SimpleCard, { color: "#FF6B6B" }, "Card 2")),
92
- React.createElement(CarouselItem, { key: "3", widthItemConfig: {
93
- mobile: '90%',
94
- tablet: '70%',
95
- desktop: 'calc(47% - 10px)'
96
- } },
97
- React.createElement(SimpleCard, { color: "#4ECDC4" }, "Card 3")),
98
- React.createElement(CarouselItem, { key: "4", widthItemConfig: {
99
- mobile: '90%',
100
- tablet: '70%',
101
- desktop: 'calc(47% - 10px)'
102
- } },
103
- React.createElement(SimpleCard, { color: "#45B7D1" }, "Card 4"))
104
- ];
105
- return (React.createElement(Container, null,
106
- React.createElement(Title, null, "Simple 4 Cards"),
107
- React.createElement(CarouselComponent, { items: items })));
108
- })
109
- .add('Without Navigation', () => {
110
- const colors = ['#005C8A', '#FF6B6B', '#4ECDC4', '#45B7D1'];
111
- const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
112
- mobile: '90%',
113
- tablet: '70%',
114
- desktop: 'calc(47% - 10px)'
115
- } },
116
- React.createElement(SimpleCard, { color: color },
117
- "Card ",
118
- index + 1))));
119
- return (React.createElement(Container, null,
120
- React.createElement(Title, null, "Scroll Only (No Arrows/Dots)"),
121
- React.createElement(CarouselComponent, { items: items, showArrows: false, showDots: false })));
122
- })
123
- .add('Three Cards Exact Width (No Peek)', () => {
124
- const colors = [
125
- '#005C8A',
126
- '#FF6B6B',
127
- '#4ECDC4',
128
- '#45B7D1',
129
- '#96CEB4',
130
- '#FFEAA7'
131
- ];
132
- const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
133
- mobile: '90%',
134
- tablet: '70%',
135
- desktop: 'calc(33% - 10px)'
136
- } },
137
- React.createElement(SimpleCard, { color: color },
138
- "Card ",
139
- index + 1))));
140
- return (React.createElement(Container, null,
141
- React.createElement(Title, null, "Three Cards Per Page (exact width, no peek)"),
142
- React.createElement(CarouselComponent, { items: items, options: {
143
- itemsPerPage: 3
144
- }, showArrows: true, showDots: true })));
145
- });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWxDb21wb25lbnQuc3Rvcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9DYXJvdXNlbENvbXBvbmVudC5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUQsT0FBTyxNQUFNLE1BQU0sbUJBQW1CLENBQUM7QUFFdkMsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQW1CO2dCQUNoQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLOzs7Ozs7Ozs7O0NBVW5DLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBOzs7O0NBSTNCLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBOzs7O0NBSXRCLENBQUM7QUFFRixTQUFTLENBQUMsd0NBQXdDLEVBQUUsTUFBTSxDQUFDO0tBQ3hELEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsTUFBTSxNQUFNLEdBQUc7UUFDYixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVixDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ3pDLG9CQUFDLFlBQVksSUFDWCxHQUFHLEVBQUUsS0FBSyxFQUNWLGVBQWUsRUFBRTtZQUNmLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEtBQUs7WUFDYixP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
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- import { CarouselItemProps } from './types';
3
- export declare const CarouselItem: React.FC<CarouselItemProps>;
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { ItemContainer } from './styles';
3
- export const CarouselItem = ({ children, widthItemConfig = {
4
- xs: '85%',
5
- mobile: '85%',
6
- tablet: '70%',
7
- desktop: 'calc(50% - 10px)',
8
- xl: 'calc(50% - 10px)'
9
- }, maxWidthItemConfig, className }) => {
10
- return (React.createElement(ItemContainer, { widthItemConfig: widthItemConfig, maxWidthItemConfig: maxWidthItemConfig, className: className }, children));
11
- };
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWxJdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2Fyb3VzZWwtY29tcG9uZW50L0Nhcm91c2VsSXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHekMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxDQUFDLEVBQ3hELFFBQVEsRUFDUixlQUFlLEdBQUc7SUFDaEIsRUFBRSxFQUFFLEtBQUs7SUFDVCxNQUFNLEVBQUUsS0FBSztJQUNiLE1BQU0sRUFBRSxLQUFLO0lBQ2IsT0FBTyxFQUFFLGtCQUFrQjtJQUMzQixFQUFFLEVBQUUsa0JBQWtCO0NBQ3ZCLEVBQ0Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVixFQUFFLEVBQUU7SUFDSCxPQUFPLENBQ0wsb0JBQUMsYUFBYSxJQUNaLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLGtCQUFrQixFQUFFLGtCQUFrQixFQUN0QyxTQUFTLEVBQUUsU0FBUyxJQUVuQixRQUFRLENBQ0ssQ0FDakIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- interface NavigationArrowProps {
3
- direction: 'left' | 'right';
4
- onClick: () => void;
5
- disabled: boolean;
6
- }
7
- export declare const DefaultNavigationArrow: React.FC<NavigationArrowProps>;
8
- export {};
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { NavigationArrowButton } from './styles';
3
- export const DefaultNavigationArrow = ({ direction, onClick, disabled }) => (React.createElement(NavigationArrowButton, { direction: direction, onClick: onClick, disabled: disabled, "aria-label": `${direction === 'left' ? 'Previous' : 'Next'} items` },
4
- React.createElement("svg", { width: "24", height: "24", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
- React.createElement("path", { d: direction === 'left' ? 'M10 12L6 8L10 4' : 'M6 12L10 8L6 4', stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }))));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdE5hdmlnYXRpb25BcnJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9EZWZhdWx0TmF2aWdhdGlvbkFycm93LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBUWpELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFtQyxDQUFDLEVBQ3JFLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNULEVBQUUsRUFBRSxDQUFDLENBQ0osb0JBQUMscUJBQXFCLElBQ3BCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsRUFBRSxRQUFRLGdCQUNOLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVE7SUFFakUsNkJBQ0UsS0FBSyxFQUFDLElBQUksRUFDVixNQUFNLEVBQUMsSUFBSSxFQUNYLE9BQU8sRUFBQyxXQUFXLEVBQ25CLElBQUksRUFBQyxNQUFNLEVBQ1gsS0FBSyxFQUFDLDRCQUE0QjtRQUVsQyw4QkFDRSxDQUFDLEVBQUUsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUM5RCxNQUFNLEVBQUMsY0FBYyxFQUNyQixXQUFXLEVBQUMsS0FBSyxFQUNqQixhQUFhLEVBQUMsT0FBTyxFQUNyQixjQUFjLEVBQUMsT0FBTyxHQUN0QixDQUNFLENBQ2dCLENBQ3pCLENBQUMifQ==
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- interface PageDotProps {
3
- active: boolean;
4
- onClick: () => void;
5
- index: number;
6
- }
7
- export declare const DefaultPageDot: React.FC<PageDotProps>;
8
- export {};
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import { PageDotButton } from './styles';
3
- export const DefaultPageDot = ({ active, onClick, index }) => (React.createElement(PageDotButton, { active: active, onClick: onClick, "aria-label": `Go to page ${index + 1}` }));
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFBhZ2VEb3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jYXJvdXNlbC1jb21wb25lbnQvRGVmYXVsdFBhZ2VEb3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBUXpDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBMkIsQ0FBQyxFQUNyRCxNQUFNLEVBQ04sT0FBTyxFQUNQLEtBQUssRUFDTixFQUFFLEVBQUUsQ0FBQyxDQUNKLG9CQUFDLGFBQWEsSUFDWixNQUFNLEVBQUUsTUFBTSxFQUNkLE9BQU8sRUFBRSxPQUFPLGdCQUNKLGNBQWMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUNyQyxDQUNILENBQUMifQ==
@@ -1,163 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import { CarouselComponent } from '../index';
5
- describe('CarouselComponent', () => {
6
- const mockItems = [
7
- React.createElement("div", { key: "1" }, "Item 1"),
8
- React.createElement("div", { key: "2" }, "Item 2"),
9
- React.createElement("div", { key: "3" }, "Item 3"),
10
- React.createElement("div", { key: "4" }, "Item 4")
11
- ];
12
- beforeEach(() => {
13
- Element.prototype.scrollTo = jest.fn();
14
- });
15
- it('renders all items', () => {
16
- render(React.createElement(CarouselComponent, { items: mockItems }));
17
- expect(screen.getByText('Item 1')).toBeInTheDocument();
18
- expect(screen.getByText('Item 2')).toBeInTheDocument();
19
- expect(screen.getByText('Item 3')).toBeInTheDocument();
20
- expect(screen.getByText('Item 4')).toBeInTheDocument();
21
- });
22
- it('renders navigation arrows by default', () => {
23
- render(React.createElement(CarouselComponent, { items: mockItems }));
24
- const prevButton = screen.getByLabelText('Previous items');
25
- const nextButton = screen.getByLabelText('Next items');
26
- expect(prevButton).toBeInTheDocument();
27
- expect(nextButton).toBeInTheDocument();
28
- });
29
- it('hides navigation arrows when showArrows is false', () => {
30
- render(React.createElement(CarouselComponent, { items: mockItems, showArrows: false }));
31
- const buttons = screen.getAllByRole('button');
32
- expect(buttons.length).toBe(2);
33
- });
34
- it('renders pagination dots by default', () => {
35
- render(React.createElement(CarouselComponent, { items: mockItems }));
36
- const dots = screen
37
- .getAllByRole('button')
38
- .filter(btn => !btn.querySelector('svg'));
39
- expect(dots.length).toBeGreaterThan(0);
40
- });
41
- it('hides pagination dots when showDots is false', () => {
42
- render(React.createElement(CarouselComponent, { items: mockItems, showDots: false, showArrows: false }));
43
- const buttons = screen.queryAllByRole('button');
44
- expect(buttons.length).toBe(0);
45
- });
46
- it('applies custom className', () => {
47
- const { container } = render(React.createElement(CarouselComponent, { items: mockItems, className: "custom-carousel" }));
48
- expect(container.querySelector('.custom-carousel')).toBeInTheDocument();
49
- });
50
- it('handles itemsPerPage option', () => {
51
- render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 1 } }));
52
- const dots = screen
53
- .getAllByRole('button')
54
- .filter(btn => !btn.querySelector('svg'));
55
- expect(dots.length).toBe(4);
56
- });
57
- it('handles empty items array', () => {
58
- const { container } = render(React.createElement(CarouselComponent, { items: [] }));
59
- expect(container.querySelector('[role="button"]')).not.toBeInTheDocument();
60
- });
61
- it('handles single item', () => {
62
- render(React.createElement(CarouselComponent, { items: [React.createElement("div", { key: "1" }, "Single Item")] }));
63
- expect(screen.getByText('Single Item')).toBeInTheDocument();
64
- });
65
- it('calls onPageChange callback when provided', () => {
66
- const onPageChange = jest.fn();
67
- render(React.createElement(CarouselComponent, { items: mockItems, options: { onPageChange } }));
68
- const nextButton = screen
69
- .getAllByRole('button')
70
- .find(btn => btn.querySelector('svg'));
71
- if (nextButton) {
72
- fireEvent.click(nextButton);
73
- expect(onPageChange).toHaveBeenCalled();
74
- }
75
- });
76
- it('renders with custom arrow component', () => {
77
- const CustomArrow = ({ direction }) => (React.createElement("button", null,
78
- "Custom ",
79
- direction));
80
- render(React.createElement(CarouselComponent, { items: mockItems, arrowComponent: CustomArrow }));
81
- const customArrows = screen.getAllByText(/Custom/);
82
- expect(customArrows.length).toBe(2);
83
- expect(customArrows[0]).toBeInTheDocument();
84
- });
85
- it('renders with custom dot component', () => {
86
- const CustomDot = ({ index }) => (React.createElement("button", null,
87
- "Dot ",
88
- index));
89
- render(React.createElement(CarouselComponent, { items: mockItems, dotComponent: CustomDot }));
90
- const customDots = screen.getAllByText(/Dot/);
91
- expect(customDots.length).toBe(2);
92
- expect(customDots[0]).toBeInTheDocument();
93
- });
94
- it('navigates to next page when next arrow is clicked', () => {
95
- render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
96
- const nextButton = screen.getByLabelText('Next items');
97
- fireEvent.click(nextButton);
98
- expect(Element.prototype.scrollTo).toHaveBeenCalled();
99
- });
100
- it('navigates to previous page when previous arrow is clicked', () => {
101
- render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
102
- const nextButton = screen.getByLabelText('Next items');
103
- const prevButton = screen.getByLabelText('Previous items');
104
- fireEvent.click(nextButton);
105
- fireEvent.click(prevButton);
106
- expect(Element.prototype.scrollTo).toHaveBeenCalled();
107
- });
108
- it('handles mouse drag events', () => {
109
- const { container } = render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
110
- const carouselRow = container.querySelector('div > div > div');
111
- if (carouselRow) {
112
- fireEvent.mouseDown(carouselRow, { pageX: 100 });
113
- fireEvent.mouseMove(carouselRow, { pageX: 50 });
114
- fireEvent.mouseUp(carouselRow);
115
- }
116
- expect(carouselRow).toBeInTheDocument();
117
- });
118
- it('disables previous arrow on first page', () => {
119
- render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
120
- const prevButton = screen.getByLabelText('Previous items');
121
- expect(prevButton).toBeDisabled();
122
- });
123
- it('renders correct number of page dots', () => {
124
- render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
125
- const dots = screen
126
- .getAllByRole('button')
127
- .filter(btn => !btn.querySelector('svg'));
128
- expect(dots.length).toBe(2);
129
- });
130
- it('handles page dot click', () => {
131
- render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
132
- const dots = screen
133
- .getAllByRole('button')
134
- .filter(btn => !btn.querySelector('svg'));
135
- if (dots[1]) {
136
- fireEvent.click(dots[1]);
137
- expect(Element.prototype.scrollTo).toHaveBeenCalled();
138
- }
139
- });
140
- it('hides dots when there is only one page', () => {
141
- render(React.createElement(CarouselComponent, { items: [React.createElement("div", { key: "1" }, "Item 1")], options: { itemsPerPage: 2 } }));
142
- const dots = screen
143
- .queryAllByRole('button')
144
- .filter(btn => !btn.querySelector('svg'));
145
- expect(dots.length).toBe(0);
146
- });
147
- it('handles mouse leave event during drag', () => {
148
- const { container } = render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
149
- const carouselRow = container.querySelector('div > div > div');
150
- if (carouselRow) {
151
- fireEvent.mouseDown(carouselRow, { pageX: 100 });
152
- fireEvent.mouseMove(carouselRow, { pageX: 50 });
153
- fireEvent.mouseLeave(carouselRow);
154
- }
155
- expect(carouselRow).toBeInTheDocument();
156
- });
157
- it('applies correct styles to carousel container', () => {
158
- const { container } = render(React.createElement(CarouselComponent, { items: mockItems }));
159
- const carouselContainer = container.firstChild;
160
- expect(carouselContainer).toBeInTheDocument();
161
- });
162
- });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWxDb21wb25lbnQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9fX3Rlc3RzX18vQ2Fyb3VzZWxDb21wb25lbnQudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsTUFBTSxTQUFTLEdBQUc7UUFDaEIsNkJBQUssR0FBRyxFQUFDLEdBQUcsYUFBYTtRQUN6Qiw2QkFBSyxHQUFHLEVBQUMsR0FBRyxhQUFhO1FBQ3pCLDZCQUFLLEdBQUcsRUFBQyxHQUFHLGFBQWE7UUFDekIsNkJBQUssR0FBRyxFQUFDLEdBQUcsYUFBYTtLQUMxQixDQUFDO0lBRUYsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDM0IsTUFBTSxDQUFDLG9CQUFDLGlCQUFpQixJQUFDLEtBQUssRUFBRSxTQUFTLEdBQUksQ0FBQyxDQUFDO1FBRWhELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkQs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