Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
240
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2022-240
240
Commits
cf4c555d
Commit
cf4c555d
authored
Aug 11, 2022
by
Malsha Rathnasiri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
create chat send logic
parent
7cca654f
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1520 additions
and
312 deletions
+1520
-312
MobileApp/.gitignore
MobileApp/.gitignore
+1
-0
MobileApp/App.tsx
MobileApp/App.tsx
+9
-5
MobileApp/api/Authentication.js
MobileApp/api/Authentication.js
+19
-12
MobileApp/api/api.js
MobileApp/api/api.js
+17
-0
MobileApp/api/constants.js
MobileApp/api/constants.js
+2
-1
MobileApp/components/AudioRecorder.jsx
MobileApp/components/AudioRecorder.jsx
+9
-9
MobileApp/navigation/index.jsx
MobileApp/navigation/index.jsx
+13
-11
MobileApp/package.json
MobileApp/package.json
+2
-0
MobileApp/screens/TabOneScreen.jsx
MobileApp/screens/TabOneScreen.jsx
+82
-44
MobileApp/screens/loginScreen.js
MobileApp/screens/loginScreen.js
+13
-5
MobileApp/util/util.js
MobileApp/util/util.js
+3
-0
MobileApp/yarn.lock
MobileApp/yarn.lock
+1053
-1
backend/backend/cms/migrations/0002_conversation_chat.py
backend/backend/cms/migrations/0002_conversation_chat.py
+36
-0
backend/backend/cms/model/predict.py
backend/backend/cms/model/predict.py
+33
-33
backend/backend/cms/model/train.py
backend/backend/cms/model/train.py
+166
-166
backend/backend/cms/serializers.py
backend/backend/cms/serializers.py
+1
-1
backend/backend/cms/views.py
backend/backend/cms/views.py
+59
-24
backend/backend/urls.py
backend/backend/urls.py
+2
-0
backend/db.sqlite3
backend/db.sqlite3
+0
-0
backend/db_old3.sqlite3
backend/db_old3.sqlite3
+0
-0
backend/output.m4a
backend/output.m4a
+0
-0
No files found.
MobileApp/.gitignore
View file @
cf4c555d
node_modules/
node_modules/
node_modules2/
.expo/
.expo/
dist/
dist/
npm-debug.*
npm-debug.*
...
...
MobileApp/App.tsx
View file @
cf4c555d
...
@@ -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
>
);
);
}
}
}
}
MobileApp/api/Authentication.js
View file @
cf4c555d
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
"
)
...
...
MobileApp/api/api.js
View file @
cf4c555d
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
MobileApp/api/constants.js
View file @
cf4c555d
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
MobileApp/components/AudioRecorder.jsx
View file @
cf4c555d
...
@@ -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
}))
...
...
MobileApp/navigation/index.
t
sx
→
MobileApp/navigation/index.
j
sx
View file @
cf4c555d
...
@@ -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
(
fals
e
)
const
[
isAuthenticated
,
setIsAutheticated
]
=
React
.
useState
(
tru
e
)
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
}
/>;
}
}
MobileApp/package.json
View file @
cf4c555d
...
@@ -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"
:
{
...
...
MobileApp/screens/TabOneScreen.jsx
View file @
cf4c555d
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=
{
sectionC
hats
}
sections=
{
c
hats
}
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
>
);
);
}
}
...
...
MobileApp/screens/loginScreen.js
View file @
cf4c555d
...
@@ -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
)
=>
{
onChange
Text
=
{(
e
)
=>
{
console
.
log
(
usernam
e
);
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
.
valu
e
)}
onChange
Text
=
{(
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
>
...
...
MobileApp/util/util.js
View file @
cf4c555d
export
const
TOAST_PROPS
=
{
placement
:
'
top
'
}
export
const
ERROR_TOAST_PROPS
=
{...
TOAST_PROPS
,
style
:{
backgroundColor
:
'
red
'
}}
\ No newline at end of file
MobileApp/yarn.lock
View file @
cf4c555d
...
@@ -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"
...
...
backend/backend/cms/migrations/0002_conversation_chat.py
0 → 100644
View file @
cf4c555d
# 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
)),
],
),
]
backend/backend/cms/model/predict.py
View file @
cf4c555d
#
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
backend/backend/cms/model/train.py
View file @
cf4c555d
#
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
backend/backend/cms/serializers.py
View file @
cf4c555d
...
@@ -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
.
Model
Serializer
):
class
Meta
:
class
Meta
:
model
=
Conversation
model
=
Conversation
fields
=
(
fields
=
(
...
...
backend/backend/cms/views.py
View file @
cf4c555d
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
.
Model
ViewSet
):
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
]
backend/backend/urls.py
View file @
cf4c555d
...
@@ -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.
...
...
backend/db.sqlite3
View file @
cf4c555d
No preview for this file type
backend/db_old3.sqlite3
0 → 100644
View file @
cf4c555d
File added
backend/output.m4a
View file @
cf4c555d
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment