@applicaster/zapp-react-native-ui-components 14.0.0-alpha.4011674803 → 14.0.0-alpha.4652343390

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 (31) hide show
  1. package/Components/AudioPlayer/{tv/index.tsx → AudioPlayer.tsx} +58 -23
  2. package/Components/AudioPlayer/{tv/Layout.tsx → AudioPlayerLayout.tsx} +68 -27
  3. package/Components/AudioPlayer/{mobile/__tests__/__snapshots__/audioPlayerMobileLayout.test.js.snap → __tests__/__snapshots__/audioPlayer.test.js.snap} +2 -2
  4. package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayerLayout.test.js.snap +66 -0
  5. package/Components/AudioPlayer/{tv/__tests__ → __tests__}/audioPlayer.test.js +3 -3
  6. package/Components/AudioPlayer/__tests__/audioPlayerLayout.test.js +26 -0
  7. package/Components/AudioPlayer/{tv/helpers.tsx → helpers.tsx} +2 -1
  8. package/Components/AudioPlayer/index.ts +1 -0
  9. package/Components/PlayerContainer/PlayerContainer.tsx +1 -1
  10. package/package.json +5 -5
  11. package/Components/AudioPlayer/index.tsx +0 -15
  12. package/Components/AudioPlayer/mobile/Layout.tsx +0 -61
  13. package/Components/AudioPlayer/mobile/__tests__/audioPlayerMobileLayout.test.js +0 -18
  14. package/Components/AudioPlayer/mobile/index.tsx +0 -28
  15. package/Components/AudioPlayer/tv/__tests__/__snapshots__/audioPlayer.test.js.snap +0 -170
  16. package/Components/AudioPlayer/types.ts +0 -40
  17. /package/Components/AudioPlayer/{tv/Artwork.tsx → Artwork.tsx} +0 -0
  18. /package/Components/AudioPlayer/{tv/Channel.tsx → Channel.tsx} +0 -0
  19. /package/Components/AudioPlayer/{tv/Runtime.tsx → Runtime.tsx} +0 -0
  20. /package/Components/AudioPlayer/{tv/Summary.tsx → Summary.tsx} +0 -0
  21. /package/Components/AudioPlayer/{tv/Title.tsx → Title.tsx} +0 -0
  22. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/Runtime.test.js +0 -0
  23. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/__snapshots__/Runtime.test.js.snap +0 -0
  24. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/__snapshots__/artWork.test.js.snap +0 -0
  25. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/__snapshots__/channel.test.js.snap +0 -0
  26. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/__snapshots__/summary.test.js.snap +0 -0
  27. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/__snapshots__/title.test.js.snap +0 -0
  28. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/artWork.test.js +0 -0
  29. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/channel.test.js +0 -0
  30. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/summary.test.js +0 -0
  31. /package/Components/AudioPlayer/{tv/__tests__ → __tests__}/title.test.js +0 -0
@@ -1,20 +1,58 @@
1
1
  import React, { useCallback, useMemo } from "react";
2
2
 
3
3
  import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils";
4
- import { getArtworkImage } from "@applicaster/zapp-react-native-utils/audioPlayerUtils";
5
4
 
6
- import { AudioPlayerTVLayout } from "./Layout";
5
+ import { imageSrcFromMediaItem } from "@applicaster/zapp-react-native-utils/configurationUtils";
7
6
 
7
+ import { AudioPlayerLayout } from "./AudioPlayerLayout";
8
8
  import { Channel } from "./Channel";
9
9
  import { Title } from "./Title";
10
10
  import { Summary } from "./Summary";
11
11
  import { Runtime } from "./Runtime";
12
12
  import { getPropertyFromEntryOrConfig } from "./helpers";
13
-
14
- import { Props } from "../types";
15
-
16
- export function AudioPlayerTV(props: Props) {
17
- const { audio_item, plugin_configuration, style = {} } = props;
13
+ import { ViewStyle } from "react-native";
14
+
15
+ type Props = {
16
+ audio_item: ZappEntry & {
17
+ extensions?: {
18
+ audio_player_artwork_aspect_ratio?: string;
19
+ audio_player_background_image?: string;
20
+ audio_player_background_color?: string;
21
+ audio_player_channel_icon?: string;
22
+ audio_player_title_color?: string;
23
+ audio_player_summary_color?: string;
24
+ audio_player_rtl?: boolean;
25
+ audio_player_background_image_default_color?: string;
26
+ start_time?: string;
27
+ end_time?: string;
28
+ };
29
+ };
30
+ plugin_configuration: {
31
+ audio_player_background_color?: string;
32
+ audio_player_title_color?: string;
33
+ audio_player_summary_color?: string;
34
+ audio_player_rtl?: string;
35
+ audio_player_background_image_default_color?: string;
36
+ audio_player_background_image?: string;
37
+ audio_player_artwork_aspect_ratio?: string;
38
+ lg_tv_audio_player_title_font_family?: string;
39
+ lg_tv_audio_player_title_font_size?: number;
40
+ lg_tv_audio_player_summary_font_family?: string;
41
+ lg_tv_audio_player_summary_font_size?: number;
42
+ samsung_tv_audio_player_title_font_family?: string;
43
+ samsung_tv_audio_player_title_font_size?: number;
44
+ samsung_tv_audio_player_summary_font_family?: string;
45
+ samsung_tv_audio_player_summary_font_size?: number;
46
+ tv_os_audio_player_title_font_family?: string;
47
+ tv_os_audio_player_title_font_size?: number;
48
+ tv_os_audio_player_summary_font_family?: string;
49
+ tv_os_audio_player_summary_font_size?: number;
50
+ };
51
+ style?: ViewStyle;
52
+ };
53
+
54
+ export function AudioPlayer(props: Props) {
55
+ const { audio_item, plugin_configuration, style } = props;
18
56
  const { extensions, title, summary } = audio_item;
19
57
 
20
58
  const getProp = useCallback(
@@ -26,15 +64,20 @@ export function AudioPlayerTV(props: Props) {
26
64
  );
27
65
 
28
66
  const config = useMemo(() => {
29
- // Checking if we are receiving items from the DSP
67
+ // Checking if we are recieving items from the DSP
30
68
  const titleColor = getProp("audio_player_title_color");
31
69
  const summaryColor = getProp("audio_player_summary_color");
32
70
  const backgroundColor = getProp("audio_player_background_color");
33
71
  const backgroundImage = getProp("audio_player_background_image");
72
+ const artworkAspectRatio = getProp("audio_player_artwork_aspect_ratio");
34
73
  const channelIcon = getProp("audio_player_channel_icon");
35
74
  const rtlFlag = getProp("audio_player_rtl");
36
75
  const artworkBorderRadius = getProp("audio_player_artwork_border_radius");
37
76
 
77
+ const audioPlayerBackgroundImageDefaultColor = getProp(
78
+ "audio_player_background_image_default_color"
79
+ );
80
+
38
81
  const isRTL = rtlFlag === "1" || rtlFlag === "true" || rtlFlag === true;
39
82
 
40
83
  const titleFontFamily = getProp(
@@ -109,31 +152,23 @@ export function AudioPlayerTV(props: Props) {
109
152
  summaryFontSize,
110
153
  runTimeFontFamily,
111
154
  runTimeFontSize,
155
+ artworkAspectRatio,
112
156
  channelIcon,
157
+ audioPlayerBackgroundImageDefaultColor,
113
158
  artworkBorderRadius,
114
159
  };
115
160
  }, [getProp]);
116
161
 
117
- const artwork = getArtworkImage({
118
- key: "audio_player_artwork_image_key",
119
- entry: audio_item,
120
- plugin_configuration,
121
- });
122
-
123
- // console.log("debug_2", "AudioPlayer", {
124
- // config,
125
- // // mobileConfig,
126
- // audio_item,
127
- // plugin_configuration,
128
- // artwork,
129
- // });
162
+ const artwork = imageSrcFromMediaItem(audio_item, [
163
+ config?.artworkAspectRatio,
164
+ ]);
130
165
 
131
166
  return (
132
- <AudioPlayerTVLayout artwork={artwork} config={config} style={style}>
167
+ <AudioPlayerLayout artwork={artwork} config={config} style={style || {}}>
133
168
  <Channel srcImage={config?.channelIcon} config={config} />
134
169
  <Title title={title} config={config} />
135
170
  <Summary summary={summary} config={config} />
136
171
  <Runtime {...extensions} config={config} />
137
- </AudioPlayerTVLayout>
172
+ </AudioPlayerLayout>
138
173
  );
139
174
  }
@@ -1,5 +1,5 @@
1
- import * as React from "react";
2
- import { View, ImageBackground, ViewStyle } from "react-native";
1
+ import React, { useRef } from "react";
2
+ import { View, ImageBackground, Animated, ViewStyle } from "react-native";
3
3
 
4
4
  import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils";
5
5
 
@@ -7,12 +7,12 @@ import { Artwork } from "./Artwork";
7
7
  import { directionStyles } from "./helpers";
8
8
 
9
9
  type Props = {
10
- artwork: string;
10
+ artwork?: string;
11
11
  config: {
12
12
  titleColor: string;
13
13
  summaryColor: string;
14
14
  backgroundColor: string;
15
- backgroundImage: Option<string>;
15
+ backgroundImage: string;
16
16
  isRTL: boolean;
17
17
  artworkBorderRadius: Option<number>;
18
18
  };
@@ -20,12 +20,17 @@ type Props = {
20
20
  style: ViewStyle;
21
21
  };
22
22
 
23
- export function AudioPlayerTVLayout({
24
- artwork,
25
- config,
26
- children,
27
- style,
28
- }: Props) {
23
+ export function AudioPlayerLayout({ artwork, config, children, style }: Props) {
24
+ const fadeAnimation = useRef(new Animated.Value(0)).current;
25
+
26
+ const fadeAudioPlayerIn = () => {
27
+ Animated.timing(fadeAnimation, {
28
+ toValue: 1,
29
+ duration: 3000,
30
+ useNativeDriver: true,
31
+ }).start();
32
+ };
33
+
29
34
  const { isRTL, backgroundColor, backgroundImage } = config;
30
35
 
31
36
  const backgroundImageSource = { uri: backgroundImage };
@@ -114,6 +119,9 @@ export function AudioPlayerTVLayout({
114
119
  alignItems: "center",
115
120
  justifyContent: "center",
116
121
  },
122
+ native: {
123
+ flex: 1,
124
+ },
117
125
  });
118
126
 
119
127
  const textContainerStyles = platformSelect({
@@ -137,25 +145,58 @@ export function AudioPlayerTVLayout({
137
145
  },
138
146
  });
139
147
 
140
- if (backgroundImage) {
141
- return (
142
- <ImageBackground
143
- source={backgroundImageSource}
144
- style={backgroundImgStyles}
145
- resizeMode="cover"
146
- >
147
- <View style={mainContainerStyles}>
148
- <Artwork srcImage={artwork} config={config} />
149
- <View style={textContainerStyles}>{children}</View>
150
- </View>
151
- </ImageBackground>
152
- );
153
- }
154
-
155
- return (
148
+ const audioPlayerLayoutTV = backgroundImageSource?.uri ? (
149
+ <ImageBackground
150
+ source={backgroundImageSource}
151
+ style={backgroundImgStyles}
152
+ resizeMode="cover"
153
+ >
154
+ <View style={mainContainerStyles}>
155
+ {!!artwork && <Artwork srcImage={artwork} config={config} />}
156
+ <View style={textContainerStyles}>{children}</View>
157
+ </View>
158
+ </ImageBackground>
159
+ ) : (
156
160
  <View style={mainContainerStyles}>
157
- <Artwork srcImage={artwork} config={config} />
161
+ {!!artwork && <Artwork srcImage={artwork} config={config} />}
158
162
  <View style={textContainerStyles}>{children}</View>
159
163
  </View>
160
164
  );
165
+
166
+ const audioPlayerLayoutMobile = () => {
167
+ fadeAudioPlayerIn();
168
+
169
+ return (
170
+ <View style={mainContainerStyles} pointerEvents="none">
171
+ <Animated.View
172
+ style={[
173
+ mainContainerStyles,
174
+ {
175
+ opacity: fadeAnimation,
176
+ },
177
+ ]}
178
+ >
179
+ <ImageBackground
180
+ source={backgroundImageSource}
181
+ style={backgroundImgStyles}
182
+ resizeMode="cover"
183
+ >
184
+ <View style={mainContainerStyles} />
185
+ </ImageBackground>
186
+ </Animated.View>
187
+ </View>
188
+ );
189
+ };
190
+
191
+ const audioPlayerLayout = platformSelect({
192
+ tvos: audioPlayerLayoutTV,
193
+ android_tv: audioPlayerLayoutTV,
194
+ web: audioPlayerLayoutTV,
195
+ samsung_tv: audioPlayerLayoutTV,
196
+ lg_tv: audioPlayerLayoutTV,
197
+ ios: audioPlayerLayoutMobile(),
198
+ android: audioPlayerLayoutMobile(),
199
+ });
200
+
201
+ return audioPlayerLayout;
161
202
  }
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`<AudioPlayerMobileLayout /> renders correctly 1`] = `
3
+ exports[`<AudioPlayer /> renders correctly 1`] = `
4
4
  <View
5
5
  pointerEvents="none"
6
6
  style={
@@ -32,7 +32,7 @@ exports[`<AudioPlayerMobileLayout /> renders correctly 1`] = `
32
32
  resizeMode="cover"
33
33
  source={
34
34
  {
35
- "uri": undefined,
35
+ "uri": "https://example.com",
36
36
  }
37
37
  }
38
38
  style={
@@ -0,0 +1,66 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<AudioPlayerLayout /> renders correctly 1`] = `
4
+ <View
5
+ pointerEvents="none"
6
+ style={
7
+ {
8
+ "backgroundColor": "transparent",
9
+ "overflow": "hidden",
10
+ }
11
+ }
12
+ >
13
+ <View
14
+ collapsable={false}
15
+ style={
16
+ {
17
+ "backgroundColor": "transparent",
18
+ "opacity": 0,
19
+ "overflow": "hidden",
20
+ }
21
+ }
22
+ >
23
+ <View
24
+ accessibilityIgnoresInvertColors={true}
25
+ style={
26
+ {
27
+ "flex": 1,
28
+ }
29
+ }
30
+ >
31
+ <Image
32
+ resizeMode="cover"
33
+ source={
34
+ {
35
+ "uri": "https://example.com",
36
+ }
37
+ }
38
+ style={
39
+ [
40
+ {
41
+ "bottom": 0,
42
+ "left": 0,
43
+ "position": "absolute",
44
+ "right": 0,
45
+ "top": 0,
46
+ },
47
+ {
48
+ "height": undefined,
49
+ "width": undefined,
50
+ },
51
+ undefined,
52
+ ]
53
+ }
54
+ />
55
+ <View
56
+ style={
57
+ {
58
+ "backgroundColor": "transparent",
59
+ "overflow": "hidden",
60
+ }
61
+ }
62
+ />
63
+ </View>
64
+ </View>
65
+ </View>
66
+ `;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { render } from "@testing-library/react-native";
3
3
 
4
- import { AudioPlayerTV } from "..";
4
+ import { AudioPlayer } from "../AudioPlayer";
5
5
 
6
6
  const audioPlayerProps = {
7
7
  audio_item: {
@@ -45,9 +45,9 @@ const audioPlayerProps = {
45
45
  styles: {},
46
46
  };
47
47
 
48
- describe("<AudioPlayerTV />", () => {
48
+ describe("<AudioPlayer />", () => {
49
49
  it("renders correctly", () => {
50
- const { toJSON } = render(<AudioPlayerTV {...audioPlayerProps} />);
50
+ const { toJSON } = render(<AudioPlayer {...audioPlayerProps} />);
51
51
  expect(toJSON()).toMatchSnapshot();
52
52
  });
53
53
  });
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { render } from "@testing-library/react-native";
3
+
4
+ import { AudioPlayerLayout } from "../AudioPlayerLayout";
5
+
6
+ const audioPlayerLayoutProps = {
7
+ artwork: "string",
8
+ config: {
9
+ titleColor: "white",
10
+ summaryColor: "white",
11
+ backgroundColor: "black",
12
+ backgroundImage: "https://example.com",
13
+ isRTL: true,
14
+ },
15
+ children: [],
16
+ };
17
+
18
+ describe("<AudioPlayerLayout />", () => {
19
+ it("renders correctly", () => {
20
+ const { toJSON } = render(
21
+ <AudioPlayerLayout {...audioPlayerLayoutProps} />
22
+ );
23
+
24
+ expect(toJSON()).toMatchSnapshot();
25
+ });
26
+ });
@@ -2,8 +2,9 @@ const defaults = {
2
2
  audio_player_title_color: "white",
3
3
  audio_player_summary_color: "white",
4
4
  audio_player_background_color: "black",
5
- audio_player_background_image: undefined,
5
+ audio_player_artwork_aspect_ratio: "1:1",
6
6
  audio_player_rtl: false,
7
+ audio_player_background_image_default_color: "",
7
8
  };
8
9
 
9
10
  export function getPropertyFromEntryOrConfig({ entry, plugin_configuration }) {
@@ -0,0 +1 @@
1
+ export { AudioPlayer } from "./AudioPlayer";
@@ -719,7 +719,7 @@ const PlayerContainerComponent = (props: Props) => {
719
719
  key={item.id}
720
720
  groupId={FocusableGroupMainContainerId}
721
721
  cellTapAction={onCellTap}
722
- extraAnchorPointYOffset={-600}
722
+ extraAnchorPointYOffset={0}
723
723
  isScreenWrappedInContainer={true}
724
724
  containerHeight={styles.inlineRiver.height}
725
725
  componentsMapExtraProps={{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/zapp-react-native-ui-components",
3
- "version": "14.0.0-alpha.4011674803",
3
+ "version": "14.0.0-alpha.4652343390",
4
4
  "description": "Applicaster Zapp React Native ui components for the Quick Brick App",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -31,10 +31,10 @@
31
31
  "redux-mock-store": "^1.5.3"
32
32
  },
33
33
  "dependencies": {
34
- "@applicaster/applicaster-types": "14.0.0-alpha.4011674803",
35
- "@applicaster/zapp-react-native-bridge": "14.0.0-alpha.4011674803",
36
- "@applicaster/zapp-react-native-redux": "14.0.0-alpha.4011674803",
37
- "@applicaster/zapp-react-native-utils": "14.0.0-alpha.4011674803",
34
+ "@applicaster/applicaster-types": "14.0.0-alpha.4652343390",
35
+ "@applicaster/zapp-react-native-bridge": "14.0.0-alpha.4652343390",
36
+ "@applicaster/zapp-react-native-redux": "14.0.0-alpha.4652343390",
37
+ "@applicaster/zapp-react-native-utils": "14.0.0-alpha.4652343390",
38
38
  "promise": "^8.3.0",
39
39
  "url": "^0.11.0",
40
40
  "uuid": "^3.3.2"
@@ -1,15 +0,0 @@
1
- import * as React from "react";
2
- import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
3
-
4
- import { AudioPlayerTV } from "./tv";
5
- import { AudioPlayerMobile } from "./mobile";
6
-
7
- import { Props } from "./types";
8
-
9
- export function AudioPlayer(props: Props) {
10
- if (isTV()) {
11
- return <AudioPlayerTV {...props} />;
12
- }
13
-
14
- return <AudioPlayerMobile {...props} />;
15
- }
@@ -1,61 +0,0 @@
1
- import React, { useRef } from "react";
2
- import {
3
- View,
4
- ImageBackground,
5
- Animated,
6
- ViewStyle,
7
- StyleSheet,
8
- } from "react-native";
9
- import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils";
10
-
11
- const styles = StyleSheet.create({
12
- flex: {
13
- flex: 1,
14
- },
15
- });
16
-
17
- type Props = {
18
- backgroundImage: string;
19
- style: ViewStyle;
20
- };
21
-
22
- export function AudioPlayerMobileLayout({ backgroundImage, style }: Props) {
23
- const fadeAnimation = useRef(new Animated.Value(0)).current;
24
-
25
- const mainContainerStyles = platformSelect({
26
- native: {
27
- backgroundColor: "transparent",
28
- overflow: "hidden",
29
- ...style,
30
- },
31
- });
32
-
33
- React.useEffect(() => {
34
- Animated.timing(fadeAnimation, {
35
- toValue: 1,
36
- duration: 3000,
37
- useNativeDriver: true,
38
- }).start();
39
- }, []);
40
-
41
- return (
42
- <View style={mainContainerStyles} pointerEvents="none">
43
- <Animated.View
44
- style={[
45
- mainContainerStyles,
46
- {
47
- opacity: fadeAnimation,
48
- },
49
- ]}
50
- >
51
- <ImageBackground
52
- source={{ uri: backgroundImage }}
53
- style={styles.flex}
54
- resizeMode="cover"
55
- >
56
- <View style={mainContainerStyles} />
57
- </ImageBackground>
58
- </Animated.View>
59
- </View>
60
- );
61
- }
@@ -1,18 +0,0 @@
1
- import React from "react";
2
- import { render } from "@testing-library/react-native";
3
-
4
- import { AudioPlayerMobileLayout } from "../Layout";
5
-
6
- const audioPlayerLayoutProps = {
7
- backgroundColor: "black",
8
- };
9
-
10
- describe("<AudioPlayerMobileLayout />", () => {
11
- it("renders correctly", () => {
12
- const { toJSON } = render(
13
- <AudioPlayerMobileLayout {...audioPlayerLayoutProps} />
14
- );
15
-
16
- expect(toJSON()).toMatchSnapshot();
17
- });
18
- });
@@ -1,28 +0,0 @@
1
- import * as React from "react";
2
- import { getBackgroundImage } from "@applicaster/zapp-react-native-utils/audioPlayerUtils";
3
-
4
- import { AudioPlayerMobileLayout } from "./Layout";
5
-
6
- import { Props } from "../types";
7
-
8
- export function AudioPlayerMobile(props: Props) {
9
- const { audio_item, plugin_configuration, style = {} } = props;
10
-
11
- const mobileConfig = React.useMemo(() => {
12
- const backgroundImage = getBackgroundImage({
13
- entry: audio_item,
14
- plugin_configuration,
15
- });
16
-
17
- return {
18
- backgroundImage,
19
- };
20
- }, [audio_item, plugin_configuration]);
21
-
22
- return (
23
- <AudioPlayerMobileLayout
24
- backgroundImage={mobileConfig.backgroundImage}
25
- style={style}
26
- />
27
- );
28
- }
@@ -1,170 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`<AudioPlayerTV /> renders correctly 1`] = `
4
- <View
5
- accessibilityIgnoresInvertColors={true}
6
- >
7
- <Image
8
- resizeMode="cover"
9
- source={
10
- {
11
- "uri": "https://example.com",
12
- }
13
- }
14
- style={
15
- [
16
- {
17
- "bottom": 0,
18
- "left": 0,
19
- "position": "absolute",
20
- "right": 0,
21
- "top": 0,
22
- },
23
- {
24
- "height": undefined,
25
- "width": undefined,
26
- },
27
- undefined,
28
- ]
29
- }
30
- />
31
- <View
32
- style={
33
- {
34
- "backgroundColor": "transparent",
35
- "overflow": "hidden",
36
- }
37
- }
38
- >
39
- <View
40
- style={
41
- {
42
- "marginHorizontal": 24,
43
- }
44
- }
45
- >
46
- <Image
47
- fadeDuration={0}
48
- resizeMode="cover"
49
- source={
50
- {
51
- "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABwgAAAP0CAYAAAC+jGj3AAAxj0lEQVR4AezdIWyd59nH4af9piKXbKAOGXJQpShGJTYacXisSUOxIo1FQZNmBWyaFCXSVBCltHLQpMpGIzYasVFJjUpiVJKgEhuN9Nv9tk7bKI59nnOOfY7/1yW9Ou2aej7PW/bTfT8f3Lp164cGAAAAAAAARPiwAQAAAAAAADEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAAAAAAAAQRCAEAAAAAACAIAIhAAAAAAAABBEIAQAAAAAAIIhACAAAAAAAAEEEQgAAAAAAAAgiEAIAAAAAAEAQgRAAAAAAAACCCIQAADQAAAAAcgiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAA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Odi7UrXWiT59+nTkVaqn72ReVrACAADMAoEQAADggmqt6DjTao8ePeoOWbW6c9bV/YA96kxrZWiv07WkAAAAXIxACAAAcAE1/TfOmtBScXB7e7v16I1vl6l3enDc8FoODg66JzQBAADSCIQAAAAX0Bv23lb35vVMEdb6zll38+bNNqoKg+OG11MVGgEAADifQAgAAHCOCno1oTapn1X37Y2qJ75dtp6I+fLlyzYpR0dH7iIEAAC4AIEQAADgHBWervrnLSwstFnXEwgnuRa04uC4q0oBAAASCIQAAADnOD4+bpPUM+U2D4Gwx6Qn/iY5kQgAAHBdCYQAAADnsLYSAACA60QgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAACc48aNG22SFhYWGtMx6XcFAABwHQmEAABAlJOTkzaqpaWlNkmLi4ttVK9fv26zrud3nPTZ9vy8nv8mAAAA5plACAAAROmJWDXxd/v27TYpq6urbVTzEAh7QlvPWZyl4mDPdOY8nC0AAMAkCYQAAECU3hg0qUBYP6dngvD4+LjNupcvX7ZR1VlM6mzX19dbj6OjowYAAJBEIAQAAKIcHh62HhWfesLe2x48eNB69P7el6k3tG1sbLRx1btZW1trPQRCAAAgjUAIAABEqTWYvWtGHz9+3MZRIaz3zr15CIS9v2NNEI4bCXvfTcVBdxACAABpBEIAACDO/v5+61Fxb3Nzs/W4c+dOu3fvXutRQXMeptzGiW11Nnfv3m096p30htdvvvmmAQAApBEIAQCAOAcHB61XrbH88ssvL7xutCYPa63oX//619arN2hehe3t7darzmmUScJ6B/UueleLlr29vQYAAJDmg1u3bv3QAAAAwjx79mxYbTmOiksVxN413VdhsO4trHg17t2Ff/zjH7vWol6F+q5fffVVG0d9162trWFl6bu+d7231dXV4WzrnHvVe7t//34DAABIIxACAACRKjJVJJyEWqtZsaliVgWrWnc5bhQ8tbu7254+fdrmySTi66nTtaV1tnWmdbbjRMFfevLkiQlCAAAgkkAIAADEmmTImpZ5mh48VRGvVn/OsjrTOlsAAIBE7iAEAABi1RrLWVbrS+ctDpaa+hvnLsLL8OjRowYAAJBKIAQAAGLVHXezGrIqDL548aLNq/rdZzVunnVvJAAAQAqBEAAAiDarIasm3OruvXlVv3vd8Tdr5j28AgAATIJACAAARKuQ9fDhw5mKhM+fP78WE241oVnfZVbUO653Pc/hFQAAYBL+75NPPvl7AwAACFbBqGLWH/7wh/bRRx+1q1T3Iv7rX/9q18W33347fC4vL7erVO/4L3/5S/vuu+8aAABAOoEQAADgf77//vv29ddft88++6wtLCy0q1Bx8Dquv6z4Wq4qEtbkYMVB9w4CAAD8SCAEAAD4SUXCg4ODtrq6eqmRsKbbPv/887azs9Ouq4qE9T0//fTTS53SPF0ranIQAADgZx/cunXrhwYAAMAbFQfv3bvX1tfX27TVVNujR49m6g7EaVpcXGzPnj0bPqdte3t7mMh05yAAAMCvCYQAAABnWFpaao8fP55KzKpoVStFr/PU4PvcvXt3CLDTONuaVqyzPV1tCgAAwK8JhAAAAOdYW1sbYlYFw3FVGKzJtgqD6ZNtFQfrbO/cuTORUCgMAgAAXIxACAAAcEEVCCtoLS8vjxQLKwTW3Ya7u7vi1RlWVlaGZ9T7H2s16/7+/nC+zhYAAOBiBEIAAIAOFbEqEtZT028ff/zxr/75q1evhnhV0SrlfsFJOT3T+rxx48av/tnx8fFwnqdn635BAACA0QmEAAAAAAAAEOTDBgAAAAAAAMQQCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAAAAAAAAggiEAAAAAAAAEEQgBAAAAAAAgCACIQAAAAAAAAQRCAEAAAAAACCIQAgAAAAAAABBBEIAAAAAAAAIIhACAAAAAABAEIEQAADg/9uzAwEAAAAAQf7Wg1waAQAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADAiCAEAAAAAACAEUEIAAAAAAAAI4IQAAAAAAAARgQhAAAAAAAAjAhCAAAAAAAAGBGEAAAAAAAAMCIIAQAAAAAAYEQQAgAAAAAAwIggBAAAAAAAgBFBCAAAAAAAACOCEAAAAAAAAEYEIQAAAAAAAIwIQgAAAAAAABgRhAAAAAAAADAiCAEAAAAAAGBEEAIAAAAAAMCIIAQAAAAAAIARQQgAAAAAAAAjghAAAAAAAABGBCEAAAAAAACMCEIAAAAAAAAYEYQAAAAAAAAwIggBAAAAAABgRBACAAAAAADASOotf98aH400AAAAAElFTkSuQmCC",
52
- }
53
- }
54
- style={
55
- [
56
- {
57
- "height": 400,
58
- "width": 400,
59
- },
60
- {
61
- "borderRadius": 0,
62
- },
63
- ]
64
- }
65
- />
66
- </View>
67
- <View>
68
- <View
69
- style={
70
- {
71
- "height": 72,
72
- "marginBottom": 30,
73
- "width": 128,
74
- }
75
- }
76
- >
77
- <Image
78
- fadeDuration={0}
79
- source={
80
- {
81
- "uri": "https://example.com",
82
- }
83
- }
84
- style={
85
- {
86
- "height": 72,
87
- "width": 128,
88
- }
89
- }
90
- />
91
- </View>
92
- <View
93
- style={
94
- {
95
- "height": 100,
96
- "marginBottom": 12,
97
- "width": 600,
98
- }
99
- }
100
- >
101
- <Text
102
- numberOfLines={2}
103
- style={
104
- {
105
- "color": "white",
106
- "fontFamily": null,
107
- "fontSize": 38,
108
- "fontWeight": "600",
109
- "textAlign": "right",
110
- }
111
- }
112
- >
113
- tittle
114
- </Text>
115
- </View>
116
- <View
117
- style={
118
- {
119
- "height": 80,
120
- "marginBottom": 30,
121
- "width": 600,
122
- }
123
- }
124
- >
125
- <Text
126
- numberOfLines={2}
127
- style={
128
- {
129
- "color": "white",
130
- "fontFamily": null,
131
- "fontSize": 20,
132
- "fontWeight": "600",
133
- "opacity": 0.8,
134
- "textAlign": "right",
135
- }
136
- }
137
- >
138
- Summary
139
- </Text>
140
- </View>
141
- <View
142
- style={
143
- {
144
- "height": 40,
145
- "justifyContent": "flex-end",
146
- "width": 600,
147
- }
148
- }
149
- >
150
- <Text
151
- style={
152
- {
153
- "alignItems": "flex-start",
154
- "color": "white",
155
- "flexDirection": "row-reverse",
156
- "fontFamily": null,
157
- "fontSize": 20,
158
- "justifyContent": "flex-end",
159
- "opacity": 0.8,
160
- "textAlign": "right",
161
- }
162
- }
163
- >
164
- 10:10 - 11:11
165
- </Text>
166
- </View>
167
- </View>
168
- </View>
169
- </View>
170
- `;
@@ -1,40 +0,0 @@
1
- import { ViewStyle } from "react-native";
2
-
3
- export type Props = {
4
- audio_item: ZappEntry & {
5
- extensions?: {
6
- audio_player_artwork_aspect_ratio?: string;
7
- audio_player_background_image?: string;
8
- audio_player_background_color?: string;
9
- audio_player_channel_icon?: string;
10
- audio_player_title_color?: string;
11
- audio_player_summary_color?: string;
12
- audio_player_rtl?: boolean;
13
- audio_player_background_image_default_color?: string;
14
- start_time?: string;
15
- end_time?: string;
16
- };
17
- };
18
- plugin_configuration: {
19
- audio_player_background_color?: string;
20
- audio_player_title_color?: string;
21
- audio_player_summary_color?: string;
22
- audio_player_rtl?: string;
23
- audio_player_background_image_default_color?: string;
24
- audio_player_background_image?: string;
25
- audio_player_artwork_aspect_ratio?: string;
26
- lg_tv_audio_player_title_font_family?: string;
27
- lg_tv_audio_player_title_font_size?: number;
28
- lg_tv_audio_player_summary_font_family?: string;
29
- lg_tv_audio_player_summary_font_size?: number;
30
- samsung_tv_audio_player_title_font_family?: string;
31
- samsung_tv_audio_player_title_font_size?: number;
32
- samsung_tv_audio_player_summary_font_family?: string;
33
- samsung_tv_audio_player_summary_font_size?: number;
34
- tv_os_audio_player_title_font_family?: string;
35
- tv_os_audio_player_title_font_size?: number;
36
- tv_os_audio_player_summary_font_family?: string;
37
- tv_os_audio_player_summary_font_size?: number;
38
- };
39
- style?: ViewStyle;
40
- };