@times-components/ts-components 1.35.3 → 1.36.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.
- package/CHANGELOG.md +27 -0
- package/dist/components/recommended-articles/RecommendedArticles.d.ts +7 -0
- package/dist/components/recommended-articles/RecommendedArticles.js +23 -0
- package/dist/components/{styleguide/__tests__/styleguide.test.d.ts → recommended-articles/RecommendedArticles.stories.d.ts} +0 -0
- package/dist/components/recommended-articles/RecommendedArticles.stories.js +65 -0
- package/dist/components/{styleguide/styleguide.stories.d.ts → recommended-articles/__tests__/RecommendedArticles.test.d.ts} +0 -0
- package/dist/components/recommended-articles/__tests__/RecommendedArticles.test.js +67 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -3
- package/package.json +15 -15
- package/rnw.js +1 -1
- package/src/components/recommended-articles/RecommendedArticles.stories.tsx +82 -0
- package/src/components/recommended-articles/RecommendedArticles.tsx +59 -0
- package/src/components/recommended-articles/__tests__/RecommendedArticles.test.tsx +91 -0
- package/src/components/recommended-articles/__tests__/__snapshots__/RecommendedArticles.test.tsx.snap +71 -0
- package/src/index.ts +3 -22
- package/src/types/externs.d.ts +7 -0
- package/dist/components/styleguide/Styleguide.d.ts +0 -193
- package/dist/components/styleguide/Styleguide.js +0 -24
- package/dist/components/styleguide/__tests__/breakpoints.test.d.ts +0 -1
- package/dist/components/styleguide/__tests__/breakpoints.test.js +0 -46
- package/dist/components/styleguide/__tests__/styleguide.test.js +0 -48
- package/dist/components/styleguide/__tests__/themeFactory.test.d.ts +0 -1
- package/dist/components/styleguide/__tests__/themeFactory.test.js +0 -41
- package/dist/components/styleguide/breakpoints.d.ts +0 -37
- package/dist/components/styleguide/breakpoints.js +0 -42
- package/dist/components/styleguide/colours/colours.d.ts +0 -103
- package/dist/components/styleguide/colours/colours.js +0 -8
- package/dist/components/styleguide/colours/functional.d.ts +0 -32
- package/dist/components/styleguide/colours/functional.js +0 -33
- package/dist/components/styleguide/colours/section.d.ts +0 -68
- package/dist/components/styleguide/colours/section.js +0 -78
- package/dist/components/styleguide/components/Animations.d.ts +0 -6
- package/dist/components/styleguide/components/Animations.js +0 -19
- package/dist/components/styleguide/components/TcText.d.ts +0 -6
- package/dist/components/styleguide/components/TcText.js +0 -22
- package/dist/components/styleguide/components/TcView.d.ts +0 -6
- package/dist/components/styleguide/components/TcView.js +0 -21
- package/dist/components/styleguide/components/index.d.ts +0 -4
- package/dist/components/styleguide/components/index.js +0 -5
- package/dist/components/styleguide/fonts/font-factory.d.ts +0 -10
- package/dist/components/styleguide/fonts/font-factory.js +0 -12
- package/dist/components/styleguide/fonts/font-sizes.d.ts +0 -47
- package/dist/components/styleguide/fonts/font-sizes.js +0 -47
- package/dist/components/styleguide/fonts/font-styles.d.ts +0 -13
- package/dist/components/styleguide/fonts/font-styles.js +0 -13
- package/dist/components/styleguide/fonts/fonts.d.ts +0 -4
- package/dist/components/styleguide/fonts/fonts.js +0 -5
- package/dist/components/styleguide/helpers/storybookStyles.d.ts +0 -2
- package/dist/components/styleguide/helpers/storybookStyles.js +0 -54
- package/dist/components/styleguide/lineHeight.d.ts +0 -7
- package/dist/components/styleguide/lineHeight.js +0 -65
- package/dist/components/styleguide/scales.d.ts +0 -6
- package/dist/components/styleguide/scales.js +0 -6
- package/dist/components/styleguide/spacing.d.ts +0 -11
- package/dist/components/styleguide/spacing.js +0 -17
- package/dist/components/styleguide/styleguide.stories.js +0 -71
- package/dist/components/styleguide/themeFactory.d.ts +0 -8
- package/dist/components/styleguide/themeFactory.js +0 -59
- package/src/components/styleguide/Styleguide.tsx +0 -54
- package/src/components/styleguide/__tests__/breakpoints.test.ts +0 -67
- package/src/components/styleguide/__tests__/styleguide.test.tsx +0 -68
- package/src/components/styleguide/__tests__/themeFactory.test.ts +0 -44
- package/src/components/styleguide/breakpoints.tsx +0 -52
- package/src/components/styleguide/colours/colours.tsx +0 -8
- package/src/components/styleguide/colours/functional.tsx +0 -32
- package/src/components/styleguide/colours/section.tsx +0 -81
- package/src/components/styleguide/components/Animations.tsx +0 -22
- package/src/components/styleguide/components/TcText.tsx +0 -32
- package/src/components/styleguide/components/TcView.tsx +0 -27
- package/src/components/styleguide/components/index.tsx +0 -5
- package/src/components/styleguide/fonts/font-factory.tsx +0 -18
- package/src/components/styleguide/fonts/font-sizes.tsx +0 -46
- package/src/components/styleguide/fonts/font-styles.tsx +0 -12
- package/src/components/styleguide/fonts/fonts.tsx +0 -5
- package/src/components/styleguide/helpers/storybookStyles.ts +0 -55
- package/src/components/styleguide/lineHeight.tsx +0 -73
- package/src/components/styleguide/scales.tsx +0 -5
- package/src/components/styleguide/spacing.tsx +0 -19
- package/src/components/styleguide/styleguide.stories.tsx +0 -143
- package/src/components/styleguide/themeFactory.tsx +0 -82
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { showcaseConverter } from '@times-components/storybook';
|
|
4
|
+
import { MockedProvider } from '@times-components/provider-test-tools';
|
|
5
|
+
import { recommendations } from '@times-components/provider-queries';
|
|
6
|
+
|
|
7
|
+
import analyticsStream from '../../fixtures/analytics-actions/analytics-actions';
|
|
8
|
+
import { RecommendedArticles } from './RecommendedArticles';
|
|
9
|
+
|
|
10
|
+
const mocks = [
|
|
11
|
+
{
|
|
12
|
+
delay: 1000,
|
|
13
|
+
request: {
|
|
14
|
+
query: recommendations,
|
|
15
|
+
variables: {
|
|
16
|
+
publisher: 'TIMES',
|
|
17
|
+
recomArgs: {
|
|
18
|
+
userId: '1234',
|
|
19
|
+
articleId: '94a01926-719a-11ec-aacf-0736e08b15cd'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
result: {
|
|
24
|
+
data: {
|
|
25
|
+
recommendations: {
|
|
26
|
+
__typename: 'Recommendations',
|
|
27
|
+
leadAsset: 'null',
|
|
28
|
+
articles: [
|
|
29
|
+
{
|
|
30
|
+
__typename: 'UniversalArticle',
|
|
31
|
+
headline:
|
|
32
|
+
'Whole world is against us, says top Russian strategist',
|
|
33
|
+
id: 'a9ffb7cc-d5d1-11ec-bb99-1bcd45646516',
|
|
34
|
+
media: {
|
|
35
|
+
__typename: 'Image'
|
|
36
|
+
},
|
|
37
|
+
slug:
|
|
38
|
+
'were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel',
|
|
39
|
+
url:
|
|
40
|
+
'https://www.staging-thetimes.co.uk/article/were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel-lhnvsfj33'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
__typename: 'UniversalArticle',
|
|
44
|
+
headline: 'Vardys leave court with swipe at Wayne Rooney',
|
|
45
|
+
id: 'f3d730a0-d5c2-11ec-8585-951ab3afb4d2',
|
|
46
|
+
media: {
|
|
47
|
+
__typename: 'Image'
|
|
48
|
+
},
|
|
49
|
+
slug:
|
|
50
|
+
'wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time',
|
|
51
|
+
url:
|
|
52
|
+
'https://www.staging-thetimes.co.uk/article/wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time-wlzvxklc6'
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
const recarticles = {
|
|
62
|
+
children: [
|
|
63
|
+
{
|
|
64
|
+
component: () => (
|
|
65
|
+
<MockedProvider mocks={mocks}>
|
|
66
|
+
<RecommendedArticles
|
|
67
|
+
articleId="94a01926-719a-11ec-aacf-0736e08b15cd"
|
|
68
|
+
section="News"
|
|
69
|
+
analyticsStream={analyticsStream}
|
|
70
|
+
/>
|
|
71
|
+
</MockedProvider>
|
|
72
|
+
),
|
|
73
|
+
|
|
74
|
+
name: 'Recommended Articles',
|
|
75
|
+
platform: 'web',
|
|
76
|
+
type: 'story'
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
name: 'Typescript Component/Recommended Articles'
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
showcaseConverter(module, recarticles);
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import RelatedArticles from '@times-components/related-articles';
|
|
4
|
+
import { GetRecommendedArticles } from '@times-components/provider';
|
|
5
|
+
|
|
6
|
+
import { RelatedArticleSliceType } from '../../types/related-article-slice';
|
|
7
|
+
|
|
8
|
+
import { Placeholder } from '@times-components/image';
|
|
9
|
+
|
|
10
|
+
type RecommendedArticlesProps = {
|
|
11
|
+
articleId: string;
|
|
12
|
+
section: string;
|
|
13
|
+
analyticsStream?: (evt: any) => void;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const RecommendedArticles = ({
|
|
17
|
+
articleId,
|
|
18
|
+
section,
|
|
19
|
+
analyticsStream
|
|
20
|
+
}: RecommendedArticlesProps) => {
|
|
21
|
+
return (
|
|
22
|
+
<GetRecommendedArticles
|
|
23
|
+
publisher={'TIMES'}
|
|
24
|
+
recomArgs={{ userId: '1234', articleId }}
|
|
25
|
+
ssr={false}
|
|
26
|
+
debounceTimeMs={0}
|
|
27
|
+
>
|
|
28
|
+
{({ isLoading, error, recommendations }: any) => {
|
|
29
|
+
if (error) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (isLoading || !recommendations) {
|
|
34
|
+
return (
|
|
35
|
+
<div className="placeholder">
|
|
36
|
+
<Placeholder />
|
|
37
|
+
</div>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const slice: RelatedArticleSliceType = {
|
|
42
|
+
sliceName: 'StandardSlice',
|
|
43
|
+
items: recommendations
|
|
44
|
+
? recommendations.articles.map((article: any) => ({ article }))
|
|
45
|
+
: []
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<RelatedArticles
|
|
50
|
+
heading={`Today's ${section}`}
|
|
51
|
+
slice={slice}
|
|
52
|
+
isVisible
|
|
53
|
+
analyticsStream={analyticsStream}
|
|
54
|
+
/>
|
|
55
|
+
);
|
|
56
|
+
}}
|
|
57
|
+
</GetRecommendedArticles>
|
|
58
|
+
);
|
|
59
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, cleanup } from '@testing-library/react';
|
|
3
|
+
|
|
4
|
+
import { RecommendedArticles } from '../RecommendedArticles';
|
|
5
|
+
|
|
6
|
+
import { MockedProvider } from '@times-components/provider-test-tools';
|
|
7
|
+
import { recommendations } from '@times-components/provider-queries';
|
|
8
|
+
|
|
9
|
+
const mocks = [
|
|
10
|
+
{
|
|
11
|
+
delay: 1000,
|
|
12
|
+
request: {
|
|
13
|
+
query: recommendations,
|
|
14
|
+
variables: {
|
|
15
|
+
publisher: 'TIMES',
|
|
16
|
+
recomArgs: {
|
|
17
|
+
userId: '1234',
|
|
18
|
+
articleId: '94a01926-719a-11ec-aacf-0736e08b15cd'
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
result: {
|
|
23
|
+
data: {
|
|
24
|
+
recommendations: {
|
|
25
|
+
__typename: 'Recommendations',
|
|
26
|
+
leadAsset: 'null',
|
|
27
|
+
articles: [
|
|
28
|
+
{
|
|
29
|
+
__typename: 'UniversalArticle',
|
|
30
|
+
headline:
|
|
31
|
+
'Whole world is against us, says top Russian strategist',
|
|
32
|
+
id: 'a9ffb7cc-d5d1-11ec-bb99-1bcd45646516',
|
|
33
|
+
media: {
|
|
34
|
+
__typename: 'Image'
|
|
35
|
+
},
|
|
36
|
+
slug:
|
|
37
|
+
'were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel',
|
|
38
|
+
url:
|
|
39
|
+
'https://www.staging-thetimes.co.uk/article/were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel-lhnvsfj33'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
__typename: 'UniversalArticle',
|
|
43
|
+
headline: 'Vardys leave court with swipe at Wayne Rooney',
|
|
44
|
+
id: 'f3d730a0-d5c2-11ec-8585-951ab3afb4d2',
|
|
45
|
+
media: {
|
|
46
|
+
__typename: 'Image'
|
|
47
|
+
},
|
|
48
|
+
slug:
|
|
49
|
+
'wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time',
|
|
50
|
+
url:
|
|
51
|
+
'https://www.staging-thetimes.co.uk/article/wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time-wlzvxklc6'
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
describe('Recommended Articles', () => {
|
|
61
|
+
afterEach(() => {
|
|
62
|
+
jest.clearAllMocks();
|
|
63
|
+
cleanup();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('it renders', () => {
|
|
67
|
+
const { asFragment } = render(
|
|
68
|
+
<MockedProvider mocks={mocks}>
|
|
69
|
+
<RecommendedArticles
|
|
70
|
+
articleId="94a01926-719a-11ec-aacf-0736e08b15cd"
|
|
71
|
+
section="News"
|
|
72
|
+
analyticsStream={jest.fn()}
|
|
73
|
+
/>
|
|
74
|
+
</MockedProvider>
|
|
75
|
+
);
|
|
76
|
+
expect(asFragment()).toMatchSnapshot();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('degrades gracefully', () => {
|
|
80
|
+
const { asFragment } = render(
|
|
81
|
+
<MockedProvider mocks={mocks}>
|
|
82
|
+
<RecommendedArticles
|
|
83
|
+
articleId=""
|
|
84
|
+
section="News"
|
|
85
|
+
analyticsStream={jest.fn()}
|
|
86
|
+
/>
|
|
87
|
+
</MockedProvider>
|
|
88
|
+
);
|
|
89
|
+
expect(asFragment()).toMatchSnapshot();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Recommended Articles degrades gracefully 1`] = `
|
|
4
|
+
<DocumentFragment>
|
|
5
|
+
<div
|
|
6
|
+
class="placeholder"
|
|
7
|
+
>
|
|
8
|
+
<div
|
|
9
|
+
class="tc-view__TcView-nuazoi-0 fPjBcr"
|
|
10
|
+
height="100%"
|
|
11
|
+
style="align-items: center; background-color: rgb(237, 237, 237); bottom: 0px; justify-content: center; left: 0px; position: absolute; right: 0px; top: 0px; z-index: 0; border-radius: 0;"
|
|
12
|
+
width="100%"
|
|
13
|
+
>
|
|
14
|
+
<svg
|
|
15
|
+
height="auto"
|
|
16
|
+
style="max-width: 25%; max-height: 50%;"
|
|
17
|
+
version="1.1"
|
|
18
|
+
viewBox="145 50 108 120"
|
|
19
|
+
width="100%"
|
|
20
|
+
>
|
|
21
|
+
<g
|
|
22
|
+
fill="none"
|
|
23
|
+
fill-rule="evenodd"
|
|
24
|
+
stroke="none"
|
|
25
|
+
stroke-width="1"
|
|
26
|
+
>
|
|
27
|
+
<path
|
|
28
|
+
d="M211.26076,54 L211.231367,54 L147.67512,54 L145,85.7081465 L146.922096,86.4489102 C146.922096,86.4489102 164.867589,68.1355181 168.301115,65.0001546 C171.728017,61.8689133 174.237132,61.0885763 176.436179,60.3527593 C180.998206,59.169681 185.977937,59.2150255 185.977937,59.2150255 L186.109581,59.2150255 L186.109581,156.560932 L169.259886,164.473953 L169.259886,166 L228.735147,166 L228.735147,164.473953 L211.889177,156.560932 L211.889177,59.2150255 L212.01751,59.2150255 C212.01751,59.2150255 216.992272,59.169681 221.558854,60.3527593 C223.757072,61.0885763 226.266601,61.8689133 229.691848,65.0001546 C233.130341,68.1355181 251.071695,86.4489102 251.071695,86.4489102 L253,85.7081465 L250.317842,54 L211.270695,54 L211.242545,54"
|
|
29
|
+
fill="#FFFFFF"
|
|
30
|
+
/>
|
|
31
|
+
</g>
|
|
32
|
+
</svg>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</DocumentFragment>
|
|
36
|
+
`;
|
|
37
|
+
|
|
38
|
+
exports[`Recommended Articles it renders 1`] = `
|
|
39
|
+
<DocumentFragment>
|
|
40
|
+
<div
|
|
41
|
+
class="placeholder"
|
|
42
|
+
>
|
|
43
|
+
<div
|
|
44
|
+
class="tc-view__TcView-nuazoi-0 fPjBcr"
|
|
45
|
+
height="100%"
|
|
46
|
+
style="align-items: center; background-color: rgb(237, 237, 237); bottom: 0px; justify-content: center; left: 0px; position: absolute; right: 0px; top: 0px; z-index: 0; border-radius: 0;"
|
|
47
|
+
width="100%"
|
|
48
|
+
>
|
|
49
|
+
<svg
|
|
50
|
+
height="auto"
|
|
51
|
+
style="max-width: 25%; max-height: 50%;"
|
|
52
|
+
version="1.1"
|
|
53
|
+
viewBox="145 50 108 120"
|
|
54
|
+
width="100%"
|
|
55
|
+
>
|
|
56
|
+
<g
|
|
57
|
+
fill="none"
|
|
58
|
+
fill-rule="evenodd"
|
|
59
|
+
stroke="none"
|
|
60
|
+
stroke-width="1"
|
|
61
|
+
>
|
|
62
|
+
<path
|
|
63
|
+
d="M211.26076,54 L211.231367,54 L147.67512,54 L145,85.7081465 L146.922096,86.4489102 C146.922096,86.4489102 164.867589,68.1355181 168.301115,65.0001546 C171.728017,61.8689133 174.237132,61.0885763 176.436179,60.3527593 C180.998206,59.169681 185.977937,59.2150255 185.977937,59.2150255 L186.109581,59.2150255 L186.109581,156.560932 L169.259886,164.473953 L169.259886,166 L228.735147,166 L228.735147,164.473953 L211.889177,156.560932 L211.889177,59.2150255 L212.01751,59.2150255 C212.01751,59.2150255 216.992272,59.169681 221.558854,60.3527593 C223.757072,61.0885763 226.266601,61.8689133 229.691848,65.0001546 C233.130341,68.1355181 251.071695,86.4489102 251.071695,86.4489102 L253,85.7081465 L250.317842,54 L211.270695,54 L211.242545,54"
|
|
64
|
+
fill="#FFFFFF"
|
|
65
|
+
/>
|
|
66
|
+
</g>
|
|
67
|
+
</svg>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</DocumentFragment>
|
|
71
|
+
`;
|
package/src/index.ts
CHANGED
|
@@ -70,6 +70,9 @@ export {
|
|
|
70
70
|
export {
|
|
71
71
|
RelatedArticleSlice
|
|
72
72
|
} from './components/related-article-slice/RelatedArticleSlice';
|
|
73
|
+
export {
|
|
74
|
+
RecommendedArticles
|
|
75
|
+
} from './components/recommended-articles/RecommendedArticles';
|
|
73
76
|
export {
|
|
74
77
|
LatestFromSection
|
|
75
78
|
} from './components/latest-from-section/LatestFromSection';
|
|
@@ -109,28 +112,6 @@ export {
|
|
|
109
112
|
|
|
110
113
|
export { UpdatedTimeProvider } from './helpers/time/UpdatedTimeProvider';
|
|
111
114
|
|
|
112
|
-
// styleguide
|
|
113
|
-
export {
|
|
114
|
-
default as styleguide,
|
|
115
|
-
Animations,
|
|
116
|
-
breakpoints,
|
|
117
|
-
colours,
|
|
118
|
-
editionBreakpoints,
|
|
119
|
-
editionBreakpointWidths,
|
|
120
|
-
editionMaxWidth,
|
|
121
|
-
sliceContentMaxWidth,
|
|
122
|
-
fonts,
|
|
123
|
-
fontFactory,
|
|
124
|
-
fontSizes,
|
|
125
|
-
getEditionBreakpoint,
|
|
126
|
-
lineHeight,
|
|
127
|
-
scales,
|
|
128
|
-
spacing,
|
|
129
|
-
globalSpacingStyles,
|
|
130
|
-
tabletRowPadding,
|
|
131
|
-
themeFactory
|
|
132
|
-
} from './components/styleguide/Styleguide';
|
|
133
|
-
|
|
134
115
|
export {
|
|
135
116
|
default as safeDecodeURIComponent
|
|
136
117
|
} from './utils/safeDecodeURIComponent';
|
package/src/types/externs.d.ts
CHANGED
|
@@ -180,12 +180,19 @@ declare module '@times-components/provider' {
|
|
|
180
180
|
ssr: boolean;
|
|
181
181
|
debounceTimeMs: number;
|
|
182
182
|
}>;
|
|
183
|
+
export const GetRecommendedArticles: React.FC<{
|
|
184
|
+
publisher: string;
|
|
185
|
+
recomArgs: any;
|
|
186
|
+
ssr: boolean;
|
|
187
|
+
debounceTimeMs: number;
|
|
188
|
+
}>;
|
|
183
189
|
}
|
|
184
190
|
|
|
185
191
|
declare module '@times-components/provider-queries' {
|
|
186
192
|
import { DocumentNode } from 'graphql';
|
|
187
193
|
export const getNewsletter: DocumentNode;
|
|
188
194
|
export const subscribeNewsletter: DocumentNode;
|
|
195
|
+
export const recommendations: DocumentNode;
|
|
189
196
|
}
|
|
190
197
|
|
|
191
198
|
declare module '@times-components/provider-test-tools' {
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import 'react';
|
|
2
|
-
import colours from './colours/colours';
|
|
3
|
-
import Animations from './components/Animations';
|
|
4
|
-
import breakpoints, { editionBreakpoints, editionMaxWidth, getEditionBreakpoint, editionBreakpointWidths, sliceContentMaxWidth } from './breakpoints';
|
|
5
|
-
import lineHeight from './lineHeight';
|
|
6
|
-
import { timesFontFactory, timesFontSizes, fontStyles } from './fonts/fonts';
|
|
7
|
-
import themeFactory from './themeFactory';
|
|
8
|
-
import scales from './scales';
|
|
9
|
-
import spacing, { globalSpacingStyles } from './spacing';
|
|
10
|
-
declare const nativeTablet: number, nativeTabletWide: number;
|
|
11
|
-
export declare const tabletRowPadding = 20;
|
|
12
|
-
declare const _default: () => {
|
|
13
|
-
Animations: {
|
|
14
|
-
FadeIn: import("styled-components").StyledComponent<import("react").FC<{
|
|
15
|
-
style?: import("react").CSSProperties | undefined;
|
|
16
|
-
}>, any, {}, never>;
|
|
17
|
-
};
|
|
18
|
-
colours: {
|
|
19
|
-
functional: {
|
|
20
|
-
action: string;
|
|
21
|
-
actionPressed: string;
|
|
22
|
-
articleFlagExclusive: string;
|
|
23
|
-
articleFlagNew: string;
|
|
24
|
-
articleFlagUpdated: string;
|
|
25
|
-
backgroundPrimary: string;
|
|
26
|
-
backgroundSecondary: string;
|
|
27
|
-
black: string;
|
|
28
|
-
border: string;
|
|
29
|
-
brandColour: string;
|
|
30
|
-
bullet: string;
|
|
31
|
-
contrast: string;
|
|
32
|
-
darkSupplement: string;
|
|
33
|
-
greyLabel: string;
|
|
34
|
-
greyStickyBarBoxShadow: string;
|
|
35
|
-
greyStickyBarBorderBottom: string;
|
|
36
|
-
gutter: string;
|
|
37
|
-
keyline: string;
|
|
38
|
-
modalBackground: string;
|
|
39
|
-
newsletterPuffBackground: string;
|
|
40
|
-
overlayGradientEnd: string;
|
|
41
|
-
overlayGradientFallback: string;
|
|
42
|
-
overlayGradientStart: string;
|
|
43
|
-
primary: string;
|
|
44
|
-
secondary: string;
|
|
45
|
-
tertiary: string;
|
|
46
|
-
transparentBlack: string;
|
|
47
|
-
transparentWhite: string;
|
|
48
|
-
white: string;
|
|
49
|
-
whiteGrey: string;
|
|
50
|
-
};
|
|
51
|
-
secondarySectionColours: {
|
|
52
|
-
'The Sunday Times Magazine': string;
|
|
53
|
-
thesundaytimesmagazine: string;
|
|
54
|
-
};
|
|
55
|
-
section: {
|
|
56
|
-
'Arts & Features': string;
|
|
57
|
-
'Bricks & Mortar': string;
|
|
58
|
-
Business: string;
|
|
59
|
-
Comment: string;
|
|
60
|
-
Culture: string;
|
|
61
|
-
Driving: string;
|
|
62
|
-
Focus: string;
|
|
63
|
-
Gardening: string;
|
|
64
|
-
Home: string;
|
|
65
|
-
Ireland: string;
|
|
66
|
-
Law: string;
|
|
67
|
-
Money: string;
|
|
68
|
-
News: string;
|
|
69
|
-
'News Review': string;
|
|
70
|
-
Puzzles: string;
|
|
71
|
-
Register: string;
|
|
72
|
-
'Saturday Review': string;
|
|
73
|
-
Scotland: string;
|
|
74
|
-
Sport: string;
|
|
75
|
-
Style: string;
|
|
76
|
-
'Tech & Games': string;
|
|
77
|
-
'The Dish': string;
|
|
78
|
-
'The Game': string;
|
|
79
|
-
'The Sunday Times Magazine': string;
|
|
80
|
-
'The Times Magazine': string;
|
|
81
|
-
Times2: string;
|
|
82
|
-
"Today's Magazines": string;
|
|
83
|
-
Travel: string;
|
|
84
|
-
Weekend: string;
|
|
85
|
-
World: string;
|
|
86
|
-
artsfeatures: string;
|
|
87
|
-
bricksmortar: string;
|
|
88
|
-
business: string;
|
|
89
|
-
comment: string;
|
|
90
|
-
culture: string;
|
|
91
|
-
default: string;
|
|
92
|
-
defcon: string;
|
|
93
|
-
driving: string;
|
|
94
|
-
focus: string;
|
|
95
|
-
gardening: string;
|
|
96
|
-
home: string;
|
|
97
|
-
ireland: string;
|
|
98
|
-
law: string;
|
|
99
|
-
money: string;
|
|
100
|
-
news: string;
|
|
101
|
-
newsreview: string;
|
|
102
|
-
puzzle: string;
|
|
103
|
-
register: string;
|
|
104
|
-
saturdayreview: string;
|
|
105
|
-
scotland: string;
|
|
106
|
-
sport: string;
|
|
107
|
-
style: string;
|
|
108
|
-
techgames: string;
|
|
109
|
-
thedish: string;
|
|
110
|
-
thegame: string;
|
|
111
|
-
thesundaytimesmagazine: string;
|
|
112
|
-
thetimesmagazine: string;
|
|
113
|
-
times2: string;
|
|
114
|
-
todaysmagazines: string;
|
|
115
|
-
travel: string;
|
|
116
|
-
weekend: string;
|
|
117
|
-
world: string;
|
|
118
|
-
};
|
|
119
|
-
};
|
|
120
|
-
fontFactory: ({ font, fontSize }: {
|
|
121
|
-
font: "body" | "headline" | "bodyRegular" | "bodyRegularSmallCaps" | "cultureMagazine" | "dropCap" | "headlineRegular" | "stMagazine" | "styleMagazine" | "supporting";
|
|
122
|
-
fontSize: "body" | "button" | "caption" | "link" | "meta" | "headline" | "articleHeadline" | "articleMeta" | "bodyMobile" | "cardHeadline" | "cardMeta" | "cardMetaMobile" | "commentsGuidelines" | "commentsHeadline" | "credits" | "imageOverlayTextSmall" | "infoTitle" | "keyFactsTitle" | "leadHeadline" | "newsletterPuffLabel" | "newsletterPuffHeadline" | "newsletterPuffCopy" | "pageComponentHeadline" | "pageHeadline" | "pageHeadlineLarge" | "pagingMeta" | "puffLink" | "secondary" | "sliceHeadline" | "smallestHeadline" | "smallHeadline" | "strapline" | "teaser" | "tertiary" | "tileLeadHeadline" | "heading2Mobile" | "heading3Mobile" | "heading4Mobile" | "heading5Mobile" | "infoSubText" | "heading2" | "heading3" | "heading4" | "heading5";
|
|
123
|
-
}) => {
|
|
124
|
-
fontFamily: string;
|
|
125
|
-
fontSize: number;
|
|
126
|
-
lineHeight: {};
|
|
127
|
-
};
|
|
128
|
-
fonts: {
|
|
129
|
-
body: string;
|
|
130
|
-
bodyRegular: string;
|
|
131
|
-
bodyRegularSmallCaps: string;
|
|
132
|
-
cultureMagazine: string;
|
|
133
|
-
dropCap: string;
|
|
134
|
-
headline: string;
|
|
135
|
-
headlineRegular: string;
|
|
136
|
-
stMagazine: string;
|
|
137
|
-
styleMagazine: string;
|
|
138
|
-
supporting: string;
|
|
139
|
-
};
|
|
140
|
-
fontSizes: {
|
|
141
|
-
articleHeadline: number;
|
|
142
|
-
articleMeta: number;
|
|
143
|
-
body: number;
|
|
144
|
-
bodyMobile: number;
|
|
145
|
-
button: number;
|
|
146
|
-
caption: number;
|
|
147
|
-
cardHeadline: number;
|
|
148
|
-
cardMeta: number;
|
|
149
|
-
cardMetaMobile: number;
|
|
150
|
-
commentsGuidelines: number;
|
|
151
|
-
commentsHeadline: number;
|
|
152
|
-
credits: number;
|
|
153
|
-
headline: number;
|
|
154
|
-
imageOverlayTextSmall: number;
|
|
155
|
-
infoTitle: number;
|
|
156
|
-
keyFactsTitle: number;
|
|
157
|
-
leadHeadline: number;
|
|
158
|
-
link: number;
|
|
159
|
-
meta: number;
|
|
160
|
-
newsletterPuffLabel: number;
|
|
161
|
-
newsletterPuffHeadline: number;
|
|
162
|
-
newsletterPuffCopy: number;
|
|
163
|
-
pageComponentHeadline: number;
|
|
164
|
-
pageHeadline: number;
|
|
165
|
-
pageHeadlineLarge: number;
|
|
166
|
-
pagingMeta: number;
|
|
167
|
-
puffLink: number;
|
|
168
|
-
secondary: number;
|
|
169
|
-
sliceHeadline: number;
|
|
170
|
-
smallestHeadline: number;
|
|
171
|
-
smallHeadline: number;
|
|
172
|
-
strapline: number;
|
|
173
|
-
teaser: number;
|
|
174
|
-
tertiary: number;
|
|
175
|
-
tileLeadHeadline: number;
|
|
176
|
-
heading2Mobile: number;
|
|
177
|
-
heading3Mobile: number;
|
|
178
|
-
heading4Mobile: number;
|
|
179
|
-
heading5Mobile: number;
|
|
180
|
-
infoSubText: number;
|
|
181
|
-
heading2: number;
|
|
182
|
-
heading3: number;
|
|
183
|
-
heading4: number;
|
|
184
|
-
heading5: number;
|
|
185
|
-
};
|
|
186
|
-
lineHeight: ({ font, fontSize }: {
|
|
187
|
-
font: string;
|
|
188
|
-
fontSize: string;
|
|
189
|
-
}) => {};
|
|
190
|
-
spacing: (multiple: number) => string;
|
|
191
|
-
};
|
|
192
|
-
export default _default;
|
|
193
|
-
export { Animations, breakpoints, colours, editionBreakpoints, editionBreakpointWidths, editionMaxWidth, sliceContentMaxWidth, fontStyles as fonts, timesFontFactory as fontFactory, timesFontSizes as fontSizes, getEditionBreakpoint, lineHeight, scales, spacing, globalSpacingStyles, nativeTablet as tabletWidth, nativeTabletWide as tabletWidthMax, themeFactory };
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import 'react';
|
|
2
|
-
import colours from './colours/colours';
|
|
3
|
-
import Animations from './components/Animations';
|
|
4
|
-
import breakpoints, { editionBreakpoints, editionMaxWidth, getEditionBreakpoint, editionBreakpointWidths, sliceContentMaxWidth } from './breakpoints';
|
|
5
|
-
import lineHeight from './lineHeight';
|
|
6
|
-
import { timesFontFactory, timesFontSizes, fontStyles } from './fonts/fonts';
|
|
7
|
-
import themeFactory from './themeFactory';
|
|
8
|
-
import scales from './scales';
|
|
9
|
-
import spacing, { globalSpacingStyles } from './spacing';
|
|
10
|
-
const { nativeTablet, nativeTabletWide } = breakpoints;
|
|
11
|
-
export const tabletRowPadding = 20;
|
|
12
|
-
export default () => {
|
|
13
|
-
return {
|
|
14
|
-
Animations,
|
|
15
|
-
colours,
|
|
16
|
-
fontFactory: timesFontFactory,
|
|
17
|
-
fonts: fontStyles,
|
|
18
|
-
fontSizes: timesFontSizes,
|
|
19
|
-
lineHeight,
|
|
20
|
-
spacing
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
export { Animations, breakpoints, colours, editionBreakpoints, editionBreakpointWidths, editionMaxWidth, sliceContentMaxWidth, fontStyles as fonts, timesFontFactory as fontFactory, timesFontSizes as fontSizes, getEditionBreakpoint, lineHeight, scales, spacing, globalSpacingStyles, nativeTablet as tabletWidth, nativeTabletWide as tabletWidthMax, themeFactory };
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3R5bGVndWlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3N0eWxlZ3VpZGUvU3R5bGVndWlkZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLENBQUM7QUFDZixPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRCxPQUFPLFdBQVcsRUFBRSxFQUNsQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3JCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFDOUIsT0FBTyxPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6RCxNQUFNLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsV0FBVyxDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUVuQyxlQUFlLEdBQUcsRUFBRTtJQUNsQixPQUFPO1FBQ0wsVUFBVTtRQUNWLE9BQU87UUFDUCxXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLEtBQUssRUFBRSxVQUFVO1FBQ2pCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFVBQVU7UUFDVixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFDTCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsVUFBVSxJQUFJLEtBQUssRUFDbkIsZ0JBQWdCLElBQUksV0FBVyxFQUMvQixjQUFjLElBQUksU0FBUyxFQUMzQixvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLE1BQU0sRUFDTixPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLFlBQVksSUFBSSxXQUFXLEVBQzNCLGdCQUFnQixJQUFJLGNBQWMsRUFDbEMsWUFBWSxFQUNiLENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/react';
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import '@testing-library/react';
|
|
2
|
-
import breakpoints, { editionBreakpointWidths, editionBreakpoints } from '../breakpoints';
|
|
3
|
-
import { getEditionBreakpoint, sliceContentMaxWidth, editionMaxWidth, globalSpacingStyles, editionBreakpointWidths as styleguideEditionBreakpointWidths, editionBreakpoints as styleguideEditionBreakpoints } from '../Styleguide';
|
|
4
|
-
describe('breakpoints', () => {
|
|
5
|
-
it('should return correct globalSpacingStyles value', () => {
|
|
6
|
-
expect(globalSpacingStyles).toEqual({
|
|
7
|
-
tabletHeadline: { marginBottom: 5 },
|
|
8
|
-
tabletTeaser: { marginTop: 5 }
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
it('should return correct sliceContentMaxWidth value', () => {
|
|
12
|
-
expect(sliceContentMaxWidth).toEqual(1180);
|
|
13
|
-
});
|
|
14
|
-
it('should return correct sliceContentMaxWidth value', () => {
|
|
15
|
-
expect(sliceContentMaxWidth).toEqual(1180);
|
|
16
|
-
});
|
|
17
|
-
it('should return correct editionBreakpointWidths value', () => {
|
|
18
|
-
expect(editionBreakpointWidths.wide).toEqual(1024);
|
|
19
|
-
expect(styleguideEditionBreakpointWidths.wide).toEqual(1024);
|
|
20
|
-
});
|
|
21
|
-
it('should return correct editionMaxWidth value', () => {
|
|
22
|
-
expect(editionMaxWidth).toEqual(1366);
|
|
23
|
-
});
|
|
24
|
-
it('should return correct breakpoint width value', () => {
|
|
25
|
-
expect(breakpoints.huge).toEqual(1320);
|
|
26
|
-
});
|
|
27
|
-
it('should retun correct editionBreakpoints value', () => {
|
|
28
|
-
expect(editionBreakpoints.huge).toEqual('huge');
|
|
29
|
-
expect(styleguideEditionBreakpoints.huge).toEqual('huge');
|
|
30
|
-
});
|
|
31
|
-
describe('getEditionBreakpoint()', () => {
|
|
32
|
-
it('should return correct getEditionBreakpoint value', () => {
|
|
33
|
-
expect(getEditionBreakpoint(600)).toEqual('small');
|
|
34
|
-
});
|
|
35
|
-
it('should return correct getEditionBreakpoint value', () => {
|
|
36
|
-
expect(getEditionBreakpoint(900)).toEqual('medium');
|
|
37
|
-
});
|
|
38
|
-
it('should return correct getEditionBreakpoint value', () => {
|
|
39
|
-
expect(getEditionBreakpoint(1100)).toEqual('wide');
|
|
40
|
-
});
|
|
41
|
-
it('should return correct getEditionBreakpoint value', () => {
|
|
42
|
-
expect(getEditionBreakpoint(1500)).toEqual('huge');
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3N0eWxlZ3VpZGUvX190ZXN0c19fL2JyZWFrcG9pbnRzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLFdBQVcsRUFBRSxFQUNsQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ25CLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLG1CQUFtQixFQUNuQix1QkFBdUIsSUFBSSxpQ0FBaUMsRUFDNUQsa0JBQWtCLElBQUksNEJBQTRCLEVBQ25ELE1BQU0sZUFBZSxDQUFDO0FBRXZCLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7UUFDekQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2xDLGNBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDbkMsWUFBWSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7UUFDMUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1FBQzdELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7UUFDckQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7UUFDdEMsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtZQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO1lBQzFELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7WUFDMUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtZQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|