Added in support for Access Point data charts. This included adding new packages: victory and react-native-svg. This is currently setup to show the external data both received and transmitted.

This commit is contained in:
Dan Lefrancois
2022-03-15 14:05:23 -07:00
parent 3cf0e856b3
commit 1ac5afe1b1
9 changed files with 728 additions and 28 deletions

View File

@@ -4,6 +4,7 @@ import android.app.Application;
import android.content.Context;
import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication;
import com.horcrux.svg.SvgPackage;
import com.rnfs.RNFSPackage;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;

View File

@@ -1,4 +1,6 @@
rootProject.name = 'MyOpenWifi'
include ':react-native-svg'
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
include ':react-native-fs'
project(':react-native-fs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fs/android')
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)

View File

@@ -13,6 +13,8 @@ target 'MyOpenWifi' do
)
pod 'RNSVG', :path => '../node_modules/react-native-svg'
target 'MyOpenWifiTests' do
inherit! :complete
# Pods for testing

View File

@@ -31,6 +31,7 @@
"react-native-localization": "^2.1.7",
"react-native-safe-area-context": "^3.3.2",
"react-native-screens": "^3.8.0",
"react-native-svg": "^12.3.0",
"react-native-url-polyfill": "^1.3.0",
"react-native-uuid": "^2.0.1",
"react-native-version-info": "^1.1.1",
@@ -38,7 +39,8 @@
"react-redux": "^7.2.6",
"redux": "^4.1.2",
"redux-persist": "^6.0.0",
"redux-persist-fs-storage": "^1.3.0"
"redux-persist-fs-storage": "^1.3.0",
"victory-native": "^36.3.1"
},
"devDependencies": {
"@babel/core": "^7.12.9",

View File

@@ -27,6 +27,7 @@ export const paddingHorizontalDefault = 10;
export const paddingVerticalDefault = 5;
export const heightCellDefault = 50;
export const borderRadiusDefault = 6;
export const cellHeightDefault = 44;
function updatePrimaryColorInfo() {
const state = store.getState();
@@ -145,7 +146,7 @@ export const pageItemStyle = StyleSheet.create({
inputText: {
marginTop: 10,
// Layout
height: 44,
height: cellHeightDefault,
width: '100%',
paddingLeft: 10,
paddingRight: 10,

View File

@@ -22,6 +22,18 @@ import {
WifiNetworkTypeEnum,
} from './api/apiHandler';
export function formatBytes(bytes, decimals = 2) {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}
export async function getDeviceUuid() {
let deviceUuid = store.getState().deviceUuid.value;

View File

@@ -48,6 +48,7 @@ export const strings = new LocalizedStrings({
titleChangePassword: 'Change Password Error',
titleClientRetrieval: 'Client Retrieval Error',
titleDelete: 'Delete Error',
titleDeviceStatistics: 'Device Statistics',
titleForgotPassword: 'Forgot Password Error',
titleIpReservationModify: 'IP Reservation Modify Error',
titleMfa: 'Multi-Factor Authentication Error',
@@ -257,7 +258,8 @@ export const strings = new LocalizedStrings({
descriptionAdd: 'Please enter the mac address of your access point.',
},
deviceStatistics: {
description: 'Device statistics are below',
titleExternalDataReceive: 'Access Point Data Received (External)',
titleExternalDataTransmit: 'Access Point Data Transmitted (External)',
},
accessSchedule: {
accessSchedule: 'Access Schedule',

View File

@@ -1,12 +1,23 @@
import React, { useState, useEffect, useCallback, useRef } from 'react';
import { strings } from '../localization/LocalizationStrings';
import { ScrollView, View, SafeAreaView, ActivityIndicator, Text } from 'react-native';
import { StyleSheet, ScrollView, View, SafeAreaView, ActivityIndicator, Text, Dimensions } from 'react-native';
import { useFocusEffect } from '@react-navigation/native';
import { useSelector } from 'react-redux';
import { selectAccessPoint } from '../store/SubscriberInformationSlice';
import { deviceStatisticsApi, handleApiError } from '../api/apiHandler';
import { scrollViewToTop, logStringifyPretty, setSubscriberInformationInterval } from '../Utils';
import { pageItemStyle, pageStyle, primaryColor } from '../AppStyle';
import { scrollViewToTop, logStringifyPretty, setSubscriberInformationInterval, formatBytes } from '../Utils';
import {
pageItemStyle,
pageStyle,
primaryColor,
blackColor,
whiteColor,
borderRadiusDefault,
paddingHorizontalDefault,
marginTopDefault,
cellHeightDefault,
} from '../AppStyle';
import { VictoryChart, VictoryBar, VictoryTheme, VictoryTooltip, VictoryAxis } from 'victory-native';
export default function DeviceStatistics(props) {
// Refs
@@ -33,11 +44,8 @@ export default function DeviceStatistics(props) {
useCallback(() => {
scrollViewToTop(scrollRef);
// Setup the refresh interval and update the MFA at the same time
async function getDeviceStatisticsWrapper() {
getDeviceStatistics();
}
var intervalId = setSubscriberInformationInterval(getDeviceStatisticsWrapper);
// Setup the refresh interval and update the device statistics at the same time
let intervalId = setSubscriberInformationInterval(getDeviceStatistics);
// Return function of what should be done on 'focus out'
return () => {
@@ -68,29 +76,112 @@ export default function DeviceStatistics(props) {
} catch (error) {
// Do not report the error in this case, as it is no longer there and it is just getting state
if (isMounted.current) {
handleApiError('Device Statistics', error);
handleApiError(strings.errors.titleDeviceStatistics, error);
setDeviceStatisticsLoading(false);
}
}
};
const getDeviceStatisticsData = () => {
let data = [];
if (deviceStatistics) {
deviceStatistics.external.forEach(item => {
let datetime = new Date(item.timestamp * 1000);
data.push({
label: datetime.toLocaleTimeString(),
rx: item.rx,
tx: item.tx,
});
});
return deviceStatistics.external;
}
return data;
return [];
};
function formatTime(timestamp) {
let datetime = new Date(timestamp * 1000);
if (datetime) {
let timeString = datetime.toLocaleTimeString();
// Remove seconds from the time if it matches one of expected patterns
let timeRegex = new RegExp(/^(\d)?\d:\d\d:\d\d/);
if (timeString && timeRegex.test(timeString)) {
return timeString.replace(/:\d\d($| )/, '');
} else {
return timeString;
}
}
return '-';
}
const getTickValues = key => {
let max = 0;
if (deviceStatistics && deviceStatistics.external) {
deviceStatistics.external.forEach(item => {
if (item[key] > max) {
max = item[key];
}
});
// Calculate the best gap size based on 1024
let tickCount = 6;
let gap = Math.round(max / 1024 / tickCount);
let gapSize = gap * 1024;
let tickValues = [];
for (let i = 0; i < tickCount; i++) {
tickValues.push(gapSize * (i + 1));
}
return tickValues;
}
return [];
};
const componentStyles = StyleSheet.create({
containerChart: {
width: '100%',
backgroundColor: whiteColor,
borderRadius: borderRadiusDefault,
},
headerChart: {
height: cellHeightDefault,
width: '100%',
// Layout
flexDirection: 'row',
flexWrap: 'nowrap',
alignItems: 'center',
justifyContent: 'space-between',
paddingHorizontal: paddingHorizontalDefault,
// Visual
backgroundColor: primaryColor,
borderTopLeftRadius: borderRadiusDefault,
borderTopRightRadius: borderRadiusDefault,
},
headerChartText: {
fontSize: 12,
textTransform: 'uppercase',
color: whiteColor,
},
chartPadding: {
top: marginTopDefault,
left: 60,
bottom: 50,
right: 20,
},
chartStyle: {
data: { fill: primaryColor },
labels: { fill: primaryColor },
},
axisXStyle: {
axis: { stroke: blackColor, strokeWidth: 1 },
ticks: { stroke: blackColor, strokeWidth: 1 },
tickLabels: { fill: blackColor, angle: 90, dx: 12, dy: -5 },
grid: { stroke: 'none' },
},
axisYStyle: {
axis: { stroke: blackColor, strokeWidth: 1 },
ticks: { stroke: blackColor, strokeWidth: 1 },
tickLabels: { fill: blackColor },
grid: { stroke: 'none' },
},
});
return (
<SafeAreaView style={pageStyle.safeAreaView}>
{deviceStatisticsLoading && (
@@ -99,11 +190,65 @@ export default function DeviceStatistics(props) {
</View>
)}
<ScrollView contentContainerStyle={pageStyle.scrollView}>
<View style={pageStyle.containerPreLogin}>
<View style={pageItemStyle.container}>
<Text style={pageItemStyle.description}>{strings.deviceStatistics.description}</Text>
<View style={pageStyle.containerPostLogin}>
<View style={componentStyles.containerChart}>
<View style={componentStyles.headerChart}>
<Text style={componentStyles.headerChartText}>{strings.deviceStatistics.titleExternalDataReceive}</Text>
</View>
<VictoryChart
padding={componentStyles.chartPadding}
domainPadding={{ x: [0, paddingHorizontalDefault] }}
width={Dimensions.get('window').width - paddingHorizontalDefault * 4}
height={Dimensions.get('window').height / 3}
theme={VictoryTheme.material}>
<VictoryBar
style={componentStyles.chartStyle}
data={getDeviceStatisticsData()}
alignment="start"
barRatio={0.95}
x="timestamp"
y="rx"
labelComponent={<VictoryTooltip renderInPortal={false} />}
/>
<VictoryAxis style={componentStyles.axisXStyle} fixLabelOverlap={true} tickFormat={t => formatTime(t)} />
<VictoryAxis
style={componentStyles.axisYStyle}
dependentAxis
crossAxis={false}
tickValues={getTickValues('rx')}
tickFormat={t => formatBytes(t, 0)}
/>
</VictoryChart>
</View>
<View style={[componentStyles.containerChart, { marginTop: marginTopDefault }]}>
<View style={componentStyles.headerChart}>
<Text style={componentStyles.headerChartText}>{strings.deviceStatistics.titleExternalDataTransmit}</Text>
</View>
<VictoryChart
padding={componentStyles.chartPadding}
domainPadding={{ x: [0, paddingHorizontalDefault] }}
width={Dimensions.get('window').width - paddingHorizontalDefault * 4}
height={Dimensions.get('window').height / 3}
theme={VictoryTheme.material}>
<VictoryBar
style={componentStyles.chartStyle}
data={getDeviceStatisticsData()}
alignment="start"
barRatio={0.95}
x="timestamp"
y="tx"
labelComponent={<VictoryTooltip renderInPortal={false} />}
/>
<VictoryAxis style={componentStyles.axisXStyle} fixLabelOverlap={true} tickFormat={t => formatTime(t)} />
<VictoryAxis
style={componentStyles.axisYStyle}
dependentAxis
crossAxis={false}
tickValues={getTickValues('tx')}
tickFormat={t => formatBytes(t, 0)}
/>
</VictoryChart>
</View>
<View style={pageItemStyle.container}></View>
</View>
</ScrollView>
</SafeAreaView>

535
yarn.lock
View File

@@ -2006,6 +2006,11 @@ bl@^4.1.0:
inherits "^2.0.4"
readable-stream "^3.4.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.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e"
@@ -2516,6 +2521,30 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
css-select@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
dependencies:
boolbase "^1.0.0"
css-what "^5.1.0"
domhandler "^4.3.0"
domutils "^2.8.0"
nth-check "^2.0.1"
css-tree@^1.0.0-alpha.39:
version "1.1.3"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
dependencies:
mdn-data "2.0.14"
source-map "^0.6.1"
css-what@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
cssom@^0.4.4:
version "0.4.4"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
@@ -2538,6 +2567,90 @@ csstype@^3.0.2:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==
d3-array@^1.2.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f"
integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==
d3-array@~2.3.0:
version "2.3.3"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.3.3.tgz#e90c39fbaedccedf59fc30473092f99a0e14efa2"
integrity sha512-syv3wp0U5aB6toP2zb2OdBkhTy1MWDsCAaYk6OXJZv+G4u7bSWEmYgxLoFyc88RQUhZYGCebW9a9UD1gFi5+MQ==
d3-collection@1:
version "1.0.7"
resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e"
integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==
d3-color@1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a"
integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==
d3-ease@^1.0.0:
version "1.0.7"
resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.7.tgz#9a834890ef8b8ae8c558b2fe55bd57f5993b85e2"
integrity sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==
d3-format@1:
version "1.4.5"
resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4"
integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==
d3-interpolate@1, d3-interpolate@^1.1.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987"
integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==
dependencies:
d3-color "1"
d3-path@1:
version "1.0.9"
resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf"
integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==
d3-scale@^1.0.0:
version "1.0.7"
resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d"
integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==
dependencies:
d3-array "^1.2.0"
d3-collection "1"
d3-color "1"
d3-format "1"
d3-interpolate "1"
d3-time "1"
d3-time-format "2"
d3-shape@^1.0.0, d3-shape@^1.2.0:
version "1.3.7"
resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7"
integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==
dependencies:
d3-path "1"
d3-time-format@2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.3.0.tgz#107bdc028667788a8924ba040faf1fbccd5a7850"
integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==
dependencies:
d3-time "1"
d3-time@1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1"
integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==
d3-timer@^1.0.0:
version "1.0.10"
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5"
integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==
d3-voronoi@^1.1.2:
version "1.1.4"
resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297"
integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==
data-urls@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
@@ -2637,6 +2750,18 @@ define-property@^2.0.2:
is-descriptor "^1.0.2"
isobject "^3.0.1"
delaunator@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-4.0.1.tgz#3d779687f57919a7a418f8ab947d3bddb6846957"
integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==
delaunay-find@0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/delaunay-find/-/delaunay-find-0.0.6.tgz#2ed017a79410013717fa7d9422e082c2502d4ae3"
integrity sha512-1+almjfrnR7ZamBk0q3Nhg6lqSe6Le4vL0WJDSMx4IDbQwTpUTXPjxC00lqLBT8MYsJpPCbI16sIkw9cPsbi7Q==
dependencies:
delaunator "^4.0.0"
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -2686,6 +2811,20 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
dom-serializer@^1.0.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
dependencies:
domelementtype "^2.0.1"
domhandler "^4.2.0"
entities "^2.0.0"
domelementtype@^2.0.1, domelementtype@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
domexception@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
@@ -2693,6 +2832,22 @@ domexception@^2.0.1:
dependencies:
webidl-conversions "^5.0.0"
domhandler@^4.2.0, domhandler@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
dependencies:
domelementtype "^2.2.0"
domutils@^2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
dependencies:
dom-serializer "^1.0.1"
domelementtype "^2.2.0"
domhandler "^4.2.0"
dottie@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.2.tgz#cc91c0726ce3a054ebf11c55fbc92a7f266dd154"
@@ -2759,6 +2914,11 @@ enquirer@^2.3.5:
dependencies:
ansi-colors "^4.1.1"
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
envinfo@^7.7.2:
version "7.8.1"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
@@ -4590,6 +4750,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
json-stringify-safe@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
json5@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
@@ -4832,6 +4997,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@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -5340,6 +5510,13 @@ npm-run-path@^4.0.0:
dependencies:
path-key "^3.0.0"
nth-check@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
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"
@@ -5809,7 +5986,7 @@ prompts@^2.0.1, prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
prop-types@^15.7.2, prop-types@^15.8.1:
prop-types@^15.5.8, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -5869,6 +6046,11 @@ react-devtools-core@4.19.1:
shell-quote "^1.6.1"
ws "^7"
react-fast-compare@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
react-freeze@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.0.tgz#b21c65fe1783743007c8c9a2952b1c8879a77354"
@@ -5943,6 +6125,14 @@ react-native-screens@^3.8.0:
react-freeze "^1.0.0"
warn-once "^0.1.0"
react-native-svg@^12.3.0:
version "12.3.0"
resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-12.3.0.tgz#40f657c5d1ee366df23f3ec8dae76fd276b86248"
integrity sha512-ESG1g1j7/WLD7X3XRFTQHVv0r6DpbHNNcdusngAODIxG88wpTWUZkhcM3A2HJTb+BbXTFDamHv7FwtRKWQ/ALg==
dependencies:
css-select "^4.2.1"
css-tree "^1.0.0-alpha.39"
react-native-url-polyfill@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/react-native-url-polyfill/-/react-native-url-polyfill-1.3.0.tgz#c1763de0f2a8c22cc3e959b654c8790622b6ef6a"
@@ -7290,6 +7480,349 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
victory-area@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-area/-/victory-area-36.3.0.tgz#676aa3c96a5d7ac199fcaad8565310fbd6bdfd2f"
integrity sha512-vf/vR+6k4VyeGOuRvc651fN3ItsU6NoGkHrtafCDmJ/KH9bcwgfQS9uZn0aXHC9Vr9rarbFFTrBC6/gLhBYSRA==
dependencies:
d3-shape "^1.2.0"
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-axis@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-axis/-/victory-axis-36.3.0.tgz#d1f76d7c3df5a81be0355b44f21aff2acf2d0894"
integrity sha512-k4h27pN2RHd1TYLia4SbaFn8NHddf7Mzfmqt4WUCLYmkN+R3xQ3METD+X6kwfZmV6FffclJVoD1Errlar/mGdQ==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-bar@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-bar/-/victory-bar-36.3.0.tgz#b1adf2471eff72071b729e98c3f47c6dd2348625"
integrity sha512-8qitdaC2LYzxuQfbmsZLQ8VQksumbofD1ks0PimYM2exnBdo9nKi5GB0zuLVeuxvq36qlXUpPyH1VRUyUnCMPg==
dependencies:
d3-shape "^1.2.0"
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-box-plot@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-box-plot/-/victory-box-plot-36.3.0.tgz#1692ebd0ebfa4598a6d70fa282171b9bf6fdda6c"
integrity sha512-FtRMRMoGxIqOKMx7bzU0h63BPeRh4tiMvR1xZ+n32SJOFFnTC9YwsCLM6o03lBx5af6PegV05JLZs6dVgKEMcA==
dependencies:
d3-array "^1.2.0"
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-brush-container@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-brush-container/-/victory-brush-container-36.3.0.tgz#ab6a11138e80296c0bc2169de3cb8db11a2f3347"
integrity sha512-iaal/Dn5o113TFZ2i4GIApZq6lsfSx9MwD+1cQ8yEC67/Krzn127AfDXfPYKUiFhD+NvmCTg8OGsryt4MEHbsw==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-core "^36.3.0"
victory-brush-line@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-brush-line/-/victory-brush-line-36.3.0.tgz#b993d7c023eb84fe603f9f3068ee15ab61521695"
integrity sha512-idOU6G1xcS780QR7GEEdBqd+48SQPxzo8pxC3eqdN0IUhdIcEZF/untJhehQiQrt8MFvMQLnpW2k1JaqnV2Peg==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-core "^36.3.0"
victory-candlestick@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-candlestick/-/victory-candlestick-36.3.0.tgz#53346934c591f3df17a447ec187307e65cd8c5dc"
integrity sha512-I2LnJDi/wmYhNyLE3GqJwsxJi/rx0ixY3G5tW3Wp+zmzC3qXfJ8ucU+3qNfL3pj5z5Jda1KYYo0Ei6Rq2k4jwg==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-canvas@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-canvas/-/victory-canvas-36.3.0.tgz#9d78f843add389723bdce4847a9f75f7bb4ff637"
integrity sha512-FQfjjZ7YzBPnVvxg1WMFDeXOcLHRXAD7t6qxS0sDcwGerJ8dn51Iel/Kd+jKiXT25W34pUqMh+cUsGIwkpTsZQ==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-chart@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-chart/-/victory-chart-36.3.0.tgz#b08cf4472e07f4d2fc4e041a34f224c2c92f42f9"
integrity sha512-8BM/xUavO6ineRzhycehHCvf3NT5Z+8YepdvVOVX6PGJUx9rvmZCAVDlB6fDh7kuDdq5mtDFzos+B+BglC1rcA==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-axis "^36.3.0"
victory-core "^36.3.0"
victory-polar-axis "^36.3.0"
victory-shared-events "^36.3.0"
victory-core@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-core/-/victory-core-36.3.0.tgz#193dbd7fcd6e8d48ed9a3dbc855cc4e1ac2e8e13"
integrity sha512-X75h6FvLCO+9u/PbCkHat7CmcOeJrkTLz0uUhLqryofJN81nfZ7VamRDfw5KxDWYlCB5hmxX+dfjzteaqndgeA==
dependencies:
d3-ease "^1.0.0"
d3-interpolate "^1.1.1"
d3-scale "^1.0.0"
d3-shape "^1.2.0"
d3-timer "^1.0.0"
lodash "^4.17.21"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-create-container@^36.3.1:
version "36.3.1"
resolved "https://registry.yarnpkg.com/victory-create-container/-/victory-create-container-36.3.1.tgz#b1ef5d6f310ac3713ca06400ed3a7f2d6d336cbb"
integrity sha512-ved4WQH7UxhQZAHZsRK/B/bqIvQZi6EeHR7CkCgvanjYY3mkCM/avv9TNC5RzrNp/DeRC2xdFoBGVuUaLPLnTw==
dependencies:
lodash "^4.17.19"
victory-brush-container "^36.3.0"
victory-core "^36.3.0"
victory-cursor-container "^36.3.0"
victory-selection-container "^36.3.0"
victory-voronoi-container "^36.3.1"
victory-zoom-container "^36.3.0"
victory-cursor-container@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-cursor-container/-/victory-cursor-container-36.3.0.tgz#3ce87f3ac237818669f21f6b2431209b5b883e98"
integrity sha512-iR+8R1kEul22tifSxr8lnyR0kJ9Wb4VGCVyLgH3VGiJkmbaTRLt0fvKxP+sFbrVIngxTemiVuFBi+nwi48lpAA==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-errorbar@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-errorbar/-/victory-errorbar-36.3.0.tgz#c85eb8036801180e51e1d7161b453ac2dd0ae21d"
integrity sha512-Pa/p/36KH45xBivuJsmHZRiWjVJWAqMzRKZrBrY4sPmItq5KMgmDYJLzMgl4F+ZFCIUt6OQP38MnOq47EgOkFg==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-group@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-group/-/victory-group-36.3.0.tgz#e353ce0017abe7b88e32465984f1ff982c82f596"
integrity sha512-JsO/CMxQrGOv+GK55ssTWtcASVyC2Y9kJ0a6xWyGKAWufGDehvdmwg2HxAcx9QeIu9vQ0qQOYc3Yk2/DwW0bJQ==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-core "^36.3.0"
victory-shared-events "^36.3.0"
victory-histogram@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-histogram/-/victory-histogram-36.3.0.tgz#844f95623ad162628afc34290540d66542c3ab18"
integrity sha512-C1IlANqjiUMOzvpaDQZKLgMVf9wEhYBVm9SpGAHmMSo45fGH89Knp+PgKMFKom2BXjuBPAyZjETdulTKDPOHsw==
dependencies:
d3-array "~2.3.0"
d3-scale "^1.0.0"
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-bar "^36.3.0"
victory-core "^36.3.0"
victory-legend@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-legend/-/victory-legend-36.3.0.tgz#59442db6cb4068e216f324783df4382a7a8f7d84"
integrity sha512-5gaUBXQcJfA4BQpatCG1X/evAgrzBfMIHhbEkwH4jCtt9aVU+b2qMYRs7nw+Rnzz5Cicb6cwajHgem9mv3E04w==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-line@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-line/-/victory-line-36.3.0.tgz#6ffc2cb94a3e3fa82bf38c918923463aacc8fd0d"
integrity sha512-qLDHBcmFRMytKACgDt3z6ktuqTNKHvVPifoSrAnORfFlXxMJlGB8+XZAGeAP6DeC5jDOb+sc6DFKzSOIvFLnqA==
dependencies:
d3-shape "^1.2.0"
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-native@^36.3.1:
version "36.3.1"
resolved "https://registry.yarnpkg.com/victory-native/-/victory-native-36.3.1.tgz#a608a4d9735fb91ed892ce31765b8a701943a548"
integrity sha512-jxW3ylxEPJuBpBxOusE/32Xnn1OXdPr4GbpPpvz90rgnUi8gTwLxogX2qROrdbXNqzOWb96Wa4eslNFq3J0etw==
dependencies:
victory "^36.3.1"
victory-area "^36.3.0"
victory-axis "^36.3.0"
victory-bar "^36.3.0"
victory-box-plot "^36.3.0"
victory-brush-container "^36.3.0"
victory-brush-line "^36.3.0"
victory-candlestick "^36.3.0"
victory-chart "^36.3.0"
victory-core "^36.3.0"
victory-create-container "^36.3.1"
victory-cursor-container "^36.3.0"
victory-errorbar "^36.3.0"
victory-group "^36.3.0"
victory-histogram "^36.3.0"
victory-legend "^36.3.0"
victory-line "^36.3.0"
victory-pie "^36.3.0"
victory-polar-axis "^36.3.0"
victory-scatter "^36.3.0"
victory-selection-container "^36.3.0"
victory-shared-events "^36.3.0"
victory-stack "^36.3.0"
victory-tooltip "^36.3.0"
victory-voronoi "^36.3.0"
victory-voronoi-container "^36.3.1"
victory-zoom-container "^36.3.0"
victory-pie@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-pie/-/victory-pie-36.3.0.tgz#4ccb60df9d203af03d60c9dadd1a3cbeb3e571a2"
integrity sha512-ZApiB4OW2l6vHSxRZpaqklQ9gnOshqqZBCHgcyr2kbx+oLJMeKi+mJbh/YS1btFCPwL7bSSO4EYdBuaGyAX9VA==
dependencies:
d3-shape "^1.0.0"
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-polar-axis@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-polar-axis/-/victory-polar-axis-36.3.0.tgz#f32c75461a635a518e6d103f5dbc6248192303de"
integrity sha512-xbxHDMJi3CG1dB8ATiURNg0NVVECk0z82soAwVSA5jPmGRmW4t8ByKBfSsw/ommeDclJ95X8+jtR1Jxd+mjsfw==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-scatter@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-scatter/-/victory-scatter-36.3.0.tgz#79e35718050de36aa3cb705999186c48bb794e39"
integrity sha512-PfgM/y7tV/e1Y3ew5R2wvM1O11+EXoToQ2KR0/WTzybwD6R5OghgbcM1xS2NUCtOeubYDkkXjBogZc0rDyyfjA==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-selection-container@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-selection-container/-/victory-selection-container-36.3.0.tgz#c5b171df47c3706545915a57e2f36cf0b3d58cb3"
integrity sha512-RdFkmxoy2HkbZ9ebuj5Mlx+/OTtPjoUO+FYXItc/Le+HWcGNvkhzmyfZJ+JZAi7atwevCEQawsdUHslIf9mZig==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-shared-events@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-shared-events/-/victory-shared-events-36.3.0.tgz#cd8a715f137937865c84f99d9885fd06b2e0a448"
integrity sha512-XnTzwlRy7uUgBm8NW1tLn4wx3M4lkFO/jA3DHFMYgCVzq+Fu7Tu+BmMPZ8m5DxZFwxKP4HVlYuYKwoQu7yerWA==
dependencies:
json-stringify-safe "^5.0.1"
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-core "^36.3.0"
victory-stack@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-stack/-/victory-stack-36.3.0.tgz#c2e5e354640e79e74ae9b57fde390875c2653bd8"
integrity sha512-QtW+UReATWUojUyv2II+i0d+RonLRcxFIhCFPO4Eo6tHS7ZqvBQWii0N3FRlbl65h2jW4By+xjoNxyHoSsbJJQ==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-core "^36.3.0"
victory-shared-events "^36.3.0"
victory-tooltip@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-tooltip/-/victory-tooltip-36.3.0.tgz#0905c681404e5348c00e3b84505734ef14a493bc"
integrity sha512-GM8hOmbcKZRQCtWDi9bJrqvjUEryqwXcw8onz5sFGvPPONLu7nYKCO0s6/m3wCHqAWqotPpu6FTtxXSChYJ6kA==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-voronoi-container@^36.3.1:
version "36.3.1"
resolved "https://registry.yarnpkg.com/victory-voronoi-container/-/victory-voronoi-container-36.3.1.tgz#b842c966102bbcb2f39d6a72fb93bf23aef1cc0b"
integrity sha512-bFznyx0dLRb84nrGhOslN/e/3mfEGCmlPbvEFv8SGBVZxvAQv2go4byhZx4qvFbcKf2Wyx8svyxCsfS9g/OsEw==
dependencies:
delaunay-find "0.0.6"
lodash "^4.17.19"
prop-types "^15.5.8"
react-fast-compare "^2.0.0"
victory-core "^36.3.0"
victory-tooltip "^36.3.0"
victory-voronoi@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-voronoi/-/victory-voronoi-36.3.0.tgz#14a650b464dd8dbc8d0763870e01c3fa280abf5b"
integrity sha512-P+DMO+mLtpqsH1rfnLBBKanObnk55X44km+eIiqr3NuFJBVOT5XCaiv2p6gbU1adv5ciAxxpN6KAo8TgZwupgg==
dependencies:
d3-voronoi "^1.1.2"
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory-zoom-container@^36.3.0:
version "36.3.0"
resolved "https://registry.yarnpkg.com/victory-zoom-container/-/victory-zoom-container-36.3.0.tgz#9485d4a7bc93ac41268f5903b77b38fccdf78629"
integrity sha512-FG+nh5pi4xCP7EBI+rtc0q3U6RrkOW+ophOgpGCpNGswvvuREl+DtdS/dPjYk+Ktt45f1qmVrT26ovJ4IiMKEA==
dependencies:
lodash "^4.17.19"
prop-types "^15.5.8"
victory-core "^36.3.0"
victory@^36.3.1:
version "36.3.1"
resolved "https://registry.yarnpkg.com/victory/-/victory-36.3.1.tgz#3fef0db8f0e65291d48263db2bc2cec5d0a669f8"
integrity sha512-zqmld8hwkV9ysYRUIwfIR1/smjhLEr+m8XZ5xLPK7Io3BLUEcdeJd7bK/Edb4Scv91DodkF9d5DVmvyzEph89g==
dependencies:
victory-area "^36.3.0"
victory-axis "^36.3.0"
victory-bar "^36.3.0"
victory-box-plot "^36.3.0"
victory-brush-container "^36.3.0"
victory-brush-line "^36.3.0"
victory-candlestick "^36.3.0"
victory-canvas "^36.3.0"
victory-chart "^36.3.0"
victory-core "^36.3.0"
victory-create-container "^36.3.1"
victory-cursor-container "^36.3.0"
victory-errorbar "^36.3.0"
victory-group "^36.3.0"
victory-histogram "^36.3.0"
victory-legend "^36.3.0"
victory-line "^36.3.0"
victory-pie "^36.3.0"
victory-polar-axis "^36.3.0"
victory-scatter "^36.3.0"
victory-selection-container "^36.3.0"
victory-shared-events "^36.3.0"
victory-stack "^36.3.0"
victory-tooltip "^36.3.0"
victory-voronoi "^36.3.0"
victory-voronoi-container "^36.3.1"
victory-zoom-container "^36.3.0"
vlq@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468"