Toggle navigation
Toggle navigation
This project
Loading...
Sign in
2020-1-capstone-design1
/
Wico_Project1
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
조민지
2020-06-13 16:41:09 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
24e6af6999b805774c34eedadd333a7b705b0f69
24e6af69
1 parent
104d8be9
feat: 킥보드 페이지 데이터 구성
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
592 additions
and
76 deletions
frontend/package-lock.json
frontend/package.json
frontend/src/components/Kickboard/GoogleMap.jsx
frontend/src/components/Kickboard/GoogleMapCard.jsx
frontend/src/components/Kickboard/KickboardHistoryTable.jsx
frontend/src/components/Kickboard/KickboardStatusCard.jsx
frontend/src/components/Kickboard/SearchButton.jsx
frontend/src/variables/Variables.jsx
frontend/src/views/Kickboard.jsx
frontend/src/views/Notifications.jsx
package-lock.json
frontend/package-lock.json
View file @
24e6af6
...
...
@@ -4920,6 +4920,12 @@
"resolved"
:
"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.413.tgz"
,
"integrity"
:
"sha512-Jm1Rrd3siqYHO3jftZwDljL2LYQafj3Kki5r+udqE58d0i91SkjItVJ5RwlJn9yko8i7MOcoidVKjQlgSdd1hg=="
},
"element-resize-event"
:
{
"version"
:
"2.0.9"
,
"resolved"
:
"https://registry.npmjs.org/element-resize-event/-/element-resize-event-2.0.9.tgz"
,
"integrity"
:
"sha1-L14VgaKW61J1IQwUG8VjQuIY+HY="
,
"dev"
:
true
},
"elliptic"
:
{
"version"
:
"6.5.2"
,
"resolved"
:
"https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz"
,
...
...
@@ -9774,6 +9780,11 @@
"minimist"
:
"^1.2.5"
}
},
"moment"
:
{
"version"
:
"2.26.0"
,
"resolved"
:
"https://registry.npmjs.org/moment/-/moment-2.26.0.tgz"
,
"integrity"
:
"sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw=="
},
"move-concurrently"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz"
,
...
...
@@ -12017,6 +12028,15 @@
}
}
},
"react-dimensions"
:
{
"version"
:
"1.3.1"
,
"resolved"
:
"https://registry.npmjs.org/react-dimensions/-/react-dimensions-1.3.1.tgz"
,
"integrity"
:
"sha512-go5vMuGUxaB5PiTSIk+ZfAxLbHwcIgIfLhkBZ2SIMQjaCgnpttxa30z5ijEzfDjeOCTGRpxvkzcmE4Vt4Ppvyw=="
,
"dev"
:
true
,
"requires"
:
{
"element-resize-event"
:
"^2.0.4"
}
},
"react-dom"
:
{
"version"
:
"16.8.6"
,
"resolved"
:
"https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz"
,
...
...
@@ -12061,6 +12081,11 @@
"resolved"
:
"https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz"
,
"integrity"
:
"sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"react-moment"
:
{
"version"
:
"0.9.7"
,
"resolved"
:
"https://registry.npmjs.org/react-moment/-/react-moment-0.9.7.tgz"
,
"integrity"
:
"sha512-ifzUrUGF6KRsUN2pRG5k56kO0mJBr8kRkWb0wNvtFIsBIxOuPxhUpL1YlXwpbQCbHq23hUu6A0VEk64HsFxk9g=="
},
"react-notification-system"
:
{
"version"
:
"0.2.17"
,
"resolved"
:
"https://registry.npmjs.org/react-notification-system/-/react-notification-system-0.2.17.tgz"
,
...
...
frontend/package.json
View file @
24e6af6
...
...
@@ -5,12 +5,14 @@
"dependencies"
:
{
"bootstrap"
:
"3.3.7"
,
"chartist"
:
"0.10.1"
,
"moment"
:
"^2.26.0"
,
"node-sass"
:
"4.12.0"
,
"react"
:
"16.8.6"
,
"react-bootstrap"
:
"0.32.4"
,
"react-chartist"
:
"0.13.3"
,
"react-dom"
:
"16.8.6"
,
"react-google-maps"
:
"9.4.5"
,
"react-moment"
:
"^0.9.7"
,
"react-notification-system"
:
"0.2.17"
,
"react-router"
:
"5.0.0"
,
"react-router-dom"
:
"5.0.0"
,
...
...
@@ -21,6 +23,7 @@
"@types/googlemaps"
:
"3.30.19"
,
"@types/markerclustererplus"
:
"2.1.33"
,
"@types/react"
:
"16.8.13"
,
"react-dimensions"
:
"^1.3.1"
,
"typescript"
:
"3.4.3"
},
"scripts"
:
{
...
...
frontend/src/components/Kickboard/GoogleMap.jsx
0 → 100644
View file @
24e6af6
import
React
,
{
useEffect
}
from
"react"
;
import
Dimensions
from
"react-dimensions"
;
let
map
,
infoWindow
;
const
GoogleMap
=
(
props
)
=>
{
useEffect
(()
=>
{
console
.
log
(
'mount'
);
const
{
google
}
=
window
;
infoWindow
=
new
window
.
google
.
maps
.
InfoWindow
({});
map
=
new
google
.
maps
.
Map
(
document
.
getElementById
(
"map"
),
{
zoom
:
11
,
center
:
{
lat
:
-
34.397
,
lng
:
150.644
},
disableDefaultUI
:
true
,
zoomControl
:
true
});
},
[]);
return
(
<
div
id=
"map"
style=
{
{
height
:
props
.
containerWidth
,
backgroundColor
:
'pink'
}
}
>
</
div
>
)
};
export
default
Dimensions
()(
GoogleMap
)
// Enhanced component
\ No newline at end of file
frontend/src/components/Kickboard/GoogleMapCard.jsx
0 → 100644
View file @
24e6af6
import
React
from
"react"
;
import
{
Card
}
from
"components/Card/Card.jsx"
;
import
Dimensions
from
'react-dimensions'
import
moment
from
'moment'
;
import
GoogleMap
from
'./GoogleMap'
;
const
GoogleMapCard
=
(
props
)
=>
{
const
getStats
=
`마지막 업데이트
${
moment
().
format
(
"YYYY/MM/DD hh:mm"
)}
`
;
return
(
<
Card
id=
"chartActivity"
title=
"서비스 현황"
category=
"All products including Taxes"
stats=
{
getStats
}
statsIcon=
"fa fa-history"
content=
{
<
GoogleMap
/>
}
/>
);
};
export
default
GoogleMapCard
// Enhanced component
\ No newline at end of file
frontend/src/components/Kickboard/KickboardHistoryTable.jsx
0 → 100644
View file @
24e6af6
import
React
from
"react"
;
import
{
Table
}
from
"react-bootstrap"
;
import
{
Card
}
from
"components/Card/Card.jsx"
;
import
{
tdArray
}
from
"variables/Variables.jsx"
;
const
thArray
=
[
'유저ID'
,
'대여 시각'
,
'반납 시각'
,
'대여 시간'
,
'이동 거리'
,
'대여 금액'
];
const
KickboardHistoryTable
=
()
=>
{
return
(
<
Card
title=
"Striped Table with Hover"
category=
"Here is a subtitle for this table"
ctTableFullWidth
ctTableResponsive
content=
{
<
Table
striped
hover
>
<
thead
>
<
tr
>
{
thArray
.
map
((
prop
,
key
)
=>
{
return
<
th
key=
{
key
}
>
{
prop
}
</
th
>;
})
}
</
tr
>
</
thead
>
<
tbody
>
{
tdArray
.
map
((
prop
,
key
)
=>
{
return
(
<
tr
key=
{
key
}
>
{
prop
.
map
((
prop
,
key
)
=>
{
return
<
td
key=
{
key
}
>
{
prop
}
</
td
>;
})
}
</
tr
>
);
})
}
</
tbody
>
</
Table
>
}
/>
)
};
export
default
KickboardHistoryTable
;
frontend/src/components/Kickboard/KickboardStatusCard.jsx
0 → 100644
View file @
24e6af6
import
React
from
"react"
;
import
{
Card
}
from
"components/Card/Card.jsx"
;
import
{
Col
,
Row
}
from
"react-bootstrap"
;
import
styled
from
"styled-components"
import
moment
from
"moment"
;
// border: 1px solid #E3E3E3;
const
KickboardButton
=
styled
.
div
`
background-color: #e7e7e7;
border-radius: 4px;
color: #565656;
padding: 8px 12px;
height: 40px;
box-shadow: none;
margin: 0 auto;
text-align: center;
margin-bottom: 10px;
&:hover {
background-color: #565656;
color: white;
cursor: pointer;
}
`
;
const
KickboardDataList
=
styled
.
ul
`
font-size: 16px;
`
;
const
KickboardData
=
styled
.
li
`
padding: 3px 0;
`
;
const
kickboardDataKey
=
{
a
:
'배터리'
,
b
:
'킥보드 위치'
,
c
:
'킥보드 상태'
,
d
:
'킥보드 자세 여부'
,
e
:
'총 누적 이동 거리'
,
f
:
'총 누적 대여 시간'
,
g
:
'신호 양호 여부'
,
h
:
'현재 네트워크 연결 여부'
,
i
:
'최근 gps 업데이트 시각'
,
j
:
'최근 연결 업데이트 시각'
,
k
:
'모델명'
,
l
:
'최근 업데이트 시각'
,
};
const
KickboardStatusCard
=
()
=>
{
const
getStats
=
`마지막 업데이트
${
moment
().
format
(
"YYYY/MM/DD hh:mm"
)}
`
;
return
(
<
Card
title=
{
'000000번 킥보드'
}
stats=
{
getStats
}
statsIcon=
"fa fa-history"
content=
{
<
Row
>
<
Col
md=
{
4
}
sm=
{
4
}
xs=
{
4
}
>
<
KickboardButton
>
경적 울리기
</
KickboardButton
>
</
Col
>
<
Col
md=
{
4
}
sm=
{
4
}
xs=
{
4
}
>
<
KickboardButton
>
반납하기
</
KickboardButton
>
</
Col
>
<
Col
md=
{
4
}
sm=
{
4
}
xs=
{
4
}
>
<
KickboardButton
>
운행 종료하기
</
KickboardButton
>
</
Col
>
<
KickboardDataList
>
{
Object
.
keys
(
kickboardDataKey
).
map
(
key
=>
{
return
<
KickboardData
>
{
kickboardDataKey
[
key
]
}
:
{
key
}
</
KickboardData
>
})
}
</
KickboardDataList
>
</
Row
>
}
>
</
Card
>
);
};
export
default
KickboardStatusCard
;
\ No newline at end of file
frontend/src/components/Kickboard/SearchButton.jsx
0 → 100644
View file @
24e6af6
import
React
from
"react"
;
import
styled
from
"styled-components"
;
const
SearchButtonWrapper
=
styled
.
div
`
display: flex;
flex-direction: row;
justify-content: space-between;
`
;
const
SearchInput
=
styled
.
input
`
width: 80%;
`
;
const
ApplyButton
=
styled
.
div
`
width: 17%;
background-color: #e7e7e7;
border-radius: 4px;
color: #565656;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
&:hover {
background-color: #565656;
color: white;
cursor: pointer;
`
;
const
SearchButton
=
()
=>
{
return
(
<
SearchButtonWrapper
>
<
SearchInput
type=
"text"
className=
"form-control"
placeholder=
{
"킥보드 번호로 검색하기"
}
/>
<
ApplyButton
><
span
>
검색
</
span
></
ApplyButton
>
</
SearchButtonWrapper
>
);
};
export
default
SearchButton
;
frontend/src/variables/Variables.jsx
View file @
24e6af6
...
...
@@ -268,12 +268,12 @@ var style = {
//
const
thArray
=
[
"ID"
,
"Name"
,
"Salary"
,
"Country"
,
"City"
];
const
tdArray
=
[
[
"1"
,
"Dakota Rice"
,
"$36,738"
,
"Niger"
,
"Oud-Turnhout"
],
[
"2"
,
"Minerva Hooper"
,
"$23,789"
,
"Curaçao"
,
"Sinaai-Waas"
],
[
"3"
,
"Sage Rodriguez"
,
"$56,142"
,
"Netherlands"
,
"Baileux"
],
[
"4"
,
"Philip Chaney"
,
"$38,735"
,
"Korea, South"
,
"Overland Park"
],
[
"5"
,
"Doris Greene"
,
"$63,542"
,
"Malawi"
,
"Feldkirchen in Kärnten"
],
[
"6"
,
"Mason Porter"
,
"$78,615"
,
"Chile"
,
"Gloucester"
]
[
"1"
,
"Dakota Rice"
,
"$36,738"
,
"Niger"
,
"Oud-Turnhout"
,
'1'
],
[
"2"
,
"Minerva Hooper"
,
"$23,789"
,
"Curaçao"
,
"Sinaai-Waas"
,
'1'
],
[
"3"
,
"Sage Rodriguez"
,
"$56,142"
,
"Netherlands"
,
"Baileux"
,
'1'
],
[
"4"
,
"Philip Chaney"
,
"$38,735"
,
"Korea, South"
,
"Overland Park"
,
'1'
],
[
"5"
,
"Doris Greene"
,
"$63,542"
,
"Malawi"
,
"Feldkirchen in Kärnten"
,
'1'
],
[
"6"
,
"Mason Porter"
,
"$78,615"
,
"Chile"
,
"Gloucester"
,
'1'
]
];
//
...
...
frontend/src/views/Kickboard.jsx
View file @
24e6af6
import
React
from
"react"
;
import
ChartistGraph
from
"react-chartist"
;
import
{
Grid
,
Row
,
Col
,
Table
}
from
"react-bootstrap"
;
import
{
Card
}
from
"components/Card/Card.jsx"
;
import
{
Tasks
}
from
"components/Tasks/Tasks.jsx"
;
import
{
dataBar
,
optionsBar
,
responsiveBar
,
}
from
"variables/Variables.jsx"
;
import
{
thArray
,
tdArray
}
from
"variables/Variables.jsx"
;
import
{
Grid
,
Row
,
Col
}
from
"react-bootstrap"
;
import
GoogleMapCard
from
'../components/Kickboard/GoogleMapCard'
;
import
KickboardStatusCard
from
'../components/Kickboard/KickboardStatusCard'
;
import
KickboardHistoryTable
from
'../components/Kickboard/KickboardHistoryTable'
;
import
SearchButton
from
'../components/Kickboard/SearchButton'
;
const
Kickboard
=
()
=>
{
// 여기 API 요청
return
(
<
div
className=
"content"
>
<
Grid
fluid
>
<
Row
>
<
Col
md=
{
3
}
mdOffset=
{
9
}
sm=
{
3
}
smOffset=
{
9
}
style=
{
{
marginBottom
:
15
}
}
>
<
input
type=
"text"
className=
"form-control"
placeholder=
{
"킥보드 번호로 검색하기"
}
/>
<
Col
md=
{
4
}
mdOffset=
{
8
}
sm=
{
3
}
smOffset=
{
9
}
style=
{
{
marginBottom
:
15
}
}
>
<
SearchButton
/>
</
Col
>
</
Row
>
<
Row
>
<
Col
md=
{
6
}
>
<
Card
id=
"chartActivity"
title=
"2014 Sales"
category=
"All products including Taxes"
stats=
"마지막 업데이트 2020/04/20 17:23"
statsIcon=
"fa fa-check"
content=
{
<
div
className=
"ct-chart"
>
<
ChartistGraph
data=
{
dataBar
}
type=
"Bar"
options=
{
optionsBar
}
responsiveOptions=
{
responsiveBar
}
/>
</
div
>
}
/>
<
GoogleMapCard
/>
</
Col
>
<
Col
md=
{
6
}
>
<
Card
title=
"Tasks"
category=
"Backend development"
stats=
"Updated 3 minutes ago"
statsIcon=
"fa fa-history"
content=
{
<
div
className=
"table-full-width"
>
<
table
className=
"table"
>
<
Tasks
/>
</
table
>
</
div
>
}
/>
<
KickboardStatusCard
/>
</
Col
>
</
Row
>
<
Row
>
<
Col
md=
{
12
}
>
<
Card
title=
"Striped Table with Hover"
category=
"Here is a subtitle for this table"
ctTableFullWidth
ctTableResponsive
content=
{
<
Table
striped
>
<
thead
>
<
tr
>
{
thArray
.
map
((
prop
,
key
)
=>
{
return
<
th
key=
{
key
}
>
{
prop
}
</
th
>;
})
}
</
tr
>
</
thead
>
<
tbody
>
{
tdArray
.
map
((
prop
,
key
)
=>
{
return
(
<
tr
key=
{
key
}
>
{
prop
.
map
((
prop
,
key
)
=>
{
return
<
td
key=
{
key
}
>
{
prop
}
</
td
>;
})
}
</
tr
>
);
})
}
</
tbody
>
</
Table
>
}
/>
<
KickboardHistoryTable
/>
</
Col
>
</
Row
>
</
Grid
>
...
...
frontend/src/views/Notifications.jsx
View file @
24e6af6
...
...
@@ -21,6 +21,11 @@ import { Grid, Row, Col, Alert } from "react-bootstrap";
import
Button
from
"components/CustomButton/CustomButton.jsx"
;
class
Notifications
extends
Component
{
constructor
(
props
)
{
super
(
props
);
console
.
log
(
this
.
props
);
}
render
()
{
return
(
<
div
className=
"content"
>
...
...
package-lock.json
0 → 100644
View file @
24e6af6
{
"requires"
:
true
,
"lockfileVersion"
:
1
,
"dependencies"
:
{
"@babel/code-frame"
:
{
"version"
:
"7.8.3"
,
"resolved"
:
"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz"
,
"integrity"
:
"sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g=="
,
"requires"
:
{
"@babel/highlight"
:
"^7.8.3"
}
},
"@babel/generator"
:
{
"version"
:
"7.9.6"
,
"resolved"
:
"https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz"
,
"integrity"
:
"sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ=="
,
"requires"
:
{
"@babel/types"
:
"^7.9.6"
,
"jsesc"
:
"^2.5.1"
,
"lodash"
:
"^4.17.13"
,
"source-map"
:
"^0.5.0"
}
},
"@babel/helper-annotate-as-pure"
:
{
"version"
:
"7.8.3"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz"
,
"integrity"
:
"sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw=="
,
"requires"
:
{
"@babel/types"
:
"^7.8.3"
}
},
"@babel/helper-function-name"
:
{
"version"
:
"7.9.5"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz"
,
"integrity"
:
"sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw=="
,
"requires"
:
{
"@babel/helper-get-function-arity"
:
"^7.8.3"
,
"@babel/template"
:
"^7.8.3"
,
"@babel/types"
:
"^7.9.5"
}
},
"@babel/helper-get-function-arity"
:
{
"version"
:
"7.8.3"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz"
,
"integrity"
:
"sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA=="
,
"requires"
:
{
"@babel/types"
:
"^7.8.3"
}
},
"@babel/helper-module-imports"
:
{
"version"
:
"7.8.3"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz"
,
"integrity"
:
"sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg=="
,
"requires"
:
{
"@babel/types"
:
"^7.8.3"
}
},
"@babel/helper-split-export-declaration"
:
{
"version"
:
"7.8.3"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz"
,
"integrity"
:
"sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA=="
,
"requires"
:
{
"@babel/types"
:
"^7.8.3"
}
},
"@babel/helper-validator-identifier"
:
{
"version"
:
"7.9.5"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz"
,
"integrity"
:
"sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g=="
},
"@babel/highlight"
:
{
"version"
:
"7.9.0"
,
"resolved"
:
"https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz"
,
"integrity"
:
"sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ=="
,
"requires"
:
{
"@babel/helper-validator-identifier"
:
"^7.9.0"
,
"chalk"
:
"^2.0.0"
,
"js-tokens"
:
"^4.0.0"
}
},
"@babel/parser"
:
{
"version"
:
"7.9.6"
,
"resolved"
:
"https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz"
,
"integrity"
:
"sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q=="
},
"@babel/template"
:
{
"version"
:
"7.8.6"
,
"resolved"
:
"https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz"
,
"integrity"
:
"sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg=="
,
"requires"
:
{
"@babel/code-frame"
:
"^7.8.3"
,
"@babel/parser"
:
"^7.8.6"
,
"@babel/types"
:
"^7.8.6"
}
},
"@babel/traverse"
:
{
"version"
:
"7.9.6"
,
"resolved"
:
"https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz"
,
"integrity"
:
"sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg=="
,
"requires"
:
{
"@babel/code-frame"
:
"^7.8.3"
,
"@babel/generator"
:
"^7.9.6"
,
"@babel/helper-function-name"
:
"^7.9.5"
,
"@babel/helper-split-export-declaration"
:
"^7.8.3"
,
"@babel/parser"
:
"^7.9.6"
,
"@babel/types"
:
"^7.9.6"
,
"debug"
:
"^4.1.0"
,
"globals"
:
"^11.1.0"
,
"lodash"
:
"^4.17.13"
}
},
"@babel/types"
:
{
"version"
:
"7.9.6"
,
"resolved"
:
"https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz"
,
"integrity"
:
"sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA=="
,
"requires"
:
{
"@babel/helper-validator-identifier"
:
"^7.9.5"
,
"lodash"
:
"^4.17.13"
,
"to-fast-properties"
:
"^2.0.0"
}
},
"@emotion/is-prop-valid"
:
{
"version"
:
"0.8.8"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz"
,
"integrity"
:
"sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA=="
,
"requires"
:
{
"@emotion/memoize"
:
"0.7.4"
}
},
"@emotion/memoize"
:
{
"version"
:
"0.7.4"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz"
,
"integrity"
:
"sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw=="
},
"@emotion/stylis"
:
{
"version"
:
"0.8.5"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz"
,
"integrity"
:
"sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
},
"@emotion/unitless"
:
{
"version"
:
"0.7.5"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz"
,
"integrity"
:
"sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
},
"ansi-styles"
:
{
"version"
:
"3.2.1"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
,
"integrity"
:
"sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
,
"requires"
:
{
"color-convert"
:
"^1.9.0"
}
},
"babel-plugin-styled-components"
:
{
"version"
:
"1.10.7"
,
"resolved"
:
"https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz"
,
"integrity"
:
"sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg=="
,
"requires"
:
{
"@babel/helper-annotate-as-pure"
:
"^7.0.0"
,
"@babel/helper-module-imports"
:
"^7.0.0"
,
"babel-plugin-syntax-jsx"
:
"^6.18.0"
,
"lodash"
:
"^4.17.11"
}
},
"babel-plugin-syntax-jsx"
:
{
"version"
:
"6.18.0"
,
"resolved"
:
"https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz"
,
"integrity"
:
"sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
},
"camelize"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz"
,
"integrity"
:
"sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
},
"chalk"
:
{
"version"
:
"2.4.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
,
"integrity"
:
"sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
,
"requires"
:
{
"ansi-styles"
:
"^3.2.1"
,
"escape-string-regexp"
:
"^1.0.5"
,
"supports-color"
:
"^5.3.0"
}
},
"color-convert"
:
{
"version"
:
"1.9.3"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
,
"integrity"
:
"sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
,
"requires"
:
{
"color-name"
:
"1.1.3"
}
},
"color-name"
:
{
"version"
:
"1.1.3"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
,
"integrity"
:
"sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"css-color-keywords"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz"
,
"integrity"
:
"sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU="
},
"css-to-react-native"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz"
,
"integrity"
:
"sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ=="
,
"requires"
:
{
"camelize"
:
"^1.0.0"
,
"css-color-keywords"
:
"^1.0.0"
,
"postcss-value-parser"
:
"^4.0.2"
}
},
"debug"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.1.1.tgz"
,
"integrity"
:
"sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw=="
,
"requires"
:
{
"ms"
:
"^2.1.1"
}
},
"escape-string-regexp"
:
{
"version"
:
"1.0.5"
,
"resolved"
:
"https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
,
"integrity"
:
"sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"globals"
:
{
"version"
:
"11.12.0"
,
"resolved"
:
"https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
,
"integrity"
:
"sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
},
"has-flag"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
,
"integrity"
:
"sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"hoist-non-react-statics"
:
{
"version"
:
"3.3.2"
,
"resolved"
:
"https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
,
"integrity"
:
"sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="
,
"requires"
:
{
"react-is"
:
"^16.7.0"
}
},
"js-tokens"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
,
"integrity"
:
"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"jsesc"
:
{
"version"
:
"2.5.2"
,
"resolved"
:
"https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
,
"integrity"
:
"sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
},
"lodash"
:
{
"version"
:
"4.17.15"
,
"resolved"
:
"https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz"
,
"integrity"
:
"sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"ms"
:
{
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
,
"integrity"
:
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"postcss-value-parser"
:
{
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz"
,
"integrity"
:
"sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
},
"react-is"
:
{
"version"
:
"16.13.1"
,
"resolved"
:
"https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
,
"integrity"
:
"sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"react-moment"
:
{
"version"
:
"0.9.7"
,
"resolved"
:
"https://registry.npmjs.org/react-moment/-/react-moment-0.9.7.tgz"
,
"integrity"
:
"sha512-ifzUrUGF6KRsUN2pRG5k56kO0mJBr8kRkWb0wNvtFIsBIxOuPxhUpL1YlXwpbQCbHq23hUu6A0VEk64HsFxk9g=="
,
"dev"
:
true
},
"shallowequal"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz"
,
"integrity"
:
"sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
},
"source-map"
:
{
"version"
:
"0.5.7"
,
"resolved"
:
"https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
,
"integrity"
:
"sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
},
"styled-components"
:
{
"version"
:
"5.1.0"
,
"resolved"
:
"https://registry.npmjs.org/styled-components/-/styled-components-5.1.0.tgz"
,
"integrity"
:
"sha512-0Qs2wEkFBXHFlysz6CV831VG6HedcrFUwChjnWylNivsx14MtmqQsohi21rMHZxzuTba063dEyoe/SR6VGJI7Q=="
,
"requires"
:
{
"@babel/helper-module-imports"
:
"^7.0.0"
,
"@babel/traverse"
:
"^7.4.5"
,
"@emotion/is-prop-valid"
:
"^0.8.8"
,
"@emotion/stylis"
:
"^0.8.4"
,
"@emotion/unitless"
:
"^0.7.4"
,
"babel-plugin-styled-components"
:
">= 1"
,
"css-to-react-native"
:
"^3.0.0"
,
"hoist-non-react-statics"
:
"^3.0.0"
,
"shallowequal"
:
"^1.1.0"
,
"supports-color"
:
"^5.5.0"
}
},
"supports-color"
:
{
"version"
:
"5.5.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
,
"integrity"
:
"sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
,
"requires"
:
{
"has-flag"
:
"^3.0.0"
}
},
"to-fast-properties"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
,
"integrity"
:
"sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
}
}
}
Please
register
or
login
to post a comment