From 749aaff11459018c169820e9f080fa70a01329dc Mon Sep 17 00:00:00 2001 From: Shubham Jaswal Date: Tue, 29 Dec 2020 00:34:57 +0530 Subject: [PATCH] day details and hourly chart --- App.js | 6 +- package.json | 2 + src/components/Day.jsx | 14 ++- src/components/DayDetailsBox.jsx | 136 ++++++++++++++++++++++++++++ src/components/DropDownSettings.jsx | 1 - src/components/HourlyTimeline.jsx | 109 ++++++++++++++++++++++ src/components/Today.jsx | 2 +- src/components/WeekDays.jsx | 3 +- src/pages/DayDetails.jsx | 117 ++---------------------- src/pages/Home.jsx | 5 +- src/utils/store.js | 2 - yarn.lock | 100 +++++++++++++++++++- 12 files changed, 369 insertions(+), 128 deletions(-) create mode 100644 src/components/DayDetailsBox.jsx create mode 100644 src/components/HourlyTimeline.jsx diff --git a/App.js b/App.js index db30b83..ca27d6c 100644 --- a/App.js +++ b/App.js @@ -19,9 +19,9 @@ const App: () => React$Node = () => { return ( - {/* */} - - {/* */} + + + ); diff --git a/package.json b/package.json index 59bb728..a433d73 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "moment": "^2.29.1", "react": "16.13.1", "react-native": "0.63.3", + "react-native-chart-kit": "^6.9.0", "react-native-dotenv": "^2.4.2", "react-native-dropdown-picker": "^3.7.5", "react-native-geolocation-service": "^5.0.0", @@ -31,6 +32,7 @@ "react-native-screens": "^2.16.1", "react-native-simple-toast": "^1.1.3", "react-native-splash-screen": "^3.2.0", + "react-native-svg": "^12.1.0", "react-native-touchable-scale": "^2.1.2", "react-native-vector-icons": "^7.1.0", "react-redux": "^7.2.2", diff --git a/src/components/Day.jsx b/src/components/Day.jsx index e176195..a469fa0 100644 --- a/src/components/Day.jsx +++ b/src/components/Day.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import { View } from 'react-native'; import styled, { css } from 'styled-components/native'; import { RFValue } from 'react-native-responsive-fontsize'; @@ -20,12 +19,12 @@ export default ({ day, forecast }) => { /> {day} - + {forecast.weather[0].main} {round(forecast.temp.max)}° / {round(forecast.temp.min)}° - + ); }; @@ -37,8 +36,8 @@ const Container = styled.View` align-items: center; border-radius: ${RFValue(10)}px; border: 1px ${({ theme }) => theme.colors.border}; - margin-bottom: ${RFValue(7)}px; - padding-horizontal: ${RFValue(10)}px; + margin-top: ${RFValue(7)}px; + padding-horizontal: ${RFValue(15)}px; background-color: ${({ theme }) => theme.colors.backgroundAlt}; `; @@ -63,6 +62,11 @@ const DayText = styled.Text` font-size: ${RFValue(25)}px; `; +const WeatherTemp = styled.View` + height: 100%; + justify-content: center; +`; + const WeatherText = styled.Text` color: ${({ theme }) => theme.colors.textAlt}; font-size: ${RFValue(12)}px; diff --git a/src/components/DayDetailsBox.jsx b/src/components/DayDetailsBox.jsx new file mode 100644 index 0000000..59aef45 --- /dev/null +++ b/src/components/DayDetailsBox.jsx @@ -0,0 +1,136 @@ +import React, { useContext } from 'react'; + +import styled from 'styled-components/native'; +import { RFValue } from 'react-native-responsive-fontsize'; +import Ionicons from 'react-native-vector-icons/Ionicons'; +import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; +import Fontisto from 'react-native-vector-icons/Fontisto'; +import { ThemeContext } from 'styled-components'; +import { useSelector } from 'react-redux'; + +const Card = ({ heading, sunHeading, icon }) => { + return ( + + + {heading} + {sunHeading} + + {icon} + + ); +}; + +export default ({ forecast }) => { + const units = useSelector((state) => state.units); + const themeContext = useContext(ThemeContext); + const iconSize = RFValue(30); + return ( + <> + + + } + /> + + } + /> + + + + } + /> + + } + /> + + + + } + /> + + } + /> + + + ); +}; + +const BoxRow = styled.View` + flex-direction: row; + height: ${RFValue(60)}px; +`; + +const StyledCard = styled.View` + flex: 1; + flex-direction: row; + justify-content: space-between; + align-items: center; + margin: ${RFValue(2)}px; + border-radius: ${RFValue(10)}px; + border: 1px ${({ theme }) => theme.colors.border}; + padding-horizontal: ${RFValue(15)}px; + background-color: ${({ theme }) => theme.colors.backgroundAlt}; +`; + +const CardContent = styled.View``; + +const CardHeading = styled.Text` + color: ${({ theme }) => theme.colors.text}; + font-size: ${RFValue(16)}px; +`; + +const CardSubHeading = styled.Text` + color: ${({ theme }) => theme.colors.primary}; + font-size: ${RFValue(12)}px; +`; diff --git a/src/components/DropDownSettings.jsx b/src/components/DropDownSettings.jsx index dcc1a14..81b93e9 100644 --- a/src/components/DropDownSettings.jsx +++ b/src/components/DropDownSettings.jsx @@ -1,5 +1,4 @@ import React, { useState } from 'react'; -import { View } from 'react-native'; import styled from 'styled-components/native'; import DropDownPicker from 'react-native-dropdown-picker'; diff --git a/src/components/HourlyTimeline.jsx b/src/components/HourlyTimeline.jsx new file mode 100644 index 0000000..22b9c38 --- /dev/null +++ b/src/components/HourlyTimeline.jsx @@ -0,0 +1,109 @@ +import React from 'react'; +import { Dimensions } from 'react-native'; + +import styled from 'styled-components/native'; +import { LineChart } from 'react-native-chart-kit'; +import { RFValue } from 'react-native-responsive-fontsize'; +import { useSelector } from 'react-redux'; +import moment from 'moment'; +import { Svg, Text as TextSVG } from 'react-native-svg'; + +import { round, weatherIcons, rootNavigation } from '../utils'; + +export default () => { + const timeFormat = useSelector((state) => state.timeFormat); + const hourly = useSelector((state) => state.forecast.hourly); + + const timeString = (sec) => { + if (timeFormat === '24') return moment(sec * 1000).format('HH:mm'); + return moment(sec * 1000).format('hh:mm a'); + }; + const chartData = { + labels: hourly.map((item) => timeString(item.dt)), + datasets: [ + { + data: hourly.map((item) => round(item.temp)), + color: (opacity = 0.5) => `rgba(255, 255, 255, ${opacity})`, + }, + ], + legend: [], + }; + const chartConfig = { + backgroundColor: '#005aae', + backgroundGradientFrom: '#006ace', + backgroundGradientTo: '#40a1fc', + decimalPlaces: 2, + color: (opacity = 0) => `rgba(255, 255, 255, ${opacity})`, + labelColor: (opacity = 1) => `rgba(255, 255, 255, ${opacity})`, + style: {}, + propsForDots: { + r: '4', + strokeWidth: '2', + stroke: '#40a1fc', + }, + propsForLabels: { fontSize: RFValue(9) }, + propsForVerticalLabels: { fontWeight: 'bold', fontSize: RFValue(8) }, + }; + return ( + + {/* Hourly forecast */} + + { + return ( + + {indexData}° + + ); + }} + formatYLabel={(label) => round(label)} + style={{}} + /> + + + ); +}; + +const Container = styled.View` + margin: ${RFValue(10)}px; + margin-top: 0px; + border-radius: ${RFValue(10)}px; + overflow: hidden; +`; + +const ScrollView = styled.ScrollView.attrs(() => ({ + contentContainerStyle: { + justifyContent: 'space-between', + }, +}))``; + +const HeadingText = styled.Text` + z-index: 1000; + position: absolute; + color: white; + font-size: ${RFValue(15)}px; + padding: ${RFValue(10)}px; + padding-top: ${RFValue(5)}px; + font-weight: bold; +`; diff --git a/src/components/Today.jsx b/src/components/Today.jsx index 5f04baa..a3bd33e 100644 --- a/src/components/Today.jsx +++ b/src/components/Today.jsx @@ -109,7 +109,7 @@ const WeatherText = styled(BaseText)` const SettingsContainer = styled.Pressable` position: absolute; right: ${RFValue(20)}px; - bottom: ${RFValue(15)}px; + bottom: ${RFValue(0)}px; border-radius: 50px; padding: ${RFValue(7)}px; `; diff --git a/src/components/WeekDays.jsx b/src/components/WeekDays.jsx index 7fa4e15..5d086cf 100644 --- a/src/components/WeekDays.jsx +++ b/src/components/WeekDays.jsx @@ -58,5 +58,6 @@ export default () => { const Container = styled.View` flex: 1; justify-content: space-around; - padding-horizontal: ${RFValue(10)}px; + margin: ${RFValue(10)}px; + margin-top: 0px; `; diff --git a/src/pages/DayDetails.jsx b/src/pages/DayDetails.jsx index 310abc3..1877997 100644 --- a/src/pages/DayDetails.jsx +++ b/src/pages/DayDetails.jsx @@ -1,100 +1,20 @@ import React, { useContext } from 'react'; -import { View } from 'react-native'; import styled from 'styled-components/native'; import { RFValue } from 'react-native-responsive-fontsize'; -import Feather from 'react-native-vector-icons/Feather'; -import Ionicons from 'react-native-vector-icons/Ionicons'; -import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; -import Fontisto from 'react-native-vector-icons/Fontisto'; -import LottieView from 'lottie-react-native'; import { ThemeContext } from 'styled-components'; import { useSelector } from 'react-redux'; +import DayDetailsBox from '../components/DayDetailsBox'; + export default ({ route }) => { const units = useSelector((state) => state.units); const themeContext = useContext(ThemeContext); const { forecast } = route.params; return ( - - - - - UVI - {forecast.uvi} - - - - - - Wind speed - - {forecast.wind_speed} {units === 'metric' ? 'm/s' : 'mi/h'} - - - - - - - - - Humidity - {forecast.humidity}% - - - - - - Pressure - {forecast.pressure} hPa - - - - - - - - Cloud cover - {forecast.clouds}% - - - - - - Dew point - - {forecast.dew_point} {units === 'metric' ? '⁰C' : '⁰F'} - - - - - - + + ); }; @@ -105,31 +25,6 @@ const Container = styled.View` background-color: ${({ theme }) => theme.colors.background}; `; -const BoxRow = styled.View` - flex-direction: row; - height: ${RFValue(60)}px; -`; - -const Card = styled.View` - flex: 1; - flex-direction: row; - justify-content: space-between; - align-items: center; - margin: ${RFValue(2)}px; - border-radius: ${RFValue(10)}px; - border: 1px ${({ theme }) => theme.colors.border}; - padding-horizontal: ${RFValue(15)}px; - background-color: ${({ theme }) => theme.colors.backgroundAlt}; -`; - -const CardContent = styled.View``; - -const CardHeading = styled.Text` - color: ${({ theme }) => theme.colors.text}; - font-size: ${RFValue(16)}px; -`; - -const CardSubHeading = styled.Text` - color: ${({ theme }) => theme.colors.primary}; - font-size: ${RFValue(12)}px; +const DailyTimeline = styled.View` + flex-grow: 1; `; diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx index 8a54127..f25fece 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -10,6 +10,7 @@ import { RFValue } from 'react-native-responsive-fontsize'; import Error from '../components/Error'; import WeekDays from '../components/WeekDays'; import Today from '../components/Today'; +import HourlyTimeline from '../components/HourlyTimeline'; import { useWeather, useStorage } from '../utils'; export default ({ navigation }) => { @@ -55,9 +56,7 @@ export default ({ navigation }) => { - - text - + ) : ( error && diff --git a/src/utils/store.js b/src/utils/store.js index 04bd4e1..a05e3f1 100644 --- a/src/utils/store.js +++ b/src/utils/store.js @@ -14,7 +14,6 @@ const initialState = { const rootReducer = (state = initialState, action) => { switch (action.type) { case 'storage': { - console.log('rootReducer storage : '); return { ...state, weather: action.payload.weather || initialState.weather, @@ -25,7 +24,6 @@ const rootReducer = (state = initialState, action) => { }; } case 'weather': { - console.log('rootReducer weather : '); weather.set(action.payload); return { ...state, diff --git a/yarn.lock b/yarn.lock index 11425a3..358e76d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2051,6 +2051,11 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + bplist-creator@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c" @@ -2524,6 +2529,16 @@ css-color-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= +css-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + css-to-react-native@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" @@ -2533,6 +2548,19 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" +css-tree@^1.0.0-alpha.39: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + cssom@^0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -2709,6 +2737,24 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -2716,6 +2762,14 @@ domexception@^1.0.1: dependencies: webidl-conversions "^4.0.2" +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + dotenv@^8.0.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" @@ -2763,6 +2817,11 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +entities@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + envinfo@^7.7.2: version "7.7.3" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" @@ -4921,7 +4980,7 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.3.0: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.3.0: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -5013,6 +5072,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -5602,6 +5666,13 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -5909,6 +5980,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +paths-js@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/paths-js/-/paths-js-0.4.11.tgz#b2a9d5f94ee9949aa8fee945f78a12abff44599e" + integrity sha512-3mqcLomDBXOo7Fo+UlaenG6f71bk1ZezPQy2JCmYHy2W2k5VKpP+Jbin9H0bjXynelTbglCqdFhSEkeIkKTYUA== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -5970,6 +6046,11 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== +point-in-polygon@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/point-in-polygon/-/point-in-polygon-1.0.1.tgz#d59b64e8fee41c49458aac82b56718c5957b2af7" + integrity sha1-1Ztk6P7kHElFiqyCtWcYxZV7Kvc= + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -6123,6 +6204,15 @@ react-is@^16.12.0, react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0, react resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-native-chart-kit@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/react-native-chart-kit/-/react-native-chart-kit-6.9.0.tgz#dca879f311c96a4d05f2298d09ca7930a5f7bd83" + integrity sha512-wWIsTbfP5D6vRVxKdBcZHByPHCjbb+ohl/mA5JGAEMARuAuUz2MU060+NZqd3XLHnlZH2PMF9/I5iljwZgfrPA== + dependencies: + lodash "^4.17.13" + paths-js "^0.4.10" + point-in-polygon "^1.0.1" + react-native-dotenv@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/react-native-dotenv/-/react-native-dotenv-2.4.2.tgz#231071a1c3a9c29d96e6221b80d2cef6d9be39b7" @@ -6204,6 +6294,14 @@ react-native-splash-screen@^3.2.0: resolved "https://registry.yarnpkg.com/react-native-splash-screen/-/react-native-splash-screen-3.2.0.tgz#d47ec8557b1ba988ee3ea98d01463081b60fff45" integrity sha512-Ls9qiNZzW/OLFoI25wfjjAcrf2DZ975hn2vr6U9gyuxi2nooVbzQeFoQS5vQcbCt9QX5NY8ASEEAtlLdIa6KVg== +react-native-svg@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-12.1.0.tgz#acfe48c35cd5fca3d5fd767abae0560c36cfc03d" + integrity sha512-1g9qBRci7man8QsHoXn6tP3DhCDiypGgc6+AOWq+Sy+PmP6yiyf8VmvKuoqrPam/tf5x+ZaBT2KI0gl7bptZ7w== + dependencies: + css-select "^2.1.0" + css-tree "^1.0.0-alpha.39" + react-native-touchable-scale@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/react-native-touchable-scale/-/react-native-touchable-scale-2.1.2.tgz#0c34ddd2b9b7ec6a02ea114076cf8b95f6219d3b"