Commit cf4c555d authored by Malsha Rathnasiri's avatar Malsha Rathnasiri

create chat send logic

parent 7cca654f
node_modules/ node_modules/
node_modules2/
.expo/ .expo/
dist/ dist/
npm-debug.* npm-debug.*
......
...@@ -3,7 +3,8 @@ import { SafeAreaProvider } from 'react-native-safe-area-context'; ...@@ -3,7 +3,8 @@ import { SafeAreaProvider } from 'react-native-safe-area-context';
import useCachedResources from './hooks/useCachedResources'; import useCachedResources from './hooks/useCachedResources';
import useColorScheme from './hooks/useColorScheme'; import useColorScheme from './hooks/useColorScheme';
import Navigation from './navigation'; import Navigation from './navigation/index';
import { NativeBaseProvider, Box } from "native-base";
export default function App() { export default function App() {
const isLoadingComplete = useCachedResources(); const isLoadingComplete = useCachedResources();
...@@ -13,10 +14,13 @@ export default function App() { ...@@ -13,10 +14,13 @@ export default function App() {
return null; return null;
} else { } else {
return ( return (
<NativeBaseProvider>
<SafeAreaProvider> <SafeAreaProvider>
<Navigation colorScheme={colorScheme} /> <Navigation colorScheme={colorScheme} />
<StatusBar /> <StatusBar />
</SafeAreaProvider> </SafeAreaProvider>
</NativeBaseProvider>
); );
} }
} }
import React, { createContext, useContext, useState, useEffect, useLayoutEffect } from "react"; import React, { createContext, useContext, useState, useEffect, useLayoutEffect } from "react";
import axios from "axios"; import axios from "axios";
import { LOCALHOST } from "./constants"; import { BACKEND_URL } from "./constants";
// import { nexlAxios } from "../../constants/helper"; // import { nexlAxios } from "../../constants/helper";
import AsyncStorage from "@react-native-async-storage/async-storage"; import AsyncStorage from '@react-native-async-storage/async-storage';
import { Platform } from 'react-native'
// import { // import {
// IAuthContext, // IAuthContext,
// IAuthRequest, // IAuthRequest,
...@@ -48,28 +49,34 @@ import AsyncStorage from "@react-native-async-storage/async-storage"; ...@@ -48,28 +49,34 @@ import AsyncStorage from "@react-native-async-storage/async-storage";
// const endpoint = getEnvironment().endpoint; // const endpoint = getEnvironment().endpoint;
export const login = async (username, password) => { export const login = async (username, password) => {
const endpoint = false ? 'register' : 'login'; const endpoint = false ? 'register' : 'login';
const payload = { username: username, password: password } const payload = { username: username, password: password }
const headers = new Headers({ "Content-Type": 'application./json','mode': 'no-cors', 'Access-Control-Allow-Headers': '*' }) const headers = new Headers({ "Content-Type": 'application./json', 'mode': 'no-cors', 'Access-Control-Allow-Headers': '*' })
const options = { method: 'POST', data: payload, headers } const options = { method: 'POST', data: payload, headers }
axios.defaults.baseURL = 'http://127.0.0.1:8000'; axios.defaults.baseURL = BACKEND_URL;
axios.defaults.timeout = 1500; axios.defaults.timeout = 1500;
console.log({payload}) console.log({ payload })
return axios.post('/api/auth/token/obtain/', payload) return axios.post('/api/auth/token/obtain/', payload)
.then(response => { .then(async (response) => {
const { access, refresh, user } = response.data; const { access, refresh, user } = response.data;
axios.defaults.headers.common.Authorization = `Token ${token}`; axios.defaults.headers.common.Authorization = `Token ${access}`;
AsyncStorage.setItem('user_id', user.id)
AsyncStorage.setitem('username',user.username) if (Platform.OS = 'web') {
AsyncStorage.setItem('user_email', user.email) console.log('no storage')
AsyncStorage.setitem('access_token', access) } else {
AsyncStorage.setItem('refresh_token', refresh) await AsyncStorage.setItem('user_id', user.id)
await AsyncStorage.setitem('username', user.username)
// AsyncStorage.setItem('user_email', user.email)
// AsyncStorage.setitem('access_token', access)
// AsyncStorage.setItem('refresh_token', refresh)
}
console.log("login successful") console.log("login successful")
......
import { BACKEND_URL } from "./constants"
const token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjYxMzU2NDA5LCJpYXQiOjE2NjAxNDY4MDksImp0aSI6ImFhMTljMmY2ZDNkMzRiNDdhZmZmM2FjMzVjNzI4MWJhIiwidXNlcl9pZCI6MX0.IVzibo_Rf2xzoT1J5o1L3zwu3mco6ODcNPC-7imu3Lo"
const headers = new Headers({ authorization: `Bearer ${token}`, 'Content-Type': 'application/json' })
export const create = (resource, values) => {
try {
return fetch(`${BACKEND_URL}/${resource}/`, { method: 'POST', body: JSON.stringify(values), headers })
}
catch (e) {
console.log(e)
}
}
export const getList = (resource) => {
return fetch(`${BACKEND_URL}/${resource}/`, { method: 'GET', headers: headers })
}
\ No newline at end of file
export const LOCALHOST = "http://127.0.0.1:8000" // export const BACKEND_URL = "http://192.168.8.103:8000"
\ No newline at end of file export const BACKEND_URL = "https://675d-123-231-127-199.in.ngrok.io"
\ No newline at end of file
...@@ -3,6 +3,7 @@ import { Text, View, StyleSheet, Button } from 'react-native'; ...@@ -3,6 +3,7 @@ import { Text, View, StyleSheet, Button } from 'react-native';
import { Audio } from 'expo-av'; import { Audio } from 'expo-av';
import { createIconSetFromFontello } from '@expo/vector-icons'; import { createIconSetFromFontello } from '@expo/vector-icons';
import * as FileSystem from 'expo-file-system'; import * as FileSystem from 'expo-file-system';
import { BACKEND_URL } from '../api/constants';
export const AudioRecorder = ({ setDetectedText }) => { export const AudioRecorder = ({ setDetectedText }) => {
...@@ -35,13 +36,8 @@ export const AudioRecorder = ({ setDetectedText }) => { ...@@ -35,13 +36,8 @@ export const AudioRecorder = ({ setDetectedText }) => {
await recording.stopAndUnloadAsync(); await recording.stopAndUnloadAsync();
const uri = recording.getURI(); const uri = recording.getURI();
console.log('Recording stopped and stored at', uri)
//console.log(recording)
console.log('Recording stopped and stored at', uri);
console.log(recording)
const headers = { const headers = {
'Content-Type': 'multipart/form-data' 'Content-Type': 'multipart/form-data'
...@@ -49,9 +45,13 @@ export const AudioRecorder = ({ setDetectedText }) => { ...@@ -49,9 +45,13 @@ export const AudioRecorder = ({ setDetectedText }) => {
} }
playSound(uri) playSound(uri)
FileSystem.uploadAsync("https://ebf4-2401-dd00-10-20-4ca2-920b-4150-8178.in.ngrok.io/mlmodels/detect/", uri, { headers: headers, uploadType: FileSystem.FileSystemUploadType.MULTIPART }) FileSystem.uploadAsync(`${BACKEND_URL}/mlmodels/detect/`, uri, { headers: headers, uploadType: FileSystem.FileSystemUploadType.MULTIPART })
.then(data => JSON.parse(data.body)) .then(data => JSON.parse(data.body))
.then(data => { console.log({ result: data }); setDetectedText(data.result); setTimeout(() => setDetectedText(''), 1000) }) .then(data => {
// console.log({ result: data });
setDetectedText(data.result);
// setTimeout(() => setDetectedText(''), 1000)
})
.catch(err => console.log({ err })) .catch(err => console.log({ err }))
......
...@@ -7,6 +7,7 @@ import { FontAwesome } from '@expo/vector-icons'; ...@@ -7,6 +7,7 @@ import { FontAwesome } from '@expo/vector-icons';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { NavigationContainer, DefaultTheme, DarkTheme } from '@react-navigation/native'; import { NavigationContainer, DefaultTheme, DarkTheme } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { Toast } from 'native-base';
import * as React from 'react'; import * as React from 'react';
import { ColorSchemeName, Pressable } from 'react-native'; import { ColorSchemeName, Pressable } from 'react-native';
import { login } from '../api/Authentication'; import { login } from '../api/Authentication';
...@@ -19,9 +20,10 @@ import NotFoundScreen from '../screens/NotFoundScreen'; ...@@ -19,9 +20,10 @@ import NotFoundScreen from '../screens/NotFoundScreen';
import ChatScreen from '../screens/TabOneScreen'; import ChatScreen from '../screens/TabOneScreen';
import TabTwoScreen from '../screens/TabTwoScreen'; import TabTwoScreen from '../screens/TabTwoScreen';
import { RootStackParamList, RootTabParamList, RootTabScreenProps } from '../types'; import { RootStackParamList, RootTabParamList, RootTabScreenProps } from '../types';
import { ERROR_TOAST_PROPS } from '../util/util';
import LinkingConfiguration from './LinkingConfiguration'; import LinkingConfiguration from './LinkingConfiguration';
export default function Navigation({ colorScheme }: { colorScheme: ColorSchemeName }) { export default function Navigation({ colorScheme }) {
return ( return (
<NavigationContainer <NavigationContainer
linking={LinkingConfiguration} linking={LinkingConfiguration}
...@@ -35,14 +37,17 @@ export default function Navigation({ colorScheme }: { colorScheme: ColorSchemeNa ...@@ -35,14 +37,17 @@ export default function Navigation({ colorScheme }: { colorScheme: ColorSchemeNa
* A root stack navigator is often used for displaying modals on top of all other content. * A root stack navigator is often used for displaying modals on top of all other content.
* https://reactnavigation.org/docs/modal * https://reactnavigation.org/docs/modal
*/ */
const Stack = createNativeStackNavigator<RootStackParamList>(); const Stack = createNativeStackNavigator();
function RootNavigator() { function RootNavigator() {
const [isAuthenticated, setIsAutheticated] = React.useState(false) const [isAuthenticated, setIsAutheticated] = React.useState(true)
const onLogin = async (username: String, password: String) => { const onLogin = async (username, password) => {
await login(username, password).then(() => setIsAutheticated(true)).catch(e => console.log(e)) await login(username, password).then(() => setIsAutheticated(true)).catch(e => {
console.log(e)
Toast.show({ title: 'Error logging in! Try again', ...ERROR_TOAST_PROPS })
})
} }
const onLogout = () => { const onLogout = () => {
...@@ -67,7 +72,7 @@ function RootNavigator() { ...@@ -67,7 +72,7 @@ function RootNavigator() {
* A bottom tab navigator displays tab buttons on the bottom of the display to switch screens. * A bottom tab navigator displays tab buttons on the bottom of the display to switch screens.
* https://reactnavigation.org/docs/bottom-tab-navigator * https://reactnavigation.org/docs/bottom-tab-navigator
*/ */
const BottomTab = createBottomTabNavigator<RootTabParamList>(); const BottomTab = createBottomTabNavigator();
function BottomTabNavigator({ onLogout }) { function BottomTabNavigator({ onLogout }) {
const colorScheme = useColorScheme(); const colorScheme = useColorScheme();
...@@ -81,7 +86,7 @@ function BottomTabNavigator({ onLogout }) { ...@@ -81,7 +86,7 @@ function BottomTabNavigator({ onLogout }) {
<BottomTab.Screen <BottomTab.Screen
name="TabOne" name="TabOne"
component={ChatScreen} component={ChatScreen}
options={({ navigation }: RootTabScreenProps<'TabOne'>) => ({ options={({ navigation }) => ({
title: 'Chat', title: 'Chat',
tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />, tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />,
headerRight: () => ( headerRight: () => (
...@@ -116,9 +121,6 @@ function BottomTabNavigator({ onLogout }) { ...@@ -116,9 +121,6 @@ function BottomTabNavigator({ onLogout }) {
/** /**
* You can explore the built-in icon families and icons on the web at https://icons.expo.fyi/ * You can explore the built-in icon families and icons on the web at https://icons.expo.fyi/
*/ */
function TabBarIcon(props: { function TabBarIcon(props) {
name: React.ComponentProps<typeof FontAwesome>['name'];
color: string;
}) {
return <FontAwesome size={30} style={{ marginBottom: -3 }} {...props} />; return <FontAwesome size={30} style={{ marginBottom: -3 }} {...props} />;
} }
...@@ -32,11 +32,13 @@ ...@@ -32,11 +32,13 @@
"expo-status-bar": "~1.2.0", "expo-status-bar": "~1.2.0",
"expo-web-browser": "~10.1.0", "expo-web-browser": "~10.1.0",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"native-base": "^3.4.11",
"react": "17.0.1", "react": "17.0.1",
"react-dom": "17.0.1", "react-dom": "17.0.1",
"react-native": "0.64.3", "react-native": "0.64.3",
"react-native-safe-area-context": "3.3.2", "react-native-safe-area-context": "3.3.2",
"react-native-screens": "~3.10.1", "react-native-screens": "~3.10.1",
"react-native-svg": "12.1.1",
"react-native-web": "0.17.1" "react-native-web": "0.17.1"
}, },
"devDependencies": { "devDependencies": {
......
import React, { useEffect, useState } from 'react' import React, { useEffect, useState } from 'react'
import { FlatList, StyleSheet, TextInput, SectionList } from 'react-native'; import { FlatList, StyleSheet, TextInput, SectionList, Button, ActivityIndicator } from 'react-native';
import { AudioRecorder } from '../components/AudioRecorder'; import { AudioRecorder } from '../components/AudioRecorder';
import _ from 'lodash' import _ from 'lodash'
import EditScreenInfo from '../components/EditScreenInfo'; import EditScreenInfo from '../components/EditScreenInfo';
import { Text, View } from '../components/Themed'; import { Text, View } from '../components/Themed';
import { RootTabScreenProps } from '../types'; import { RootTabScreenProps } from '../types';
import { create, getList } from '../api/api';
export default function ChatScreen({ navigation }) { export default function ChatScreen({ navigation }) {
...@@ -22,25 +23,22 @@ export default function ChatScreen({ navigation }) { ...@@ -22,25 +23,22 @@ export default function ChatScreen({ navigation }) {
{ from: 'dri', to: "esh", message: 'msg3', time: currentTime.setDate(currentTime.getDate() - 3) }, { from: 'dri', to: "esh", message: 'msg3', time: currentTime.setDate(currentTime.getDate() - 3) },
{ from: 'esh', to: "dri", message: 'msg4', time: currentTime.setDate(currentTime.getDate() - 4) }, { from: 'esh', to: "dri", message: 'msg4', time: currentTime.setDate(currentTime.getDate() - 4) },
{ from: 'dri', to: "esh", message: 'msg5', time: currentTime.setDate(currentTime.getDate() - 5) }, { from: 'dri', to: "esh", message: 'msg5', time: currentTime.setDate(currentTime.getDate() - 5) },
] ]
const [detectedText, setDetectedText] = useState("") const [detectedText, setDetectedText] = useState("")
const [chatDetails, setChatDetails] = useState({ from: "esh", to: 'dri' }) const [chatDetails, setChatDetails] = useState({ from_user: 1, to_user: 2, conversation_id: 1 })
const [chats, setChats] = useState(defaultChatData) const [chats, setChats] = useState([])
const [input, setInput] = useState('test')
const [loading, setLoading] = useState(true)
const ws = new WebSocket('ws://localhost:3000/ws') const ws = new WebSocket('ws://localhost:3000/ws')
const sections = [...new Set(chats.map(chat => new Date(chat.time).setHours(0, 0, 0, 0)))];
const sectionChats = sections.map(section => ({ title: section, data: chats.filter(chat => new Date(chat.time).setHours(0, 0, 0, 0) == section) })) useEffect(() => {
loadChats()
// useEffect(() => {
// startWebsocket() // startWebsocket()
// }, []) }, [])
const startWebsocket = () => { const startWebsocket = () => {
ws.onopen = () => { ws.onopen = () => {
...@@ -63,6 +61,29 @@ export default function ChatScreen({ navigation }) { ...@@ -63,6 +61,29 @@ export default function ChatScreen({ navigation }) {
} }
const loadChats = async () => {
await getList('chats').then(res => {
return res.json()
}).then(res => {
// console.log(res)
const chats = res.results
const sections = [...new Set(chats.map(chat => new Date(chat.timestamp).setHours(0, 0, 0, 0)))];
const sectionChats = sections.map(section => ({ title: section, data: chats.filter(chat => new Date(chat.timestamp).setHours(0, 0, 0, 0) == section) }))
setChats(sectionChats)
})
setLoading(false)
}
const onSendPress = () => {
create('chats', { message: input, from_user: chatDetails.from_user, to_user: chatDetails.to_user, conversation: chatDetails.conversation_id }).then(response => {
// console.log(response)
})
setLoading(true)
setInput('')
loadChats()
}
return ( return (
<View style={styles.container}> <View style={styles.container}>
{/* <Text style={styles.title}>Tab One</Text> {/* <Text style={styles.title}>Tab One</Text>
...@@ -75,19 +96,23 @@ export default function ChatScreen({ navigation }) { ...@@ -75,19 +96,23 @@ export default function ChatScreen({ navigation }) {
<View style={{ display: 'flex', flex: 0.9, justifyContent: 'space-between' }}> <View style={{ display: 'flex', flex: 0.9, justifyContent: 'space-between' }}>
{/* <View style={{ alignItems: 'center', justifyContent: 'center', flex: 1}}><Text style={{ fontSize: 50, color: 'white' }}>{detectedText}</Text> {/* <View style={{ alignItems: 'center', justifyContent: 'center', flex: 1}}><Text style={{ fontSize: 50, color: 'white' }}>{detectedText}</Text>
</View> */} </View> */}
{loading ? <ActivityIndicator /> :
<SectionList <SectionList
refreshing={loading}
onRefresh={() => loadChats()}
inverted={true} inverted={true}
sections={sectionChats} sections={chats}
keyExtractor={(item, index) => item + index} keyExtractor={(item, index) => item + index}
renderItem={({ item }) => { renderItem={({ item }) => {
// console.log({ item }) // console.log({ item })
return ( return (
<View style={{ margin: 5, padding: 5 }}><Text <View style={{ margin: 5, padding: 5 }}><Text
style={[{ textAlign: chatDetails.from == item.from ? 'right' : 'left', backgroundColor: 'blue', borderRadius: 5, padding: 5 }, style={[{ textAlign: chatDetails.from_user == item.from_user ? 'right' : 'left', backgroundColor: chatDetails.from_user == item.from_user ? 'blue' : 'green', borderRadius: 5, padding: 5 },
chatDetails.from == item.from ? { marginLeft: 'auto' } : { marginRight: 'auto' } chatDetails.from_user == item.from_user ? { marginLeft: 'auto' } : { marginRight: 'auto' }
]} ]}
key={item.time}>{item.message}</Text> key={item.time}>{item.message}</Text>
<Text style={{ textAlign: chatDetails.from == item.from ? 'right' : 'left', color: 'gray' }}>{new Date(item.time).toLocaleTimeString().slice(0, 5)}</Text></View> <Text style={{ textAlign: chatDetails.from_user == item.from_user ? 'right' : 'left', color: 'gray', fontSize: 11 }}>{new Date(item.timestamp).toLocaleTimeString()}</Text></View>
) )
}} }}
invertStickyHeaders invertStickyHeaders
...@@ -108,6 +133,7 @@ export default function ChatScreen({ navigation }) { ...@@ -108,6 +133,7 @@ export default function ChatScreen({ navigation }) {
}} }}
/> />
}
{/* <FlatList {/* <FlatList
inverted={true} inverted={true}
style={{ alignContent: 'flex-end' }} style={{ alignContent: 'flex-end' }}
...@@ -129,12 +155,24 @@ export default function ChatScreen({ navigation }) { ...@@ -129,12 +155,24 @@ export default function ChatScreen({ navigation }) {
</View> </View>
<View style={{ flex: 0.1, backgroundColor: 'rgb(10,10,10)' }}> <View style={{ flex: 0.1, backgroundColor: 'rgb(10,10,10)' }}>
<View style={{ flexDirection: 'row', display: 'flex', height: '100%' }}> <View style={{ flexDirection: 'row', display: 'flex', height: '100%' }}>
<View style={{ flex: 0.8, backgroundColor: 'rgb(10,10,10)', height: '100%' }}></View> <View style={{ flex: 0.8, backgroundColor: 'rgb(10,10,10)', height: '100%' }}>
<View style={{ flex: 0.2, backgroundColor: 'rgb(10,10,10)', height: '100%' }}><AudioRecorder setDetectedText={setDetectedText} /></View> <TextInput
style={{ borderWidth: 2, borderColor: 'gray', color: 'white', padding: 5, borderRadius: 5 }}
defaultValue={input}
onChange={(e) => setInput(e.target.value)}></TextInput>
</View> </View>
{input ?
<View style={{ flex: 0.2, backgroundColor: 'rgb(10,10,10)', height: '100%' }}>
<Button style={{ width: '100%', backgroundColor: 'rgb(10,10,10)', height: '100%' }} title='Send' onPress={onSendPress} />
</View>
:
<View style={{ flex: 0.2, backgroundColor: 'rgb(10,10,10)', height: '100%' }}><AudioRecorder setDetectedText={setInput} /></View>
}
</View> </View>
</View> </View>
</View> </View>
</View>
); );
} }
......
...@@ -3,6 +3,8 @@ import { StyleSheet, TextInput } from 'react-native'; ...@@ -3,6 +3,8 @@ import { StyleSheet, TextInput } from 'react-native';
import EditScreenInfo from '../components/EditScreenInfo'; import EditScreenInfo from '../components/EditScreenInfo';
import { Text, View } from '../components/Themed'; import { Text, View } from '../components/Themed';
import { TouchableOpacity } from 'react-native'; import { TouchableOpacity } from 'react-native';
import { Toast } from 'native-base';
import { ERROR_TOAST_PROPS } from '../util/util';
const LoginForm = ({ onLogin }) => { const LoginForm = ({ onLogin }) => {
...@@ -16,9 +18,9 @@ const LoginForm = ({ onLogin }) => { ...@@ -16,9 +18,9 @@ const LoginForm = ({ onLogin }) => {
<> <>
<TextInput style={styles.input} <TextInput style={styles.input}
defaultValue={username} defaultValue={username}
onChange={(e) => { onChangeText={(e) => {
console.log(username); console.log(e);
setUsername(e.target.value)}} setUsername(e)}}
autoCapitalize="none" autoCapitalize="none"
onSubmitEditing={() => passwordInput.focus()} onSubmitEditing={() => passwordInput.focus()}
autoCorrect={false} autoCorrect={false}
...@@ -29,7 +31,7 @@ const LoginForm = ({ onLogin }) => { ...@@ -29,7 +31,7 @@ const LoginForm = ({ onLogin }) => {
<TextInput style={styles.input} <TextInput style={styles.input}
defaultValue={password} defaultValue={password}
onChange={(e) => setPassword(e.target.value)} onChangeText={(e) => setPassword(e)}
returnKeyType="go" returnKeyType="go"
ref={(input) => passwordInput = input} ref={(input) => passwordInput = input}
placeholder='Password' placeholder='Password'
...@@ -38,9 +40,15 @@ const LoginForm = ({ onLogin }) => { ...@@ -38,9 +40,15 @@ const LoginForm = ({ onLogin }) => {
<TouchableOpacity style={styles.buttonContainer} <TouchableOpacity style={styles.buttonContainer}
// onPress={onButtonPress} // onPress={onButtonPress}
// disabled={!username || !password}
onPress={() => { onPress={() => {
console.log({ username, password }) console.log({ username, password })
if(!username || !password){
Toast.show({title: 'Please fill in all the fields!', ...ERROR_TOAST_PROPS})
}else{
onLogin(username, password) onLogin(username, password)
}
}} }}
> >
<Text style={styles.buttonText}>LOGIN</Text> <Text style={styles.buttonText}>LOGIN</Text>
......
export const TOAST_PROPS = {placement : 'top'}
export const ERROR_TOAST_PROPS = {...TOAST_PROPS, style:{backgroundColor: 'red'}}
\ No newline at end of file
...@@ -1027,6 +1027,13 @@ ...@@ -1027,6 +1027,13 @@
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.6.2", "@babel/runtime@^7.8.7":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.0.0", "@babel/template@^7.16.7", "@babel/template@^7.3.3": "@babel/template@^7.0.0", "@babel/template@^7.16.7", "@babel/template@^7.3.3":
version "7.16.7" version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
...@@ -1278,6 +1285,45 @@ ...@@ -1278,6 +1285,45 @@
lodash.pick "^4.4.0" lodash.pick "^4.4.0"
lodash.template "^4.5.0" lodash.template "^4.5.0"
"@formatjs/ecma402-abstract@1.11.8":
version "1.11.8"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.8.tgz#f4015dfb6a837369d94c6ba82455c609e45bce20"
integrity sha512-fgLqyWlwmTEuqV/TSLEL/t9JOmHNLFvCdgzXB0jc2w+WOItPCOJ1T0eyN6fQBQKRPfSqqNlu+kWj7ijcOVTVVQ==
dependencies:
"@formatjs/intl-localematcher" "0.2.28"
tslib "2.4.0"
"@formatjs/fast-memoize@1.2.4":
version "1.2.4"
resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.4.tgz#4b5ddce9eb7803ff0bd4052387672151a8b7f8a0"
integrity sha512-9ARYoLR8AEzXvj2nYrOVHY/h1dDMDWGTnKDLXSISF1uoPakSmfcZuSqjiqZX2wRkEUimPxdwTu/agyozBtZRHA==
dependencies:
tslib "2.4.0"
"@formatjs/icu-messageformat-parser@2.1.4":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.4.tgz#f1e32b9937f151c1dd5c30536ce3e920b7f23813"
integrity sha512-3PqMvKWV1oyok0BuiXUAHIaotdhdTJw6OICqCZbfUgKT+ZRwRWO4IlCgvXJeCITaKS5p+PY0XXKjf/vUyIpWjQ==
dependencies:
"@formatjs/ecma402-abstract" "1.11.8"
"@formatjs/icu-skeleton-parser" "1.3.10"
tslib "2.4.0"
"@formatjs/icu-skeleton-parser@1.3.10":
version "1.3.10"
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.10.tgz#2f504e56ac80137ee2baad55c7fa0b5dc7f4e4df"
integrity sha512-kXJmtLDqFF5aLTf8IxdJXnhrIX1Qb4Qp3a9jqRecGDYfzOa9hMhi9U0nKyhrJJ4cXxBzptcgb+LWkyeHL6nlBQ==
dependencies:
"@formatjs/ecma402-abstract" "1.11.8"
tslib "2.4.0"
"@formatjs/intl-localematcher@0.2.28":
version "0.2.28"
resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.28.tgz#412ea7fefbfc7ed33cd6b43aa304fc14d816e564"
integrity sha512-FLsc6Gifs1np/8HnCn/7Q+lHMmenrD5fuDhRT82yj0gi9O19kfaFwjQUw1gZsyILuRyT93GuzdifHj7TKRhBcw==
dependencies:
tslib "2.4.0"
"@hapi/hoek@^9.0.0": "@hapi/hoek@^9.0.0":
version "9.2.1" version "9.2.1"
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17"
...@@ -1290,6 +1336,35 @@ ...@@ -1290,6 +1336,35 @@
dependencies: dependencies:
"@hapi/hoek" "^9.0.0" "@hapi/hoek" "^9.0.0"
"@internationalized/date@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.0.1.tgz#66332e9ca8f59b7be010ca65d946bca430ba4b66"
integrity sha512-E/3lASs4mAeJ2Z2ye6ab7eUD0bPUfTeNVTAv6IS+ne9UtMu9Uepb9A1U2Ae0hDr6WAlBuvUtrakaxEdYB9TV6Q==
dependencies:
"@babel/runtime" "^7.6.2"
"@internationalized/message@^3.0.9":
version "3.0.9"
resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.0.9.tgz#52bc20debe5296375d66ffcf56c3df5d8118a37d"
integrity sha512-yHQggKWUuSvj1GznVtie4tcYq+xMrkd/lTKCFHp6gG18KbIliDw+UI7sL9+yJPGuWiR083xuLyyhzqiPbNOEww==
dependencies:
"@babel/runtime" "^7.6.2"
intl-messageformat "^10.1.0"
"@internationalized/number@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.1.1.tgz#160584316741de4381689ab759001603ee17b595"
integrity sha512-dBxCQKIxvsZvW2IBt3KsqrCfaw2nV6o6a8xsloJn/hjW0ayeyhKuiiMtTwW3/WGNPP7ZRyDbtuiUEjMwif1ENQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@internationalized/string@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.0.0.tgz#de563871e1b19e4d0ce3246ec18d25da1a73db73"
integrity sha512-NUSr4u+mNu5BysXFeVWZW4kvjXylPkU/YYqaWzdNuz1eABfehFiZTEYhWAAMzI3U8DTxfqF9PM3zyhk5gcfz6w==
dependencies:
"@babel/runtime" "^7.6.2"
"@istanbuljs/load-nyc-config@^1.0.0": "@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
...@@ -1556,6 +1631,403 @@ ...@@ -1556,6 +1631,403 @@
"@nodelib/fs.scandir" "2.1.5" "@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0" fastq "^1.6.0"
"@react-aria/checkbox@^3.2.1":
version "3.5.0"
resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.5.0.tgz#2d99957cdaf95b13b958159134a4894c0c6e7f47"
integrity sha512-U3SXfiVus/aF3S3v9aTPILRZBnUzHs5JJhile9CXIe1YoPam8u12s4G+aS55rrwoa3XLcnvZbPbwlShcc8bjaA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/label" "^3.4.0"
"@react-aria/toggle" "^3.3.2"
"@react-aria/utils" "^3.13.2"
"@react-stately/checkbox" "^3.2.0"
"@react-stately/toggle" "^3.4.0"
"@react-types/checkbox" "^3.3.2"
"@react-types/shared" "^3.14.0"
"@react-aria/combobox@^3.0.0-alpha.1":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.4.0.tgz#5a59b70783fd2851c2dc79d50c2a869958eec965"
integrity sha512-XJrPXGUroSh536/+Ud4akQ9+r9wJKzJxZDIE1S2gWxf0zGqbWPtSrKk6Eg7oVEJHcWi7rETmmFZM7othiDRWaA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/i18n" "^3.5.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/listbox" "^3.6.0"
"@react-aria/live-announcer" "^3.1.1"
"@react-aria/menu" "^3.6.0"
"@react-aria/overlays" "^3.10.0"
"@react-aria/selection" "^3.10.0"
"@react-aria/textfield" "^3.7.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/combobox" "^3.2.0"
"@react-stately/layout" "^3.6.0"
"@react-types/button" "^3.6.0"
"@react-types/combobox" "^3.5.2"
"@react-types/shared" "^3.14.0"
"@react-aria/focus@3.2.3":
version "3.2.3"
resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.2.3.tgz#3e4137498a7fb5235d056c30fd94ab4a82e73aea"
integrity sha512-+OWmJMivrq3f8ApWihH1KJYqYj3rZV34YJORacBohcAsF1Qd1V1/P+w3dMkf24kV0wqAiWePCF1FwgnrL/rYzQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/interactions" "^3.3.0"
"@react-aria/utils" "^3.4.0"
"@react-types/shared" "^3.3.0"
clsx "^1.1.1"
"@react-aria/focus@^3.2.3", "@react-aria/focus@^3.7.0":
version "3.7.0"
resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.7.0.tgz#6a90dc99da64bd145e3eeacf3097a29a0342f709"
integrity sha512-LydZSLBLEUklakM0Ogdk17F3f/Uwaj5Nl1mfcK8HhrroGT8A8XH0KjA9D6gM6JGHgxZemx0ufOgxhQZeBGQMQw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/interactions" "^3.10.0"
"@react-aria/utils" "^3.13.2"
"@react-types/shared" "^3.14.0"
clsx "^1.1.1"
"@react-aria/i18n@^3.2.0", "@react-aria/i18n@^3.3.0", "@react-aria/i18n@^3.5.0":
version "3.5.1"
resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.5.1.tgz#aba5e50266a3f15c195b8dc85682251af5c52211"
integrity sha512-PtlQ/W1PXVKzCGK86MuGuCzYBwENDBjrQ2a4ux+BBQ2Dk8ZXEARSp9JaMFuOdiloXc/p4FoxCVoB+lhu4RCScg==
dependencies:
"@babel/runtime" "^7.6.2"
"@internationalized/date" "^3.0.1"
"@internationalized/message" "^3.0.9"
"@internationalized/number" "^3.1.1"
"@internationalized/string" "^3.0.0"
"@react-aria/ssr" "^3.3.0"
"@react-aria/utils" "^3.13.2"
"@react-types/shared" "^3.14.0"
"@react-aria/interactions@^3.10.0", "@react-aria/interactions@^3.3.0", "@react-aria/interactions@^3.3.2":
version "3.10.0"
resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.10.0.tgz#d60cc42c3904c1578f9c356fba4bab7003102dee"
integrity sha512-Lp74VfF+EskT3IqK2MBMdJpJU48p60+YkMbgtoDF6LudNO8jw0nxcsvnimPriTSkZWINRpajG/9sIa0EIDcQKw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/utils" "^3.13.2"
"@react-types/shared" "^3.14.0"
"@react-aria/label@^3.1.1", "@react-aria/label@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.4.0.tgz#81bf096bd28990d54e6db1ca9294391b7ed0d064"
integrity sha512-QqyZMuSdnH+7mkAbZbGtLU3NhSz2luNCeM+ZJPQ3ANegrdXsKwERSwD2/ERHAC5FGLqwlzXnPhRcYdvjafg/Ug==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/utils" "^3.13.2"
"@react-types/label" "^3.6.2"
"@react-types/shared" "^3.14.0"
"@react-aria/listbox@^3.2.4", "@react-aria/listbox@^3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.6.0.tgz#fe3b89365eb33815f9bb4e2b80da1c2b5bfddd64"
integrity sha512-AQ7Vdn5EKBBipFkEaV5uvamPdkXhDoILdGfFj/82X5miJBOzmu+gYVZ97njVVsGn+RYi8saK2VFcKeMXHOoYVQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/focus" "^3.7.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/label" "^3.4.0"
"@react-aria/selection" "^3.10.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/list" "^3.5.2"
"@react-types/listbox" "^3.3.2"
"@react-types/shared" "^3.14.0"
"@react-aria/live-announcer@^3.0.0-alpha.0", "@react-aria/live-announcer@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@react-aria/live-announcer/-/live-announcer-3.1.1.tgz#40f340f6794fca42682fb308fe750ff56bf7c07f"
integrity sha512-e7b+dRh1SUTla42vzjdbhGYkeLD7E6wIYjYaHW9zZ37rBkSqLHUhTigh3eT3k5NxFlDD/uRxTYuwaFnWQgR+4g==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/menu@^3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.6.0.tgz#2276247eea3588bbafbe7965b3b600067f7522bc"
integrity sha512-s083I10XG/K06V7wOF+VYGgUwg6ZwlmsmLlrXyFRzCVK6LXimNNC/mOeSZet6m4R4H1svtH+US/v+/eD6pkdUQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/i18n" "^3.5.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/overlays" "^3.10.0"
"@react-aria/selection" "^3.10.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/menu" "^3.4.0"
"@react-stately/tree" "^3.3.2"
"@react-types/button" "^3.6.0"
"@react-types/menu" "^3.7.0"
"@react-types/shared" "^3.14.0"
"@react-aria/overlays@^3.10.0", "@react-aria/overlays@^3.6.1", "@react-aria/overlays@^3.7.0":
version "3.10.0"
resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.10.0.tgz#e702961d178992b9c25db808edd1646efa1d00ec"
integrity sha512-A7aI59/o4tUAISjyyRfJz3833SLe4ZKPNoxOVUzgjfkfnCKq7YDSSEC5poxDqYD9bq/NBXK6stdgaGLXQSirNw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/i18n" "^3.5.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/ssr" "^3.3.0"
"@react-aria/utils" "^3.13.2"
"@react-aria/visually-hidden" "^3.4.0"
"@react-stately/overlays" "^3.4.0"
"@react-types/button" "^3.6.0"
"@react-types/overlays" "^3.6.2"
"@react-types/shared" "^3.14.0"
"@react-aria/radio@^3.1.2":
version "3.3.0"
resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.3.0.tgz#0528c2dc2b658def336ad1f74fa643b9c482b806"
integrity sha512-UhPxFVYKaPI8a9bF6XOl5Q7lbgW7YlrLTHnjOhxiUWvyyOsOnseiSgF9TqSfhhsF7HNYdOt1u3Xwx3vrHniCBg==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/focus" "^3.7.0"
"@react-aria/i18n" "^3.5.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/label" "^3.4.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/radio" "^3.5.0"
"@react-types/radio" "^3.2.2"
"@react-types/shared" "^3.14.0"
"@react-aria/selection@^3.10.0", "@react-aria/selection@^3.3.1", "@react-aria/selection@^3.3.2":
version "3.10.0"
resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.10.0.tgz#c7c0441d9b496df6567af1c4462e4a80f97ea359"
integrity sha512-VvFgNRrM0kK6aqyMTeTN+pguyvYN9Wu3viftnZyk89uo2+9hfmU7DLhz5kXkdJY9UNzn033jYGwJdWEuqRq65g==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/focus" "^3.7.0"
"@react-aria/i18n" "^3.5.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/selection" "^3.10.2"
"@react-types/shared" "^3.14.0"
"@react-aria/slider@^3.0.1":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@react-aria/slider/-/slider-3.2.0.tgz#35ee7d505e5ddb21e0265061fb4b5ba3206a4068"
integrity sha512-hHlPWGjiZsn07ptuPWw/PQ8vApjis9eu7G5K/H+q8iQJHJU+BADi4WScXBy7xqJKrJ7do3htIGBzJkWycf/YYw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/focus" "^3.7.0"
"@react-aria/i18n" "^3.5.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/label" "^3.4.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/radio" "^3.5.0"
"@react-stately/slider" "^3.2.0"
"@react-types/radio" "^3.2.2"
"@react-types/shared" "^3.14.0"
"@react-types/slider" "^3.2.0"
"@react-aria/ssr@^3.0.1", "@react-aria/ssr@^3.3.0":
version "3.3.0"
resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.3.0.tgz#25e81daf0c7a270a4a891159d8d984578e4512d8"
integrity sha512-yNqUDuOVZIUGP81R87BJVi/ZUZp/nYOBXbPsRe7oltJOfErQZD+UezMpw4vM2KRz18cURffvmC8tJ6JTeyDtaQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/tabs@3.0.0-alpha.2":
version "3.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.0.0-alpha.2.tgz#3b931d9c752c2dca4c2a1b975248b0ee751077a2"
integrity sha512-yHpz1HujxBcMq8e4jrHkkowzrJwuVyssCB+DuA91kt6LC0eIMZsDZY9tEhhOq+TyOhI3nbyXaDKJG6y1qB0A5A==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/i18n" "^3.2.0"
"@react-aria/interactions" "^3.3.2"
"@react-aria/selection" "^3.3.1"
"@react-aria/utils" "^3.4.1"
"@react-stately/list" "^3.2.2"
"@react-stately/tabs" "3.0.0-alpha.0"
"@react-types/shared" "^3.2.1"
"@react-types/tabs" "3.0.0-alpha.2"
"@react-aria/textfield@^3.7.0":
version "3.7.0"
resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.7.0.tgz#b9c1780b92a7a6d095c8d5ee0ee24155b48772b3"
integrity sha512-Tarag7zRY4V1MKKnh7c8XlvUpYs99IBgEuwWmWcZw0wOQdiqh8qm7fiSJEAhYv9r66nZx/1BPpQM3zg2JnW4EQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/focus" "^3.7.0"
"@react-aria/label" "^3.4.0"
"@react-aria/utils" "^3.13.2"
"@react-types/shared" "^3.14.0"
"@react-types/textfield" "^3.5.2"
"@react-aria/toggle@^3.3.2":
version "3.3.2"
resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.3.2.tgz#b66400c1653c1a82d1cc6b116775e028cddfb3cb"
integrity sha512-U+npP5XtNBs+e5T1UZDw5UhG8PJwnx+p68+GTY20UMVCTHtuNyjzjmI9nI3b9oVGcJ3ZKfvQAWq2uOqBjF/W3A==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/focus" "^3.7.0"
"@react-aria/interactions" "^3.10.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/toggle" "^3.4.0"
"@react-types/checkbox" "^3.3.2"
"@react-types/shared" "^3.14.0"
"@react-types/switch" "^3.2.2"
"@react-aria/utils@^3.13.2", "@react-aria/utils@^3.3.0", "@react-aria/utils@^3.4.0", "@react-aria/utils@^3.4.1", "@react-aria/utils@^3.6.0":
version "3.13.2"
resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.13.2.tgz#c28bc96e940a8a84c3e69a19f483c9f060584580"
integrity sha512-VTI8tv9m/BxE/lPTNCZN1fcHuY540xm+HT1vg2ZQCryudUWvzQkHi+h0z32DhiGHhvRFIGdH/enf3psip7ZLTQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/ssr" "^3.3.0"
"@react-stately/utils" "^3.5.1"
"@react-types/shared" "^3.14.0"
clsx "^1.1.1"
"@react-aria/visually-hidden@^3.2.1", "@react-aria/visually-hidden@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.4.0.tgz#9422ba67296969b5eae3e8e8839ba50e8acc0990"
integrity sha512-mRl4Vfg7F0ohf7N3RWdOQLUnXC4ApM3hsfBegsRQHDkbbrcq7MGPyCa154kIZg8Ff2cOtbgvrAlymzWmkOVZEQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/interactions" "^3.10.0"
"@react-aria/utils" "^3.13.2"
"@react-types/shared" "^3.14.0"
clsx "^1.1.1"
"@react-native-aria/button@^0.2.4":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@react-native-aria/button/-/button-0.2.4.tgz#ce0c994449011f4b852a222afd90e027fb839de0"
integrity sha512-wlu6SXI20U+N4fbPX8oh9pkL9hx8W41+cra3fa3s2xfQ6czT4KAkyvSsr1ALUBH4dRkoxxSPOcGJMGnq2K3djw==
dependencies:
"@react-aria/utils" "^3.6.0"
"@react-native-aria/interactions" "^0.2.3"
"@react-stately/toggle" "^3.2.1"
"@react-types/checkbox" "^3.2.1"
"@react-native-aria/checkbox@^0.2.2":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@react-native-aria/checkbox/-/checkbox-0.2.3.tgz#b6c99c215677df872f1bb4e596b54573f1c7a5f0"
integrity sha512-YtWtXGg5tvOaV6v1CmbusXoOZvGRAVYygms9qNeUF7/B8/iDNGSKjlxHE5LVOLRtJO/B9ndZnr6RkL326ceyng==
dependencies:
"@react-aria/checkbox" "^3.2.1"
"@react-aria/utils" "^3.6.0"
"@react-native-aria/toggle" "^0.2.3"
"@react-native-aria/utils" "^0.2.6"
"@react-stately/toggle" "^3.2.1"
"@react-native-aria/combobox@^0.2.4-alpha.0":
version "0.2.4-alpha.1"
resolved "https://registry.yarnpkg.com/@react-native-aria/combobox/-/combobox-0.2.4-alpha.1.tgz#2ec7c5c2e87aba4dda62e494a4c3538066275e2b"
integrity sha512-MOxKMKVus9MsOL3l+mNRDYHeVr5kj5fYnretLofWh/dHBO2W5H7H70ZfOPDEr9s+vgaBBjHCtbbfOiimKRk6Kg==
dependencies:
"@react-aria/combobox" "^3.0.0-alpha.1"
"@react-aria/live-announcer" "^3.0.0-alpha.0"
"@react-aria/overlays" "^3.6.1"
"@react-aria/utils" "^3.6.0"
"@react-native-aria/utils" "^0.2.6"
"@react-types/button" "^3.3.1"
"@react-native-aria/focus@^0.2.6":
version "0.2.6"
resolved "https://registry.yarnpkg.com/@react-native-aria/focus/-/focus-0.2.6.tgz#b824944b2d7020f74a80fd849f2bf77aac9d3d29"
integrity sha512-J/WKi5qizCFwv3XCDTSUePYz7zfpGpwU4XsDQZ48j2DlC29sX7JbRoml9/lu8/hhEEOz6/mpkaaFTgv0uFZcVA==
dependencies:
"@react-aria/focus" "^3.2.3"
"@react-native-aria/interactions@^0.2.2", "@react-native-aria/interactions@^0.2.3", "@react-native-aria/interactions@^0.2.7":
version "0.2.8"
resolved "https://registry.yarnpkg.com/@react-native-aria/interactions/-/interactions-0.2.8.tgz#5ced4bd3391c647699fa79275472f784a44c2488"
integrity sha512-+LsLghBnp1fEVdLdIZGfE2izbZS0GPwc7eyiLHndnAXwXdLmyDRw71UCEjsUuNh7SO7BBR5QjHlk0cTHmyynQg==
dependencies:
"@react-aria/interactions" "^3.3.2"
"@react-aria/utils" "^3.6.0"
"@react-native-aria/utils" "^0.2.6"
"@react-native-aria/listbox@^0.2.4-alpha.3":
version "0.2.4-alpha.3"
resolved "https://registry.yarnpkg.com/@react-native-aria/listbox/-/listbox-0.2.4-alpha.3.tgz#1a8df0de6c932c8143ea73e43713a5d37070203c"
integrity sha512-e/y+Wdoyy/PbpFj4DVYDYMsKI+uUqnZ/0yLByqHQvzs8Ys8o69CQkyEYzHhxvFT5lCLegkLbuQN2cJd8bYNQsA==
dependencies:
"@react-aria/interactions" "^3.3.2"
"@react-aria/label" "^3.1.1"
"@react-aria/listbox" "^3.2.4"
"@react-aria/selection" "^3.3.2"
"@react-aria/utils" "^3.6.0"
"@react-native-aria/interactions" "^0.2.2"
"@react-native-aria/utils" "^0.2.6"
"@react-types/listbox" "^3.1.1"
"@react-types/shared" "^3.4.0"
"@react-native-aria/overlays@0.3.3-rc.0":
version "0.3.3-rc.0"
resolved "https://registry.yarnpkg.com/@react-native-aria/overlays/-/overlays-0.3.3-rc.0.tgz#9041ddd6f151e6edb50c971d29920c458aa41459"
integrity sha512-RgaIYIHMltt0RdMrVwfXLAVxc22TIUY1Yx07HbQRMdt4LcSmU8pyp5CEtJ/MQCXceuqocnXfsUxyHOSnfhmfpA==
dependencies:
"@react-aria/interactions" "^3.3.2"
"@react-aria/overlays" "^3.7.0"
"@react-native-aria/utils" "^0.2.8"
"@react-stately/overlays" "^3.1.1"
"@react-types/overlays" "^3.4.0"
dom-helpers "^5.0.0"
"@react-native-aria/radio@^0.2.4":
version "0.2.5"
resolved "https://registry.yarnpkg.com/@react-native-aria/radio/-/radio-0.2.5.tgz#436d3abdbb48bcaf6e9c5c045ff9c5bf87b71248"
integrity sha512-kTfCjRMZH+Z2C70VxjomPO8eXBcHPa5zcuOUotyhR10WsrKZJlwwnA75t2xDq8zsxKnABJRfThv7rSlAjkFSeg==
dependencies:
"@react-aria/radio" "^3.1.2"
"@react-aria/utils" "^3.6.0"
"@react-native-aria/interactions" "^0.2.3"
"@react-native-aria/utils" "^0.2.6"
"@react-stately/radio" "^3.2.1"
"@react-types/radio" "^3.1.1"
"@react-native-aria/slider@^0.2.5-alpha.1":
version "0.2.5-alpha.2"
resolved "https://registry.yarnpkg.com/@react-native-aria/slider/-/slider-0.2.5-alpha.2.tgz#e613c2ac338de8d8ef8999ed664ea743174ee8da"
integrity sha512-eYCAGEgcmgs2x5yC1q3edq/VpZWd8P9x1ZoB6uhiyIpDViTDFTz82IWTK0jrbHC70WxWfoY+876VjiKzbjyNxw==
dependencies:
"@react-aria/focus" "^3.2.3"
"@react-aria/interactions" "^3.3.2"
"@react-aria/label" "^3.1.1"
"@react-aria/slider" "^3.0.1"
"@react-aria/utils" "^3.6.0"
"@react-native-aria/utils" "^0.2.6"
"@react-stately/slider" "^3.0.1"
"@react-native-aria/tabs@^0.2.7":
version "0.2.8"
resolved "https://registry.yarnpkg.com/@react-native-aria/tabs/-/tabs-0.2.8.tgz#8b721261a277fe0459154f70c25b81e23217c864"
integrity sha512-coAiaj9NFFh8vYr/kiugqLwip8IhB6m2dL/GXPcmbK0WH531pIPXKSwgePjniETJtEP84L4PYCTZ705pRlVN8A==
dependencies:
"@react-aria/selection" "^3.3.1"
"@react-aria/tabs" "3.0.0-alpha.2"
"@react-native-aria/interactions" "^0.2.7"
"@react-native-aria/utils" "^0.2.7"
"@react-stately/tabs" "3.0.0-alpha.1"
"@react-types/tabs" "3.0.0-alpha.2"
"@react-native-aria/toggle@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@react-native-aria/toggle/-/toggle-0.2.3.tgz#a387f03480aa0d97dc0191acbcae66122f7bcf7f"
integrity sha512-3aOlchMxpR0b2h3Z7V0aYZaQMVJD6uKOWKWJm82VsLrni4iDnDX/mLv30ujuuK3+LclUhVlJd2kRuCl+xnf3XQ==
dependencies:
"@react-aria/focus" "^3.2.3"
"@react-aria/utils" "^3.6.0"
"@react-native-aria/interactions" "^0.2.3"
"@react-native-aria/utils" "^0.2.6"
"@react-stately/toggle" "^3.2.1"
"@react-types/checkbox" "^3.2.1"
"@react-native-aria/utils@^0.2.6", "@react-native-aria/utils@^0.2.7", "@react-native-aria/utils@^0.2.8":
version "0.2.8"
resolved "https://registry.yarnpkg.com/@react-native-aria/utils/-/utils-0.2.8.tgz#da433606506125483080f18dbcd97b526ca46fd5"
integrity sha512-x375tG1itv3irLFRnURLsdK2djuvhFJHizSDUtLCo8skQwfjslED5t4sUkQ49di4G850gaVJz0fCcCx/pHX7CA==
dependencies:
"@react-aria/ssr" "^3.0.1"
"@react-aria/utils" "^3.3.0"
"@react-native-async-storage/async-storage@~1.15.0": "@react-native-async-storage/async-storage@~1.15.0":
version "1.15.17" version "1.15.17"
resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.15.17.tgz#0dae263a52e476ffce871086f1fef5b8e44708eb" resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.15.17.tgz#0dae263a52e476ffce871086f1fef5b8e44708eb"
...@@ -1757,6 +2229,362 @@ ...@@ -1757,6 +2229,362 @@
dependencies: dependencies:
nanoid "^3.1.23" nanoid "^3.1.23"
"@react-stately/checkbox@3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.0.3.tgz#18ee6bd3b544334b6f853bb5c5f7017ac3bb9c37"
integrity sha512-amT889DTLdbjAVjZ9j9TytN73PszynGIspKi1QSUCvXeA2OVyCwShxhV0Pn7yYX8cMinvGXrjhWdhn0nhYeMdg==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/toggle" "^3.2.3"
"@react-stately/utils" "^3.2.2"
"@react-types/checkbox" "^3.2.3"
"@react-stately/checkbox@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.2.0.tgz#6c718441a6c1058c75c243a5712d2dc32d93392c"
integrity sha512-nVO/asz7MTF5nLJcMMq5KgNlk4npckq+7nQvEVW6pyob5r2m7Lvd+Zhl4oKT0WtTIzg31VB6yRew1czKx/SUpA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/toggle" "^3.4.0"
"@react-stately/utils" "^3.5.1"
"@react-types/checkbox" "^3.3.2"
"@react-stately/collections@3.3.0":
version "3.3.0"
resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.3.0.tgz#d1e66077b47a8b6a9abcac66f1052d4b8851ce47"
integrity sha512-Y8Pfugw/tYbcR9F6GTiTkd9O4FiXErxi5aDLSZ/knS6v0pvr3EHsC3T7jLW+48dSNrwl+HkMe5ECMhWSUA1jRQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-types/shared" "^3.2.1"
"@react-stately/collections@^3.4.2":
version "3.4.2"
resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.4.2.tgz#b8625192b8cd5abe6cc2d5371643a071dc492e44"
integrity sha512-CmLVWtbX4r3QaTNdI6edtrRKIZRKPuxyD7TmVIaoZBdaOXStTP4wOgyPN1ELww9bvW0MoOaQBbUn5WAPrfifFw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-types/shared" "^3.14.0"
"@react-stately/combobox@3.0.0-alpha.1":
version "3.0.0-alpha.1"
resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.0.0-alpha.1.tgz#d3240ba528b021965998950a615e715c2eccbcee"
integrity sha512-v0DNGLx0KGvNgBbXoSKzfHGcy65eP0Wx4uY3dqj+u9k3ru2BEvIqB8fo6CWhQqu8VHBX4AlhoxcyrloIKvjD/g==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/list" "^3.2.2"
"@react-stately/menu" "^3.1.0"
"@react-stately/select" "^3.1.0"
"@react-stately/utils" "^3.2.0"
"@react-types/combobox" "3.0.0-alpha.1"
"@react-types/shared" "^3.4.0"
"@react-stately/combobox@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.2.0.tgz#bbaf4ae2a9b83742ec7c40b7feba575e955d22cc"
integrity sha512-77TOvsqBk5xBKc19PIAsi/w7T0lKXMxsOvSfWlOG/StF14d5TJUuhk7CJWCzSgAl3LVhuAKKq5AeZMKAfIrB3w==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/list" "^3.5.2"
"@react-stately/menu" "^3.4.0"
"@react-stately/select" "^3.3.0"
"@react-stately/utils" "^3.5.1"
"@react-types/combobox" "^3.5.2"
"@react-types/shared" "^3.14.0"
"@react-stately/layout@^3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@react-stately/layout/-/layout-3.6.0.tgz#1bc1d334520b79282e773a275f6986c3875e69be"
integrity sha512-X77WiMImtosPDRdJKPYR0oYTKWe/g34ZrpYWxKSVZjc9N6tqcj24p1lMIq/ZRZ1qOlLv9Y41vLYtm8uk5fdaMA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/virtualizer" "^3.2.2"
"@react-types/grid" "^3.1.2"
"@react-types/shared" "^3.14.0"
"@react-types/table" "^3.3.0"
"@react-stately/list@^3.2.2", "@react-stately/list@^3.5.2":
version "3.5.2"
resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.5.2.tgz#9cceb923cc87a2ccc5b2d895d19cdb734cccb7dd"
integrity sha512-Jv8xzO5oanEMAblLiUUr7uwkMTd5qyczyjxJrv8O52Lwd4GwzJ1w7KggTSZ7JG99fLZozLor3p0foVVvSI1/NA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/selection" "^3.10.2"
"@react-stately/utils" "^3.5.1"
"@react-types/shared" "^3.14.0"
"@react-stately/menu@^3.1.0", "@react-stately/menu@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.4.0.tgz#ee535287229ab4b0561dfdca570d82180f8cc4ea"
integrity sha512-xdNS3K0PmSjpNhH/Xnskfexxyo909Jkkfux4zhP5Ivk4Vkp0eThb6v9AIomUAo163PuOnHQFen1ZmwFEs92xMw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/overlays" "^3.4.0"
"@react-stately/utils" "^3.5.1"
"@react-types/menu" "^3.7.0"
"@react-types/shared" "^3.14.0"
"@react-stately/overlays@^3.1.1", "@react-stately/overlays@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.4.0.tgz#4023d0c7cd48363fe046e5b6084d703ac461c907"
integrity sha512-jXVm1V91lWOKh73cFvE9W9JtAE8idSWEUtFlVrlBI/jh0ZOt148UlRVWgHrm7FhaUpyvOFNUyfidRmKMuB+hgw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/utils" "^3.5.1"
"@react-types/overlays" "^3.6.2"
"@react-stately/radio@3.2.1":
version "3.2.1"
resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.2.1.tgz#d3fb0b28c2e7accdee47912c9802ab4a886a3092"
integrity sha512-WGYMWCDJQOicFLf+bW2CbAnlRWaqsUd028WpsS41GWyIx/w7DVpUeGFwTSvyCXC5SCQZuambsWHgXNz8Ng5WIA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/utils" "^3.1.1"
"@react-types/radio" "^3.1.1"
"@react-stately/radio@^3.2.1", "@react-stately/radio@^3.5.0":
version "3.5.0"
resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.5.0.tgz#7b7d3dd4a14aaed324ea29ac2be5ca0fe1d44d79"
integrity sha512-qn4+wa9sf3zZXSLrrR9rQpOII8BEQeAkvxyq/YhUQXBpQ8SoF5LobpGIZqp3n8G+Cxzjxd6/GON+lOFxWr0iXA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/utils" "^3.5.1"
"@react-types/radio" "^3.2.2"
"@react-stately/select@^3.1.0", "@react-stately/select@^3.3.0":
version "3.3.0"
resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.3.0.tgz#44ea30aad0ebe9e780d083470abbed41d7d045ab"
integrity sha512-amF7N8izlD8Dtja75uPdvBMme9KTwuJ6HHtPAVtoVOdSDcD7yb8GTRNhsjvfW8YPm8jkrUwkSobegqaEtRM5eQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/list" "^3.5.2"
"@react-stately/menu" "^3.4.0"
"@react-stately/selection" "^3.10.2"
"@react-stately/utils" "^3.5.1"
"@react-types/select" "^3.6.2"
"@react-types/shared" "^3.14.0"
"@react-stately/selection@^3.10.2":
version "3.10.2"
resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.10.2.tgz#0871e4d7bfc5a1dc1df6ff8d6800b499b2042732"
integrity sha512-3/iw0BpShWt5ie+YpOzi4Mpa3yKOtlKQZXEc0fZt3v3m3N3fMoCr7Ovkfuz5Svy47HIIN1Pk1WkRJC+CQ4hfDw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/utils" "^3.5.1"
"@react-types/shared" "^3.14.0"
"@react-stately/slider@3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.0.1.tgz#076c149947ae45f5eda30178b368ad0c4052f2a3"
integrity sha512-gGpfdVbTmdsOvrmZvFx4hJ5b7nczvAWdHR/tFFJKfxH0/V8NudZ5hGnawY84R3x+OvgV+tKUfifEUKA+oJyG5w==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/i18n" "^3.3.0"
"@react-aria/utils" "^3.6.0"
"@react-stately/utils" "^3.2.0"
"@react-types/slider" "^3.0.1"
"@react-stately/slider@^3.0.1", "@react-stately/slider@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.2.0.tgz#3d11bc17e24d08a97ca115784d826e2818b610b8"
integrity sha512-3WdG6+qEZZz/EkO6HZZXtMT25kzdaoxeUSVD+fByb7hE3aS6eb+OAJEy6LDpN7DVTBpkGhHMdRdnTT7+mntzPQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/i18n" "^3.5.0"
"@react-aria/utils" "^3.13.2"
"@react-stately/utils" "^3.5.1"
"@react-types/shared" "^3.14.0"
"@react-types/slider" "^3.2.0"
"@react-stately/tabs@3.0.0-alpha.0":
version "3.0.0-alpha.0"
resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.0.0-alpha.0.tgz#41451c7957ab2773fc4edb78ec02fcb94c6ab226"
integrity sha512-QJZ9N7DT89RkP18btvQhJvxWuv/JkSwtm14ftfk+5LBbzyxyLsD2KP6jDrNhXgmkRMmIyEaMt2w2VmI6fQ6UAA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/list" "^3.2.2"
"@react-stately/utils" "^3.0.0-alpha.1"
"@react-types/tabs" "3.0.0-alpha.2"
"@react-stately/tabs@3.0.0-alpha.1":
version "3.0.0-alpha.1"
resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.0.0-alpha.1.tgz#b166ca9733ebebcc3bb2223116b8b070af104812"
integrity sha512-aEG5lVLqmfx7A/dS5gkPXmD2ERAo69RtC0aHPo/Dw1XjzalYyo6QbQ5WtiuQxsCVx/naWGEJCcMEAD5/vt+cUQ==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/list" "^3.2.2"
"@react-stately/utils" "^3.2.0"
"@react-types/tabs" "3.0.0-alpha.2"
"@react-stately/toggle@3.2.1":
version "3.2.1"
resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.2.1.tgz#8b10b5eb99c3c4df2c36d17a5f23b77773ed7722"
integrity sha512-gZVuJ8OYoATUoXzdprsyx6O1w3wCrN+J0KnjhrjjKTrBG68n3pZH0p6dM0XpsaCzlSv0UgNa4fhHS3dYfr/ovw==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/utils" "^3.1.1"
"@react-types/checkbox" "^3.2.1"
"@react-types/shared" "^3.2.1"
"@react-stately/toggle@^3.2.1", "@react-stately/toggle@^3.2.3", "@react-stately/toggle@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.4.0.tgz#42bb0dc226f90eb70f9e87dcbe08df9e45324255"
integrity sha512-7kPxR2+Aze7NmpWWOQanRsQvmz7R+Sdlu+2xi0Wh5LPFg+lkXSiGY63uM2amxZcbFb0Mhy5ExlRpF53ReZjEOA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/utils" "^3.5.1"
"@react-types/checkbox" "^3.3.2"
"@react-types/shared" "^3.14.0"
"@react-stately/tree@^3.3.2":
version "3.3.2"
resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.3.2.tgz#db1e98fa074c89cfd63b4d260de025fef285e520"
integrity sha512-goviIXFYZvWJ2FOBQdKHfLwCaFUlhyGCsbX9GB7ziZhm0Ez8iWCzEy1IWoeuPaprBlHIPv6/3XtDi4ZQ52A59g==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/collections" "^3.4.2"
"@react-stately/selection" "^3.10.2"
"@react-stately/utils" "^3.5.1"
"@react-types/shared" "^3.14.0"
"@react-stately/utils@^3.0.0-alpha.1", "@react-stately/utils@^3.1.1", "@react-stately/utils@^3.2.0", "@react-stately/utils@^3.2.2", "@react-stately/utils@^3.5.1":
version "3.5.1"
resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.5.1.tgz#502de762e5d33e892347c5f58053674e06d3bc92"
integrity sha512-INeQ5Er2Jm+db8Py4upKBtgfzp3UYgwXYmbU/XJn49Xw27ktuimH9e37qP3bgHaReb5L3g8IrGs38tJUpnGPHA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-stately/virtualizer@^3.2.2":
version "3.2.2"
resolved "https://registry.yarnpkg.com/@react-stately/virtualizer/-/virtualizer-3.2.2.tgz#3fca1acc0622d24b1acd3df8efd7795f546f3d1c"
integrity sha512-I0dbohDkG+Gm750YxlAp9qy6uE3HxWRBQjrvBdswuIscaBVp/espYqMvgVwxVnQnkcIcVdKZZ/gvT8HZwkR9lg==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/utils" "^3.13.2"
"@react-types/shared" "^3.14.0"
"@react-types/button@^3.3.1", "@react-types/button@^3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.6.0.tgz#cda33c4ed3a5e9da07c52961c17a0028607f5606"
integrity sha512-ijCi07TkLmwU3Qtn8IzKJi1nugZj8Ln0+w2OZPRJS/tRFv48qgNsOXum54W5i9W0yg/I7VQiPjm+YsQS51g7gA==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/checkbox@^3.2.1", "@react-types/checkbox@^3.2.3", "@react-types/checkbox@^3.3.2":
version "3.3.2"
resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.3.2.tgz#513442cb2e73a4d8c8ad14021c424612e98e7cd7"
integrity sha512-s1bgqL4qfEMEasePayukZ6pzpIzfAG1OuVmpARz0kVdVaN7e+B4+dRJ0nDtiQf/TjNLg45ZlG3NTXJ1hsZPelQ==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/combobox@3.0.0-alpha.1":
version "3.0.0-alpha.1"
resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.0.0-alpha.1.tgz#4c390d11bc52c248fda92dc7e755f6dc2dc71b82"
integrity sha512-td8pZmzZx5L32DuJ5iQk0Y4DNPerHWc2NXjx88jiQGxtorzvfrIQRKh3sy13PH7AMplGSEdAxG0llfCKrIy0Ow==
dependencies:
"@react-types/shared" "^3.4.0"
"@react-types/combobox@^3.5.2":
version "3.5.2"
resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.5.2.tgz#dda9072ac74ae77d6d8a4076c2a4accb9bdee28c"
integrity sha512-Q1HtiT/Hq+b6q71Evn8nmIfLv08kDEZSlOz5hlZouH9ZGYeTb1huH72biYl9LyIB6NRdNUouo7+I8ddumeAkMA==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/grid@^3.1.2":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.1.2.tgz#dee9c9c07dcd3dbc0f008f95a665b2bd51081c89"
integrity sha512-9mKhtBZiGlok1APRSR+hTKYFgx8XxRBBLG20/xPI1C8xCGNZvOz7CmK57LmlwYsN1BLo3S2vLOd6+M1qrw2yVg==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/label@^3.6.2":
version "3.6.2"
resolved "https://registry.yarnpkg.com/@react-types/label/-/label-3.6.2.tgz#55726a796c0329e836e887241b9d0fefcdb5ae34"
integrity sha512-fxivJ3MKYbNhE8z/zPpmvN2R7XNGpaTQ5Rm7/ueIou5VkrZnZmDJv0+wIs9xF8l6Bq6Nx7k899OK0u38XTgwNw==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/listbox@^3.1.1", "@react-types/listbox@^3.3.2":
version "3.3.2"
resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.3.2.tgz#63ed73f755ef78aac245a476a36428eefce8ea50"
integrity sha512-4HYydDJhI6oz1MsHccKZj2E24YjYlTNO92hUsZnqAVl21NQrNu4h2Ac8TqsI3ZhorpzcxHN0xeQTzjqO97NloA==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/menu@^3.7.0":
version "3.7.0"
resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.7.0.tgz#632422d6024a36ab7920c1fceb064900d9f5a762"
integrity sha512-1kEyyb0tERlPdZ67lsC2fMZ2TTh0OdS1hcb01PrSkGna/S+H/Q9M65Xc+q9eu7QoC4+DN4Flh/7vNRT82kVlHg==
dependencies:
"@react-types/overlays" "^3.6.2"
"@react-types/shared" "^3.14.0"
"@react-types/overlays@^3.4.0", "@react-types/overlays@^3.6.2":
version "3.6.2"
resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.6.2.tgz#f11f8abe5073ca7a80d3beada018b715af25859c"
integrity sha512-ag9UCIlcNCvMHBORRksdLnQK3ef+CEbrt+TydOxBAxAf+87fXJ/0H6hP/4QTebEA2ixA0qz8CFga81S8ZGnOsQ==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/radio@^3.1.1", "@react-types/radio@^3.2.2":
version "3.2.2"
resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.2.2.tgz#8375f96150f21bf2490c35ac321a12c1fcc99bcc"
integrity sha512-JBnfEUu4T6Z+SRsALKnzmx/4AqeIbdHEOumHSlAlX5iLPUywvELn22PVvF+YHh7bOeXKcVv+4/rXnTZWcsAK1g==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/select@^3.6.2":
version "3.6.2"
resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.6.2.tgz#3ed74f4de7193e80ef191f09b1ba360852d81b2c"
integrity sha512-V1ahKVEIA+u4kDOXTw0UoSjJ8T3EJi25PNx/whLYIEMXWw/v8dH+x7Hi7S45cHS+ZxoZXhWIV8WmgDKIUp1U1Q==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/shared@^3.14.0", "@react-types/shared@^3.2.1", "@react-types/shared@^3.3.0", "@react-types/shared@^3.4.0":
version "3.14.0"
resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.14.0.tgz#240991d6672f32ecd2a172111e163be0fe0778f2"
integrity sha512-K069Bh/P0qV3zUG8kqabeO8beAUlFdyVPvpcNVPjRl+0Q9NDS9mfdQbmUa0LqdVo5e6jRPdos77Ylflkrz8wcw==
"@react-types/slider@^3.0.1", "@react-types/slider@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@react-types/slider/-/slider-3.2.0.tgz#f2af31936641e68e43b9d3a85eea7675e0d389b5"
integrity sha512-olhfWQiZTroGBkS62oX2dQN+ebfXejDLPaH83JfnBTx7Mtu/qkBfINjGMG7AMR+/Dbgq13n8RcymMIQHzEjSVw==
dependencies:
"@react-types/shared" "^3.14.0"
"@react-types/switch@^3.2.2":
version "3.2.2"
resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.2.2.tgz#a22dfaee731e853f68bb4d6bb06b236c532e21fc"
integrity sha512-DGJP4+3B6yQ86/WaGL9aLjWyLb9x1lAHW1+cXEl016/J2BdlU83Lw4mRr1qaniGLd+1Ft6cvVv7419voPlf3Ng==
dependencies:
"@react-types/checkbox" "^3.3.2"
"@react-types/shared" "^3.14.0"
"@react-types/table@^3.3.0":
version "3.3.0"
resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.3.0.tgz#fe0e69ae69e8d2a9e6b98d8bd99b14cf76536fdd"
integrity sha512-spq1h0+RuClbedH26d8SX8bGJUWO3x/MrRuoxN/XThCR+8rayp+QjCz7Pz2a5rqMniRh91O8rOOdqjbWbP4b7g==
dependencies:
"@react-types/grid" "^3.1.2"
"@react-types/shared" "^3.14.0"
"@react-types/tabs@3.0.0-alpha.2":
version "3.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/@react-types/tabs/-/tabs-3.0.0-alpha.2.tgz#f18c71f4843ae2117b41fdb012f89cc2dd43adf4"
integrity sha512-HQNS2plzuNhKPo88OGEW2Ja9aLeiWqgNqEemSxh0KAjkA8IsvDGaoQEpr9ZQIyBZ3PQIljvOpEJ/IwHU5LztrQ==
dependencies:
"@react-types/shared" "^3.2.1"
"@react-types/textfield@^3.5.2":
version "3.5.2"
resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.5.2.tgz#30182f860e5fed159a5d9ca5f3eba582c132c0f2"
integrity sha512-GPZd8h0eji+eywV4sM98IvvNBM+uY2/GcL7KyEqf0r2gMOZy7W81JCGCuGaGGcZYxsv0yu/NmZbzQHijKW9cNg==
dependencies:
"@react-types/shared" "^3.14.0"
"@sideway/address@^4.1.3": "@sideway/address@^4.1.3":
version "4.1.4" version "4.1.4"
resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0"
...@@ -1852,6 +2680,18 @@ ...@@ -1852,6 +2680,18 @@
dependencies: dependencies:
"@types/istanbul-lib-report" "*" "@types/istanbul-lib-report" "*"
"@types/lodash.has@^4.5.6":
version "4.5.7"
resolved "https://registry.yarnpkg.com/@types/lodash.has/-/lodash.has-4.5.7.tgz#9e1c3da3ee67f68fadc3d168ffdf8e11a3f3ccd3"
integrity sha512-nfbAzRbsZBdzSAkL9iiLy4SQk89uuFcXBFwZ7pf6oZhBgPvNys8BY5Twp/w8XvZKGt1o6cAa85wX4QhqO3uQ7A==
dependencies:
"@types/lodash" "*"
"@types/lodash@*":
version "4.14.182"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2"
integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==
"@types/node@*": "@types/node@*":
version "17.0.24" version "17.0.24"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.24.tgz#20ba1bf69c1b4ab405c7a01e950c4f446b05029f" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.24.tgz#20ba1bf69c1b4ab405c7a01e950c4f446b05029f"
...@@ -2362,6 +3202,11 @@ blueimp-md5@^2.10.0: ...@@ -2362,6 +3202,11 @@ blueimp-md5@^2.10.0:
resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0"
integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==
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 sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
bplist-creator@0.1.0: bplist-creator@0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e"
...@@ -2622,6 +3467,11 @@ clone@^1.0.2: ...@@ -2622,6 +3467,11 @@ clone@^1.0.2:
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
clsx@^1.1.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
co@^4.6.0: co@^4.6.0:
version "4.6.0" version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
...@@ -2872,6 +3722,29 @@ css-in-js-utils@^2.0.0: ...@@ -2872,6 +3722,29 @@ css-in-js-utils@^2.0.0:
hyphenate-style-name "^1.0.2" hyphenate-style-name "^1.0.2"
isobject "^3.0.1" isobject "^3.0.1"
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-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@^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.4: cssom@^0.4.4:
version "0.4.4" version "0.4.4"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
...@@ -3019,6 +3892,32 @@ diff-sequences@^26.6.2: ...@@ -3019,6 +3892,32 @@ diff-sequences@^26.6.2:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
dom-helpers@^5.0.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
dependencies:
"@babel/runtime" "^7.8.7"
csstype "^3.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.3.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
domexception@^2.0.1: domexception@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
...@@ -3026,6 +3925,14 @@ domexception@^2.0.1: ...@@ -3026,6 +3925,14 @@ domexception@^2.0.1:
dependencies: dependencies:
webidl-conversions "^5.0.0" webidl-conversions "^5.0.0"
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"
ee-first@1.1.1: ee-first@1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
...@@ -3065,6 +3972,11 @@ end-of-stream@^1.1.0: ...@@ -3065,6 +3972,11 @@ end-of-stream@^1.1.0:
dependencies: dependencies:
once "^1.4.0" once "^1.4.0"
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: envinfo@^7.7.2:
version "7.8.1" version "7.8.1"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
...@@ -3931,6 +4843,16 @@ interpret@^1.0.0: ...@@ -3931,6 +4843,16 @@ interpret@^1.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
intl-messageformat@^10.1.0:
version "10.1.1"
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.1.1.tgz#226767e7921fa86cef2cbe4a13911050716720bc"
integrity sha512-FeJne2oooYW6shLPbrqyjRX6hTELVrQ90Dn88z7NomLk/xZBCLxLPAkgaYaTQJBRBV78nZ933d8APHHkTQrD9Q==
dependencies:
"@formatjs/ecma402-abstract" "1.11.8"
"@formatjs/fast-memoize" "1.2.4"
"@formatjs/icu-messageformat-parser" "2.1.4"
tslib "2.4.0"
invariant@^2.2.4: invariant@^2.2.4:
version "2.2.4" version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
...@@ -4918,6 +5840,11 @@ lodash._reinterpolate@^3.0.0: ...@@ -4918,6 +5840,11 @@ lodash._reinterpolate@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
lodash.debounce@^4.0.8: lodash.debounce@^4.0.8:
version "4.0.8" version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
...@@ -4928,21 +5855,56 @@ lodash.frompairs@^4.0.1: ...@@ -4928,21 +5855,56 @@ lodash.frompairs@^4.0.1:
resolved "https://registry.yarnpkg.com/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz#bc4e5207fa2757c136e573614e9664506b2b1bd2" resolved "https://registry.yarnpkg.com/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz#bc4e5207fa2757c136e573614e9664506b2b1bd2"
integrity sha1-vE5SB/onV8E25XNhTpZkUGsrG9I= integrity sha1-vE5SB/onV8E25XNhTpZkUGsrG9I=
lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
lodash.has@^4.5.2:
version "4.5.2"
resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862"
integrity sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g==
lodash.isempty@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e"
integrity sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==
lodash.isequal@^4.5.0: lodash.isequal@^4.5.0:
version "4.5.0" version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
lodash.isnil@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c"
integrity sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==
lodash.isstring@^4.0.1: lodash.isstring@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.mergewith@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
lodash.omit@^4.5.0: lodash.omit@^4.5.0:
version "4.5.0" version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60"
integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=
lodash.omitby@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.omitby/-/lodash.omitby-4.6.0.tgz#5c15ff4754ad555016b53c041311e8f079204791"
integrity sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ==
lodash.pick@^4.4.0: lodash.pick@^4.4.0:
version "4.4.0" version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
...@@ -5044,6 +6006,11 @@ md5-file@^3.2.3: ...@@ -5044,6 +6006,11 @@ md5-file@^3.2.3:
dependencies: dependencies:
buffer-alloc "^1.1.0" buffer-alloc "^1.1.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-options@^3.0.4: merge-options@^3.0.4:
version "3.0.4" version "3.0.4"
resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7"
...@@ -5455,6 +6422,48 @@ nanomatch@^1.2.9: ...@@ -5455,6 +6422,48 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1" snapdragon "^0.8.1"
to-regex "^3.0.1" to-regex "^3.0.1"
native-base@^3.4.11:
version "3.4.11"
resolved "https://registry.yarnpkg.com/native-base/-/native-base-3.4.11.tgz#fa03a49635ae3fad1b63605ef3dd6facf892803e"
integrity sha512-2eRH1m16TeRr+flaqhlO/NXtjjtH3nLqfeYvZcJUiwEvwWyXjFnsk8UkLJY1214CYOWTnU929wEWBMJKbm/8HQ==
dependencies:
"@react-aria/focus" "3.2.3"
"@react-aria/utils" "^3.6.0"
"@react-aria/visually-hidden" "^3.2.1"
"@react-native-aria/button" "^0.2.4"
"@react-native-aria/checkbox" "^0.2.2"
"@react-native-aria/combobox" "^0.2.4-alpha.0"
"@react-native-aria/focus" "^0.2.6"
"@react-native-aria/interactions" "^0.2.2"
"@react-native-aria/listbox" "^0.2.4-alpha.3"
"@react-native-aria/overlays" "0.3.3-rc.0"
"@react-native-aria/radio" "^0.2.4"
"@react-native-aria/slider" "^0.2.5-alpha.1"
"@react-native-aria/tabs" "^0.2.7"
"@react-native-aria/utils" "^0.2.8"
"@react-stately/checkbox" "3.0.3"
"@react-stately/collections" "3.3.0"
"@react-stately/combobox" "3.0.0-alpha.1"
"@react-stately/radio" "3.2.1"
"@react-stately/slider" "3.0.1"
"@react-stately/tabs" "3.0.0-alpha.1"
"@react-stately/toggle" "3.2.1"
"@types/lodash.has" "^4.5.6"
lodash.clonedeep "^4.5.0"
lodash.get "^4.4.2"
lodash.has "^4.5.2"
lodash.isempty "^4.4.0"
lodash.isequal "^4.5.0"
lodash.isnil "^4.0.0"
lodash.merge "^4.6.2"
lodash.mergewith "^4.6.2"
lodash.omit "^4.5.0"
lodash.omitby "^4.6.0"
lodash.pick "^4.4.0"
react-native-keyboard-aware-scroll-view "^0.9.5"
stable-hash "^0.0.2"
tinycolor2 "^1.4.2"
natural-compare@^1.4.0: natural-compare@^1.4.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
...@@ -5579,6 +6588,13 @@ npm-run-path@^4.0.0: ...@@ -5579,6 +6588,13 @@ npm-run-path@^4.0.0:
dependencies: dependencies:
path-key "^3.0.0" 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: nullthrows@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1"
...@@ -5968,7 +6984,7 @@ prompts@^2.0.1, prompts@^2.2.1, prompts@^2.4.0: ...@@ -5968,7 +6984,7 @@ prompts@^2.0.1, prompts@^2.2.1, prompts@^2.4.0:
kleur "^3.0.3" kleur "^3.0.3"
sisteransi "^1.0.5" sisteransi "^1.0.5"
prop-types@^15.6.0, prop-types@^15.7.2: prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2:
version "15.8.1" version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
...@@ -6082,6 +7098,19 @@ react-native-codegen@^0.0.6: ...@@ -6082,6 +7098,19 @@ react-native-codegen@^0.0.6:
jscodeshift "^0.11.0" jscodeshift "^0.11.0"
nullthrows "^1.1.1" nullthrows "^1.1.1"
react-native-iphone-x-helper@^1.0.3:
version "1.3.1"
resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz#20c603e9a0e765fd6f97396638bdeb0e5a60b010"
integrity sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==
react-native-keyboard-aware-scroll-view@^0.9.5:
version "0.9.5"
resolved "https://registry.yarnpkg.com/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.5.tgz#e2e9665d320c188e6b1f22f151b94eb358bf9b71"
integrity sha512-XwfRn+T/qBH9WjTWIBiJD2hPWg0yJvtaEw6RtPCa5/PYHabzBaWxYBOl0usXN/368BL1XktnZPh8C2lmTpOREA==
dependencies:
prop-types "^15.6.2"
react-native-iphone-x-helper "^1.0.3"
react-native-safe-area-context@3.3.2: react-native-safe-area-context@3.3.2:
version "3.3.2" version "3.3.2"
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-3.3.2.tgz#9549a2ce580f2374edb05e49d661258d1b8bcaed" resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-3.3.2.tgz#9549a2ce580f2374edb05e49d661258d1b8bcaed"
...@@ -6095,6 +7124,14 @@ react-native-screens@~3.10.1: ...@@ -6095,6 +7124,14 @@ react-native-screens@~3.10.1:
react-freeze "^1.0.0" react-freeze "^1.0.0"
warn-once "^0.1.0" warn-once "^0.1.0"
react-native-svg@12.1.1:
version "12.1.1"
resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-12.1.1.tgz#5f292410b8bcc07bbc52b2da7ceb22caf5bcaaee"
integrity sha512-NIAJ8jCnXGCqGWXkkJ1GTzO4a3Md5at5sagYV8Vh4MXYnL4z5Rh428Wahjhh+LIjx40EE5xM5YtwyJBqOIba2Q==
dependencies:
css-select "^2.1.0"
css-tree "^1.0.0-alpha.39"
react-native-web@0.17.1: react-native-web@0.17.1:
version "0.17.1" version "0.17.1"
resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.17.1.tgz#90d473c89dd99b88bc9830b2a9fcdd2fc5f04902" resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.17.1.tgz#90d473c89dd99b88bc9830b2a9fcdd2fc5f04902"
...@@ -6790,6 +7827,11 @@ sprintf-js@~1.0.2: ...@@ -6790,6 +7827,11 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
stable-hash@^0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.2.tgz#a909deaa5b9d430b100ca0a10132a533f2665e94"
integrity sha512-tPwQ3c1rLIwbJpq59duoznegEbmgfV630C2n4R4G96LKBFljgK8j+O9AxjqB6cAzu4gE7s4pByrLWtZel8E+Mg==
stack-utils@^2.0.2, stack-utils@^2.0.3: stack-utils@^2.0.2, stack-utils@^2.0.3:
version "2.0.5" version "2.0.5"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5"
...@@ -7017,6 +8059,11 @@ through2@^2.0.1: ...@@ -7017,6 +8059,11 @@ through2@^2.0.1:
readable-stream "~2.3.6" readable-stream "~2.3.6"
xtend "~4.0.1" xtend "~4.0.1"
tinycolor2@^1.4.2:
version "1.4.2"
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
tmpl@1.0.5: tmpl@1.0.5:
version "1.0.5" version "1.0.5"
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
...@@ -7090,6 +8137,11 @@ ts-interface-checker@^0.1.9: ...@@ -7090,6 +8137,11 @@ ts-interface-checker@^0.1.9:
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
tslib@2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
tslib@^2.0.1: tslib@^2.0.1:
version "2.3.1" version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
......
# Generated by Django 4.1 on 2022-08-10 13:05
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('cms', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Conversation',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('timestamp', models.DateTimeField(auto_now=True)),
('from_user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='from_chat', to=settings.AUTH_USER_MODEL)),
('to_user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='to_chat', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Chat',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('message', models.TextField()),
('timestamp', models.DateTimeField(auto_now=True)),
('conversation', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='cms.conversation')),
('from_user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='from_convo', to=settings.AUTH_USER_MODEL)),
('to_user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='to_convo', to=settings.AUTH_USER_MODEL)),
],
),
]
# import pickle import pickle
# from keras.models import load_model from keras.models import load_model
# import numpy as np import numpy as np
# import IPython.display as ipd import IPython.display as ipd
# import random import random
# from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
# from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import LabelEncoder
# def predict(samples): def predict(samples):
# model=load_model(r'./best_model_final.hdf5') model=load_model(r'./best_model_final.hdf5')
# f1 = open('all_label.txt', 'rb') f1 = open('all_label.txt', 'rb')
# all_label = pickle.load(f1) all_label = pickle.load(f1)
# print('loaded labels') print('loaded labels')
# # f2 = open('all_waves_file.txt', 'rb') # f2 = open('all_waves_file.txt', 'rb')
# # all_wave = pickle.load(f2) # all_wave = pickle.load(f2)
# # print('loaded waves') # print('loaded waves')
# le = LabelEncoder() le = LabelEncoder()
# y = le.fit_transform(all_label) y = le.fit_transform(all_label)
# classes = list(le.classes_) classes = list(le.classes_)
# # train_data_file = open("train_data_file.txt", 'rb') # train_data_file = open("train_data_file.txt", 'rb')
# # [x_tr, x_val, y_tr, y_val] = np.load(train_data_file, allow_pickle=True) # [x_tr, x_val, y_tr, y_val] = np.load(train_data_file, allow_pickle=True)
# # train_data_file.close() # train_data_file.close()
# def predictSamples(audio): def predictSamples(audio):
# prob=model.predict(audio.reshape(1,8000,1)) prob=model.predict(audio.reshape(1,8000,1))
# index=np.argmax(prob[0]) index=np.argmax(prob[0])
# return classes[index] return classes[index]
# # index=random.randint(0,len(x_val)-1) # index=random.randint(0,len(x_val)-1)
# # samples=x_val[index].ravel() # samples=x_val[index].ravel()
# print(samples) print(samples)
# # print("Audio:",classes[np.argmax(y_val[index])]) # print("Audio:",classes[np.argmax(y_val[index])])
# ipd.Audio(samples, rate=8000) ipd.Audio(samples, rate=8000)
# result = predictSamples(samples) result = predictSamples(samples)
# print("Text:",result) print("Text:",result)
# return result return result
\ No newline at end of file \ No newline at end of file
# import pickle import pickle
# from matplotlib import pyplot from matplotlib import pyplot
# import os import os
# import librosa import librosa
# import IPython.display as ipd import IPython.display as ipd
# import matplotlib.pyplot as plt import matplotlib.pyplot as plt
# import numpy as np import numpy as np
# from scipy.io import wavfile from scipy.io import wavfile
# import warnings import warnings
# from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import LabelEncoder
# from keras.utils import np_utils from keras.utils import np_utils
# from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
# from keras.layers import Dense, Dropout, Flatten, Conv1D, Input, MaxPooling1D from keras.layers import Dense, Dropout, Flatten, Conv1D, Input, MaxPooling1D
# from keras.models import Model from keras.models import Model
# from keras.callbacks import EarlyStopping, ModelCheckpoint from keras.callbacks import EarlyStopping, ModelCheckpoint
# from keras import backend as K from keras import backend as K
# K.clear_session() K.clear_session()
# warnings.filterwarnings("ignore") warnings.filterwarnings("ignore")
# # os.listdir('../../../data/') # os.listdir('../../../data/')
# classes = ['down', 'go', 'left', 'no', 'off', classes = ['down', 'go', 'left', 'no', 'off',
# 'on', 'right', 'stop', 'up', 'yes'] 'on', 'right', 'stop', 'up', 'yes']
# def train(): def train():
# print('1') print('1')
# train_audio_path = r'./backend/data/train/train/audio/' train_audio_path = r'./backend/data/train/train/audio/'
# samples, sample_rate = librosa.load( samples, sample_rate = librosa.load(
# train_audio_path+'yes/0a7c2a8d_nohash_0.wav', sr=16000) train_audio_path+'yes/0a7c2a8d_nohash_0.wav', sr=16000)
# # fig = plt.figure(figsize=(14, 8)) # fig = plt.figure(figsize=(14, 8))
# # ax1 = fig.add_subplot(211) # ax1 = fig.add_subplot(211)
# # ax1.set_title('Raw wave of ' + r'../input/train/audio/yes/0a7c2a8d_nohash_0.wav') # ax1.set_title('Raw wave of ' + r'../input/train/audio/yes/0a7c2a8d_nohash_0.wav')
# # ax1.set_xlabel('time') # ax1.set_xlabel('time')
# # ax1.set_ylabel('Amplitude') # ax1.set_ylabel('Amplitude')
# # ax1.plot(np.linspace(0, sample_rate/len(samples), sample_rate), samples) # ax1.plot(np.linspace(0, sample_rate/len(samples), sample_rate), samples)
# ipd.Audio(samples, rate=sample_rate) ipd.Audio(samples, rate=sample_rate)
# print(sample_rate) print(sample_rate)
# samples = librosa.resample(samples, sample_rate, 8000) samples = librosa.resample(samples, sample_rate, 8000)
# ipd.Audio(samples, rate=8000) ipd.Audio(samples, rate=8000)
# labels = os.listdir(train_audio_path) labels = os.listdir(train_audio_path)
# # find count of each label and plot bar graph # find count of each label and plot bar graph
# no_of_recordings = [] no_of_recordings = []
# for label in labels: for label in labels:
# waves = [f for f in os.listdir( waves = [f for f in os.listdir(
# train_audio_path + '/' + label) if f.endswith('.wav')] train_audio_path + '/' + label) if f.endswith('.wav')]
# no_of_recordings.append(len(waves)) no_of_recordings.append(len(waves))
# # plot # plot
# # plt.figure(figsize=(30,5)) # plt.figure(figsize=(30,5))
# index = np.arange(len(labels)) index = np.arange(len(labels))
# # plt.bar(index, no_of_recordings) # plt.bar(index, no_of_recordings)
# # plt.xlabel('Commands', fontsize=12) # plt.xlabel('Commands', fontsize=12)
# # plt.ylabel('No of recordings', fontsize=12) # plt.ylabel('No of recordings', fontsize=12)
# # plt.xticks(index, labels, fontsize=15, rotation=60) # plt.xticks(index, labels, fontsize=15, rotation=60)
# # plt.title('No. of recordings for each command') # plt.title('No. of recordings for each command')
# # plt.show() # plt.show()
# print('2') print('2')
# labels = ["yes", "no", "up", "down", "left", labels = ["yes", "no", "up", "down", "left",
# "right", "on", "off", "stop", "go"] "right", "on", "off", "stop", "go"]
# # labels_file = open('./labels_file.bin', 'wb+') # labels_file = open('./labels_file.bin', 'wb+')
# # pickle.dump(obj=labels, file=labels_file) # pickle.dump(obj=labels, file=labels_file)
# # labels_file.close() # labels_file.close()
# # # file = open('./labels_file.bin', 'rb') # # file = open('./labels_file.bin', 'rb')
# # # dict = pickle.load(file) # # dict = pickle.load(file)
# # # print('loaded') # # print('loaded')
# # # print(dict) # # print(dict)
# # # print('fdnasf') # # print('fdnasf')
# duration_of_recordings = [] duration_of_recordings = []
# for label in labels: for label in labels:
# print('2.1', label) print('2.1', label)
# waves = [f for f in os.listdir( waves = [f for f in os.listdir(
# train_audio_path + '/' + label) if f.endswith('.wav')] train_audio_path + '/' + label) if f.endswith('.wav')]
# for wav in waves: for wav in waves:
# sample_rate, samples = wavfile.read( sample_rate, samples = wavfile.read(
# train_audio_path + '/' + label + '/' + wav) train_audio_path + '/' + label + '/' + wav)
# duration_of_recordings.append(float(len(samples)/sample_rate)) duration_of_recordings.append(float(len(samples)/sample_rate))
# plt.hist(np.array(duration_of_recordings)) plt.hist(np.array(duration_of_recordings))
# train_audio_path = r'./backend/data/train/train/audio/' train_audio_path = r'./backend/data/train/train/audio/'
# all_wave = [] all_wave = []
# all_label = [] all_label = []
# f1 = open('all_label.txt', 'rb') f1 = open('all_label.txt', 'rb')
# all_label = pickle.load(f1) all_label = pickle.load(f1)
# f2 = open('all_waves_file.txt', 'rb') f2 = open('all_waves_file.txt', 'rb')
# all_wave = pickle.load(f2) all_wave = pickle.load(f2)
# if(all_wave and all_label): if(all_wave and all_label):
# print('loaded labels and waves') print('loaded labels and waves')
# else: else:
# print('Creating labels and waves files') print('Creating labels and waves files')
# for label in labels: for label in labels:
# print(label) print(label)
# waves = [f for f in os.listdir( waves = [f for f in os.listdir(
# train_audio_path + '/' + label) if f.endswith('.wav')] train_audio_path + '/' + label) if f.endswith('.wav')]
# for wav in waves: for wav in waves:
# samples, sample_rate = librosa.load( samples, sample_rate = librosa.load(
# train_audio_path + '/' + label + '/' + wav, sr=16000) train_audio_path + '/' + label + '/' + wav, sr=16000)
# samples = librosa.resample(samples, sample_rate, 8000) samples = librosa.resample(samples, sample_rate, 8000)
# if(len(samples) == 8000): if(len(samples) == 8000):
# all_wave.append(samples) all_wave.append(samples)
# all_label.append(label) all_label.append(label)
# # print('3') # print('3')
# all_labels_file = open('all_label.txt', 'wb+') all_labels_file = open('all_label.txt', 'wb+')
# pickle.dump(file=all_labels_file, obj=all_label) pickle.dump(file=all_labels_file, obj=all_label)
# all_labels_file.close() all_labels_file.close()
# return False return False
# all_waves_file = open('all_waves_file.txt', 'wb+') all_waves_file = open('all_waves_file.txt', 'wb+')
# pickle.dump(file=all_waves_file, obj=all_wave) pickle.dump(file=all_waves_file, obj=all_wave)
# all_waves_file.close() all_waves_file.close()
# print('Done: creating labels and waves files') print('Done: creating labels and waves files')
# return False return False
# le = LabelEncoder() le = LabelEncoder()
# y = le.fit_transform(all_label) y = le.fit_transform(all_label)
# classes = list(le.classes_) classes = list(le.classes_)
# print('4') print('4')
# y = np_utils.to_categorical(y, num_classes=len(labels)) y = np_utils.to_categorical(y, num_classes=len(labels))
# all_wave = np.array(all_wave).reshape(-1, 8000, 1) all_wave = np.array(all_wave).reshape(-1, 8000, 1)
# x_tr, x_val, y_tr, y_val = train_test_split(np.array(all_wave), np.array( x_tr, x_val, y_tr, y_val = train_test_split(np.array(all_wave), np.array(
# y), stratify=y, test_size=0.2, random_state=777, shuffle=True) y), stratify=y, test_size=0.2, random_state=777, shuffle=True)
# train_data_file = open('train_data_file.txt', 'wb+') train_data_file = open('train_data_file.txt', 'wb+')
# np.save(file=train_data_file, arr=np.array([x_tr, x_val, y_tr, y_val])) np.save(file=train_data_file, arr=np.array([x_tr, x_val, y_tr, y_val]))
# train_data_file.close() train_data_file.close()
# inputs = Input(shape=(8000, 1)) inputs = Input(shape=(8000, 1))
# # First Conv1D layer # First Conv1D layer
# conv = Conv1D(8, 13, padding='valid', activation='relu', strides=1)(inputs) conv = Conv1D(8, 13, padding='valid', activation='relu', strides=1)(inputs)
# conv = MaxPooling1D(3)(conv) conv = MaxPooling1D(3)(conv)
# conv = Dropout(0.3)(conv) conv = Dropout(0.3)(conv)
# # Second Conv1D layer # Second Conv1D layer
# conv = Conv1D(16, 11, padding='valid', activation='relu', strides=1)(conv) conv = Conv1D(16, 11, padding='valid', activation='relu', strides=1)(conv)
# conv = MaxPooling1D(3)(conv) conv = MaxPooling1D(3)(conv)
# conv = Dropout(0.3)(conv) conv = Dropout(0.3)(conv)
# # Third Conv1D layer # Third Conv1D layer
# conv = Conv1D(32, 9, padding='valid', activation='relu', strides=1)(conv) conv = Conv1D(32, 9, padding='valid', activation='relu', strides=1)(conv)
# conv = MaxPooling1D(3)(conv) conv = MaxPooling1D(3)(conv)
# conv = Dropout(0.3)(conv) conv = Dropout(0.3)(conv)
# # Fourth Conv1D layer # Fourth Conv1D layer
# conv = Conv1D(64, 7, padding='valid', activation='relu', strides=1)(conv) conv = Conv1D(64, 7, padding='valid', activation='relu', strides=1)(conv)
# conv = MaxPooling1D(3)(conv) conv = MaxPooling1D(3)(conv)
# conv = Dropout(0.3)(conv) conv = Dropout(0.3)(conv)
# # Flatten layer # Flatten layer
# conv = Flatten()(conv) conv = Flatten()(conv)
# # Dense Layer 1 # Dense Layer 1
# conv = Dense(256, activation='relu')(conv) conv = Dense(256, activation='relu')(conv)
# conv = Dropout(0.3)(conv) conv = Dropout(0.3)(conv)
# # Dense Layer 2 # Dense Layer 2
# conv = Dense(128, activation='relu')(conv) conv = Dense(128, activation='relu')(conv)
# conv = Dropout(0.3)(conv) conv = Dropout(0.3)(conv)
# outputs = Dense(len(labels), activation='softmax')(conv) outputs = Dense(len(labels), activation='softmax')(conv)
# model = Model(inputs, outputs) model = Model(inputs, outputs)
# model.summary() model.summary()
# model.compile(loss='categorical_crossentropy', model.compile(loss='categorical_crossentropy',
# optimizer='adam', metrics=['accuracy']) optimizer='adam', metrics=['accuracy'])
# es = EarlyStopping(monitor='val_loss', mode='min', es = EarlyStopping(monitor='val_loss', mode='min',
# verbose=1, patience=10, min_delta=0.0001) verbose=1, patience=10, min_delta=0.0001)
# mc = ModelCheckpoint('best_model.hdf5', monitor='val_accuracy', mc = ModelCheckpoint('best_model.hdf5', monitor='val_accuracy',
# verbose=1, save_best_only=True, mode='max') verbose=1, save_best_only=True, mode='max')
# history = model.fit(x_tr, y_tr, epochs=100, callbacks=[ history = model.fit(x_tr, y_tr, epochs=100, callbacks=[
# es, mc], batch_size=32, validation_data=(x_val, y_val)) es, mc], batch_size=32, validation_data=(x_val, y_val))
# # pyplot.plot(history.history['loss'], label='train') # pyplot.plot(history.history['loss'], label='train')
# # pyplot.plot(history.history['val_loss'], label='test') # pyplot.plot(history.history['val_loss'], label='test')
# # pyplot.legend() # pyplot.legend()
# # pyplot.show() # pyplot.show()
# return history return history
...@@ -53,7 +53,7 @@ class ChatSerialier(serializers.ModelSerializer): ...@@ -53,7 +53,7 @@ class ChatSerialier(serializers.ModelSerializer):
'__all__' '__all__'
) )
class ConversationSerializer(serializers.Serializer): class ConversationSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Conversation model = Conversation
fields = ( fields = (
......
from http.client import HTTPResponse from http.client import HTTPResponse
from lib2to3.pytree import convert
from pyexpat import model
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from rest_framework import viewsets from rest_framework import viewsets
from rest_framework import permissions from rest_framework import permissions
...@@ -12,6 +14,8 @@ import os ...@@ -12,6 +14,8 @@ import os
from rest_framework.parsers import MultiPartParser from rest_framework.parsers import MultiPartParser
from io import BytesIO from io import BytesIO
from datetime import datetime, timedelta
import librosa import librosa
...@@ -20,20 +24,20 @@ from django.core.files.storage import FileSystemStorage ...@@ -20,20 +24,20 @@ from django.core.files.storage import FileSystemStorage
from .models import Chat, Conversation, MlModel from .models import Chat, Conversation, MlModel
from rest_framework_simplejwt.views import TokenObtainPairView from rest_framework_simplejwt.views import TokenObtainPairView
# from .model.train import train from .model.train import train
# from .model.predict import predict from .model.predict import predict
from pydub import AudioSegment from pydub import AudioSegment
import numpy as np import numpy as np
class ObtainTokenPairWithUserView(TokenObtainPairView): class ObtainTokenPairWithUserView(TokenObtainPairView):
permission_classes = (permissions.AllowAny,) permission_classes = (permissions.AllowAny,)
serializer_class = MyTokenObtainPairSerializer serializer_class = MyTokenObtainPairSerializer
class UserViewSet(viewsets.ModelViewSet): class UserViewSet(viewsets.ModelViewSet):
""" """
API endpoint that allows users to be viewed or edited. API endpoint that allows users to be viewed or edited.
...@@ -45,7 +49,6 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -45,7 +49,6 @@ class UserViewSet(viewsets.ModelViewSet):
@action(detail=False) @action(detail=False)
def runFunction(*args, **kwargs): def runFunction(*args, **kwargs):
print('Function ran') print('Function ran')
results = {} # train() CHANGE HERE results = {} # train() CHANGE HERE
print(results) print(results)
...@@ -61,6 +64,7 @@ class GroupViewSet(viewsets.ModelViewSet): ...@@ -61,6 +64,7 @@ class GroupViewSet(viewsets.ModelViewSet):
serializer_class = GroupSerializer serializer_class = GroupSerializer
permission_classes = [permissions.IsAuthenticated] permission_classes = [permissions.IsAuthenticated]
class MlModelViewSet(viewsets.ViewSet): class MlModelViewSet(viewsets.ViewSet):
queryset = MlModel.objects.all() queryset = MlModel.objects.all()
...@@ -68,6 +72,42 @@ class MlModelViewSet(viewsets.ViewSet): ...@@ -68,6 +72,42 @@ class MlModelViewSet(viewsets.ViewSet):
permission_classes = [permissions.AllowAny] permission_classes = [permissions.AllowAny]
parser_classes = [MultiPartParser] parser_classes = [MultiPartParser]
@action(detail=False)
def runAction(*args, **kwargs):
admin = User.objects.get(username='admin')
user2 = User.objects.get(username='user2')
convo = Conversation(from_user=admin, to_user=user2)
convo.save()
now = datetime.now()
chats = [{'from': 1, 'to': 2, 'message': 'msg1', 'time': now},
{'from': 1, 'to': 2, 'message': 'msg2',
'time': now + timedelta(minutes=1)},
{'from': 2, 'to': 1, 'message': 'msg3',
'time': now + timedelta(minutes=2)},
{'from': 1, 'to': 2, 'message': 'msg4',
'time': now + timedelta(minutes=3)},
{'from': 2, 'to': 1, 'message': 'msg5',
'time': now + timedelta(minutes=4)},
{'from': 1, 'to': 2, 'message': 'msg11', 'time': now},
{'from': 1, 'to': 2, 'message': 'msg22',
'time': now + timedelta(days=1)},
{'from': 2, 'to': 1, 'message': 'msg33',
'time': now + timedelta(days=2)},
{'from': 1, 'to': 2, 'message': 'msg44',
'time': now + timedelta(days=3)},
{'from': 2, 'to': 1, 'message': 'msg55',
'time': now + timedelta(days=4)},
]
for chat in chats:
object = Chat(
conversation=convo, from_user_id=chat['from'], to_user_id=chat['to'], messsage=chat['message'])
object.save()
@action(detail=False) @action(detail=False)
def train(*args, **kwargs): def train(*args, **kwargs):
print('Function ran') print('Function ran')
...@@ -75,7 +115,6 @@ class MlModelViewSet(viewsets.ViewSet): ...@@ -75,7 +115,6 @@ class MlModelViewSet(viewsets.ViewSet):
print(results) print(results)
return Response({'success': True}) return Response({'success': True})
@action(detail=False, methods=["POST"]) @action(detail=False, methods=["POST"])
def detect(self, request, *args, **kwargs): def detect(self, request, *args, **kwargs):
print('Function ran') print('Function ran')
...@@ -83,7 +122,6 @@ class MlModelViewSet(viewsets.ViewSet): ...@@ -83,7 +122,6 @@ class MlModelViewSet(viewsets.ViewSet):
bytesio_object = list(request.data.dict().values())[0].file bytesio_object = list(request.data.dict().values())[0].file
print(bytesio_object) print(bytesio_object)
with open("output.m4a", "wb") as f: with open("output.m4a", "wb") as f:
f.write(bytesio_object.getbuffer()) f.write(bytesio_object.getbuffer())
...@@ -93,7 +131,6 @@ class MlModelViewSet(viewsets.ViewSet): ...@@ -93,7 +131,6 @@ class MlModelViewSet(viewsets.ViewSet):
audSeg = AudioSegment.from_file("output.m4a") audSeg = AudioSegment.from_file("output.m4a")
audSeg.export('output.wav', format="wav") audSeg.export('output.wav', format="wav")
samples, sample_rate = librosa.load( samples, sample_rate = librosa.load(
'output.wav', sr=16000) 'output.wav', sr=16000)
samples = librosa.resample(samples, sample_rate, 8000) samples = librosa.resample(samples, sample_rate, 8000)
...@@ -109,7 +146,6 @@ class MlModelViewSet(viewsets.ViewSet): ...@@ -109,7 +146,6 @@ class MlModelViewSet(viewsets.ViewSet):
samples = np.concatenate((samples, new_arr)) samples = np.concatenate((samples, new_arr))
print(samples.shape) print(samples.shape)
# audio_file = request.data # audio_file = request.data
# # Using File storage to save file for future converting # # Using File storage to save file for future converting
...@@ -136,19 +172,18 @@ class MlModelViewSet(viewsets.ViewSet): ...@@ -136,19 +172,18 @@ class MlModelViewSet(viewsets.ViewSet):
# track.file.name = mp3_filename # track.file.name = mp3_filename
# track.save() # track.save()
results = predict(samples)
results = {} #predict(samples) CHANGE HERE
print(results) print(results)
return Response({'success': True, 'result': results}) return Response({'success': True, 'result': results})
class ChatViewSet(viewsets.ViewSet): class ChatViewSet(viewsets.ModelViewSet):
queryset = Chat.objects.all().order_by('-timestamp') queryset = Chat.objects.all().order_by('-timestamp')
serializer_class = ChatSerialier serializer_class = ChatSerialier
permission_classes = [permissions.IsAuthenticated] permission_classes = [permissions.IsAuthenticated]
class ConversationViewSet(viewsets.ViewSet):
queryset = Conversation.objects.all class ConversationViewSet(viewsets.ModelViewSet):
queryset = Conversation.objects.all().order_by('id')
serializer_class = ConversationSerializer serializer_class = ConversationSerializer
permission_classes = [permissions.IsAuthenticated] permission_classes = [permissions.IsAuthenticated]
...@@ -9,6 +9,8 @@ router = routers.DefaultRouter() ...@@ -9,6 +9,8 @@ router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet) router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet) router.register(r'groups', views.GroupViewSet)
router.register(r'mlmodels', views.MlModelViewSet) router.register(r'mlmodels', views.MlModelViewSet)
router.register(r'chats', views.ChatViewSet)
router.register(r'conversations', views.ConversationViewSet)
# Wire up our API using automatic URL routing. # Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API. # Additionally, we include login URLs for the browsable API.
......
No preview for this file type
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment