diff --git a/package.json b/package.json index f0d9b48..7b87056 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { - "@material-ui/core": "^4.7.0", + "@material-ui/core": "^4.9.0", "@material-ui/icons": "^4.5.1", "@material-ui/lab": "^4.0.0-alpha.33", "axios": "^0.19.0", diff --git a/src/component/FileManager/TypeIcon.js b/src/component/FileManager/TypeIcon.js index beb4fbc..e4cb23e 100644 --- a/src/component/FileManager/TypeIcon.js +++ b/src/component/FileManager/TypeIcon.js @@ -102,12 +102,12 @@ const TypeIcon = props => { <> {props.isUpload && ( ({ - card: { - maxWidth: 400, - margin: "0 auto", - }, - actions: { - display: 'flex', - }, - layout: { - width: 'auto', - marginTop:'110px', - marginLeft: theme.spacing(3), - marginRight: theme.spacing(3), - [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: { - width: 1100, - marginLeft: 'auto', - marginRight: 'auto', - }, - }, - continue:{ - marginLeft:"auto", - marginRight: "10px", - marginRottom: "10px", - } -}) -const mapStateToProps = state => { - return { - } -} - -const mapDispatchToProps = dispatch => { - return { - toggleSnackbar:(vertical,horizontal,msg,color)=>{ - dispatch(toggleSnackbar(vertical,horizontal,msg,color)) - }, - } -} - -class LockedFileCompoment extends Component { - - state = { - pwd:"", - loading:false, - }; - - handleChange = name => event => { - this.setState({ [name]: event.target.value }); - }; - - submit = e=>{ - e.preventDefault(); - if(this.state.pwd===""){ - return; - } - this.setState({ - loading:true, - }); - axios.post("/Share/chekPwd",{ - key: window.shareInfo.shareId, - password: this.state.pwd - }) - .then( (response)=> { - if(response.data.error!==0){ - this.setState({ - loading:false, - }); - this.props.toggleSnackbar("top","right",response.data.msg ,"warning"); - }else{ - window.location.reload(); - } - - }) - .catch((error) =>{ - this.setState({ - loading:false, - }); - this.props.toggleSnackbar("top","right",error.message ,"error"); - }); - } - - render() { - const { classes } = this.props; - - - return ( -
- - - - } - title={window.shareInfo.ownerNick+" 的加密分享"} - subheader={window.shareInfo.shareDate} - /> - - -
- - -
- - - -
-
- ); - } - -} - -const LockedFile = connect( - mapStateToProps, - mapDispatchToProps -)( withStyles(styles)(LockedFileCompoment)) - -export default LockedFile diff --git a/src/component/Share/LockedFile.js b/src/component/Share/LockedFile.js new file mode 100644 index 0000000..64a7558 --- /dev/null +++ b/src/component/Share/LockedFile.js @@ -0,0 +1,134 @@ +import React, { Component } from "react"; +import { connect } from "react-redux"; +import { toggleSnackbar } from "../../actions"; +import API from "../../middleware/Api"; + +import { + withStyles, + Button, + Card, + Divider, + CardHeader, + CardContent, + CardActions, + TextField, + Avatar +} from "@material-ui/core"; + +const styles = theme => ({ + card: { + maxWidth: 400, + margin: "0 auto" + }, + actions: { + display: "flex" + }, + layout: { + width: "auto", + marginTop: "110px", + marginLeft: theme.spacing(3), + marginRight: theme.spacing(3), + [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: { + width: 1100, + marginLeft: "auto", + marginRight: "auto" + } + }, + continue: { + marginLeft: "auto", + marginRight: "10px", + marginRottom: "10px" + } +}); +const mapStateToProps = state => { + return {}; +}; + +const mapDispatchToProps = dispatch => { + return { + toggleSnackbar: (vertical, horizontal, msg, color) => { + dispatch(toggleSnackbar(vertical, horizontal, msg, color)); + } + }; +}; + +class LockedFileCompoment extends Component { + state = { + pwd: "" + }; + + handleChange = name => event => { + this.setState({ [name]: event.target.value }); + }; + + submit = e => { + e.preventDefault(); + if (this.state.pwd === "") { + return; + } + this.props.setPassowrd(this.state.pwd); + }; + + render() { + const { classes } = this.props; + + return ( +
+ + + } + title={this.props.share.creator.nick + " 的加密分享"} + subheader={this.props.share.create_date} + /> + + +
+ + +
+ + + +
+
+ ); + } +} + +const LockedFile = connect( + mapStateToProps, + mapDispatchToProps +)(withStyles(styles)(LockedFileCompoment)); + +export default LockedFile; diff --git a/src/component/Share/SharePreload.js b/src/component/Share/SharePreload.js index 8a4e943..0a2a620 100644 --- a/src/component/Share/SharePreload.js +++ b/src/component/Share/SharePreload.js @@ -1,20 +1,25 @@ -import React, {Suspense, useCallback, useEffect, useState} from "react"; -import {makeStyles} from "@material-ui/core/styles"; +import React, { Suspense, useCallback, useEffect, useState } from "react"; +import { makeStyles } from "@material-ui/core/styles"; import PageLoading from "../Placeholder/PageLoading"; -import {useParams} from "react-router"; +import { useParams } from "react-router"; import API from "../../middleware/Api"; -import {changeSubTitle, toggleSnackbar} from "../../actions"; -import {useDispatch} from "react-redux"; +import { changeSubTitle, toggleSnackbar } from "../../actions"; +import { useDispatch } from "react-redux"; import ShareNotFound from "./NotFound"; -const useStyles = makeStyles({ -}); +import Grow from "@material-ui/core/Grow"; +const useStyles = makeStyles({}); -export default function SharePreload(){ +const LockedFile = React.lazy(() => import("./LockedFile")); +const SharedFile = React.lazy(() => import("./SharedFile")); + +export default function SharePreload() { const classes = useStyles(); const dispatch = useDispatch(); let { id } = useParams(); - const [share,setShare] = useState(undefined); + const [share, setShare] = useState(undefined); + const [loading, setLoading] = useState(false); + const [password, setPassword] = useState(""); const SetSubTitle = useCallback(title => dispatch(changeSubTitle(title)), [ dispatch @@ -27,34 +32,53 @@ export default function SharePreload(){ ); useEffect(() => { - API.get("/share/" + id) - .then(response => { + if (share) { + if (share.locked) { + SetSubTitle(share.creator.nick + "的加密分享"); + if (password !== "") { + ToggleSnackbar("top", "right", "密码不正确", "warning"); + } + } else { + SetSubTitle(share.source.name); + } + } else { + SetSubTitle(); + } + }, [share]); + useEffect(() => { + setLoading(true); + let withPassword = ""; + if (password !== "") { + withPassword = "?password=" + password; + } + API.get("/share/" + id + withPassword) + .then(response => { + setShare(response.data); + setLoading(false); }) .catch(error => { - if (error.code ===404){ + setLoading(false); + if (error.code === 404) { setShare(null); - }else{ - ToggleSnackbar( - "top", - "right", - error.message, - "error" - ) + } else { + ToggleSnackbar("top", "right", error.message, "error"); } - }); - }, [id]); + }, [id, password]); return ( - - }> - {share === undefined && - - } - {share === null && - - } + }> + {share === undefined && } + {share === null && } + {share && share.locked && ( + + )} + {share&&!share.locked&&!share.is_dir&&} ); -} \ No newline at end of file +} diff --git a/src/component/Share/SharedFile.js b/src/component/Share/SharedFile.js index 1ef8353..9f037f4 100644 --- a/src/component/Share/SharedFile.js +++ b/src/component/Share/SharedFile.js @@ -1,175 +1,359 @@ -import React, { Component } from 'react' -import { connect } from 'react-redux' -import FileIcon from "../FileManager/FileIcon" -import PreviewIcon from "@material-ui/icons/RemoveRedEye" -import InfoIcon from "@material-ui/icons/Info" -import DownloadIcon from "@material-ui/icons/CloudDownload" -import {allowSharePreview,sizeToString} from "../../untils" -import { toggleSnackbar,}from "../../actions" -import { isPreviewable,}from "../../config" -import Modals from "../FileManager/Modals" -import axios from 'axios' -import { withStyles, Button, Popper, Typography, Fade, Paper } from '@material-ui/core'; +import React, { Component } from "react"; +import { connect } from "react-redux"; +import FileIcon from "../FileManager/FileIcon"; +import PreviewIcon from "@material-ui/icons/RemoveRedEye"; +import InfoIcon from "@material-ui/icons/Info"; +import DownloadIcon from "@material-ui/icons/CloudDownload"; +import { allowSharePreview, sizeToString } from "../../untils"; +import { toggleSnackbar } from "../../actions"; +import { isPreviewable } from "../../config"; +import Modals from "../FileManager/Modals"; +import axios from "axios"; +import { + withStyles, + Button, + Popper, + Typography, + Fade, + Paper, + Avatar +} from "@material-ui/core"; +import Divider from "@material-ui/core/Divider"; +import TypeIcon from "../FileManager/TypeIcon"; const styles = theme => ({ layout: { - width: 'auto', - marginTop:'110px', + width: "auto", + marginTop: "90px", marginLeft: theme.spacing(3), marginRight: theme.spacing(3), [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: { - width: 1100, - marginLeft: 'auto', - marginRight: 'auto', + width: 1100, + marginTop: "90px", + marginLeft: "auto", + marginRight: "auto" }, - }, - player:{ - borderRadius: "4px", - }, - fileCotainer:{ - width:"200px", - margin:"0 auto", - }, - buttonCotainer:{ - width:"400px", - margin:"0 auto", + [theme.breakpoints.down("sm")]: { + marginTop: 0, + marginLeft: 0, + marginRight: 0, + }, + justifyContent: "center", + display: "flex" + }, + player: { + borderRadius: "4px" + }, + fileCotainer: { + width: "200px", + margin: "0 auto" + }, + buttonCotainer: { + width: "400px", + margin: "0 auto", textAlign: "center", - marginTop: "20px", - }, - button: { - margin: theme.spacing(1), - }, - paper: { - padding: theme.spacing(2), - }, - icon:{ - marginRight: theme.spacing(1), - } -}) + marginTop: "20px" + }, + paper: { + padding: theme.spacing(2) + }, + icon: { + borderRadius: "10%", + marginTop:2, + }, + + box: { + width: "100%", + maxWidth: 440, + backgroundColor: theme.palette.background.paper, + borderRadius: 12, + boxShadow: "0 8px 16px rgba(29,39,55,.25)", + [theme.breakpoints.down("sm")]: { + height: "calc(100vh - 56px)", + borderRadius: 0, + maxWidth: 1000, + }, + display: "flex", + flexDirection: "column", + }, + boxHeader: { + textAlign: "center", + padding: 24 + }, + avatar: { + backgroundColor: theme.palette.secondary.main, + margin: "0 auto", + width: 50, + height: 50 + }, + shareDes: { + marginTop: 12 + }, + shareInfo: { + color: theme.palette.text.disabled, + fontSize: 14 + }, + boxContent: { + padding: 24, + display: "flex", + flex: "1", + }, + fileName: { + marginLeft: 20, + }, + fileSize:{ + color: theme.palette.text.disabled, + fontSize: 14 + }, + boxFooter:{ + display:"flex", + padding: "20px 16px", + justifyContent: "space-between", + }, + downloadButton:{ + marginLeft:8, + }, +}); const mapStateToProps = state => { - return { - } -} + return {}; +}; const mapDispatchToProps = dispatch => { return { - toggleSnackbar:(vertical,horizontal,msg,color)=>{ - dispatch(toggleSnackbar(vertical,horizontal,msg,color)) - }, - } -} + toggleSnackbar: (vertical, horizontal, msg, color) => { + dispatch(toggleSnackbar(vertical, horizontal, msg, color)); + } + }; +}; const allowDownload = allowSharePreview(); class SharedFileCompoment extends Component { - state = { anchorEl: null, - open: false, - }; + open: false + }; - preview = ()=>{ - if(!allowDownload){ - this.props.toggleSnackbar("top","right","未登录用户无法下载","warning"); + preview = () => { + if (!allowDownload) { + this.props.toggleSnackbar( + "top", + "right", + "未登录用户无法下载", + "warning" + ); return; } - switch(isPreviewable(window.shareInfo.fileName)){ - case 'img': + switch (isPreviewable(this.props.share.source.name)) { + case "img": window.open(window.apiURL.preview); return; - case 'msDoc': - window.open(window.apiURL.docPreiview); + case "msDoc": + window.open(window.apiURL.docPreiview); return; - case 'audio': + case "audio": //this.props.openMusicDialog(); return; - case 'open': - window.open(window.apiURL.preview); + case "open": + window.open(window.apiURL.preview); return; - case 'video': - window.location.href=("/Viewer/Video?single=true&shareKey="+window.shareInfo.shareId+"&path=/"+window.shareInfo.fileName); - return ; - case 'edit': - window.location.href=("/Viewer/Markdown?single=true&shareKey="+window.shareInfo.shareId+"&path=/"+window.shareInfo.fileName); + case "video": + window.location.href = + "/Viewer/Video?single=true&shareKey=" + + window.shareInfo.shareId + + "&path=/" + + window.shareInfo.fileName; + return; + case "edit": + window.location.href = + "/Viewer/Markdown?single=true&shareKey=" + + window.shareInfo.shareId + + "&path=/" + + window.shareInfo.fileName; return; default: - this.props.toggleSnackbar("top","right","此文件无法预览","warning"); + this.props.toggleSnackbar( + "top", + "right", + "此文件无法预览", + "warning" + ); return; } - } + }; - download = ()=>{ - if(!allowDownload){ - this.props.toggleSnackbar("top","right","未登录用户无法下载","warning"); + download = () => { + if (!allowDownload) { + this.props.toggleSnackbar( + "top", + "right", + "未登录用户无法下载", + "warning" + ); return; } - axios.post("/Share/getDownloadUrl",{ - key: window.shareInfo.shareId - }) - .then( (response)=> { - if(response.data.error!==0){ - this.props.toggleSnackbar("top","right",response.data.msg ,"warning"); - }else{ - window.location.href=response.data.result; - } - - }) - .catch((error) =>{ - this.props.toggleSnackbar("top","right",error.message ,"error"); - }); - } + axios + .post("/Share/getDownloadUrl", { + key: window.shareInfo.shareId + }) + .then(response => { + if (response.data.error !== 0) { + this.props.toggleSnackbar( + "top", + "right", + response.data.msg, + "warning" + ); + } else { + window.location.href = response.data.result; + } + }) + .catch(error => { + this.props.toggleSnackbar( + "top", + "right", + error.message, + "error" + ); + }); + }; handleOpen = event => { const { currentTarget } = event; this.setState(state => ({ - anchorEl: currentTarget, - open: !state.open, + anchorEl: currentTarget, + open: !state.open })); }; + getSecondDes = () => { + if (this.props.share.expire > 0) { + if (this.props.share.expire >= 24 * 3600) { + return ( + Math.round(this.props.share.expire / (24 * 3600)) + + " 天后到期" + ); + } + return Math.round(this.props.share.expire / 3600) + " 小时后到期"; + } + return this.props.share.create_date; + }; + render() { const { classes } = this.props; - const file={ - name:window.shareInfo.fileName, - path:"/", - type:"file", - pic:"", + const file = { + name: this.props.share.source.name, + path: "/", + type: "file", + pic: "" }; - const id = this.state.open ? 'simple-popper' : null; + const id = this.state.open ? "simple-popper" : null; return ( -
- -
-
-
- - - - - {({ TransitionProps }) => ( - - - 此分享被浏览{window.shareInfo.ViewNum}次,被下载{window.shareInfo.downloadNum}次 - - - )} - +
+ +
+
+ + + {this.props.share.creator.nick} 向您分享了 1 个文件 + + + {this.props.share.views} 次浏览 • {this.props.share.downloads} 次下载 + •{" "} + {this.getSecondDes()} + +
+ +
+ +
+ + {this.props.share.source.name} + + + {sizeToString(this.props.share.source.size)} + +
+
+ +
+
+ +
+
+ + +
+
-
+ {/*
*/} + {/* */} + {/*
*/} + {/*
*/} + {/* */} + {/* 预览*/} + {/* */} + {/* */} + {/* 信息*/} + {/* */} + {/* */} + {/* {({ TransitionProps }) => (*/} + {/* */} + {/* */} + {/* */} + {/* 此分享被浏览{this.props.share.views}*/} + {/* 次,被下载{this.props.share.downloads}次*/} + {/* */} + {/* */} + {/* */} + {/* )}*/} + {/* */} + {/*
*/} +
); } - } const SharedFile = connect( mapStateToProps, mapDispatchToProps -)( withStyles(styles)(SharedFileCompoment)) +)(withStyles(styles)(SharedFileCompoment)); -export default SharedFile +export default SharedFile; diff --git a/src/pages/lock.app.js b/src/pages/lock.app.js index 15e720a..6158f63 100644 --- a/src/pages/lock.app.js +++ b/src/pages/lock.app.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import Navbar from "../component/Navbar/Navbar.js" import AlertBar from "../component/Snackbar" import { createMuiTheme } from '@material-ui/core/styles'; -import LockedFile from '../component/LockedFile' +import LockedFile from '../component/Share/LockedFile' import { CssBaseline, withStyles, MuiThemeProvider } from '@material-ui/core'; const theme = createMuiTheme(window.colorTheme); const styles = theme => ({ diff --git a/yarn.lock b/yarn.lock index 7a9a948..a5abdcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -911,10 +911,10 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== -"@emotion/hash@^0.7.1": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.3.tgz#a166882c81c0c6040975dd30df24fae8549bd96f" - integrity sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw== +"@emotion/hash@^0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.4.tgz#f14932887422c9056b15a8d222a9074a7dfa2831" + integrity sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A== "@hapi/address@2.x.x": version "2.1.2" @@ -1096,16 +1096,16 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@material-ui/core@^4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.7.0.tgz#84c02a6d1c99c7900e184538c5f9d87e30cf4c23" - integrity sha512-mwLehUo0Q9ZxjuWo7J1uy1/Grh3nRxlOAaWJ3EtKeJP2HwqlSy8bWrcvRQYlapaYIPXa5jN8zWbTwi8Pk30VQg== +"@material-ui/core@^4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.9.0.tgz#96ca3281ee06216d44fd4d0e306dbe0429eb2ebe" + integrity sha512-zrrr8mPU5DDBYaVil4uJYauW41PjSn5otn7cqGsmWOY0t90fypr9nNgM7rRJaPz2AP6oRSDx1kBQt2igf5uelg== dependencies: "@babel/runtime" "^7.4.4" - "@material-ui/styles" "^4.6.0" - "@material-ui/system" "^4.5.2" - "@material-ui/types" "^4.1.1" - "@material-ui/utils" "^4.5.2" + "@material-ui/styles" "^4.9.0" + "@material-ui/system" "^4.7.1" + "@material-ui/types" "^5.0.0" + "@material-ui/utils" "^4.7.1" "@types/react-transition-group" "^4.2.0" clsx "^1.0.2" convert-css-length "^2.0.1" @@ -1113,6 +1113,7 @@ normalize-scroll-left "^0.2.0" popper.js "^1.14.1" prop-types "^15.7.2" + react-is "^16.8.0" react-transition-group "^4.3.0" "@material-ui/icons@^4.5.1": @@ -1132,43 +1133,41 @@ clsx "^1.0.4" prop-types "^15.7.2" -"@material-ui/styles@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.6.0.tgz#15679fab6dcbe0cc2416f01a22966f3ea26607c5" - integrity sha512-lqqh4UEMdIYcU1Yth4pQyMTah02uAkg3NOT3MirN9FUexdL8pNA6zCHigEgDSfwmvnXyxHhxTkphfy0DRfnt9w== +"@material-ui/styles@^4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.9.0.tgz#10c31859f6868cfa9d3adf6b6c3e32c9d676bc76" + integrity sha512-nJHum4RqYBPWsjL/9JET8Z02FZ9gSizlg/7LWVFpIthNzpK6OQ5OSRR4T4x9/p+wK3t1qNn3b1uI4XpnZaPxOA== dependencies: "@babel/runtime" "^7.4.4" - "@emotion/hash" "^0.7.1" - "@material-ui/types" "^4.1.1" - "@material-ui/utils" "^4.5.2" + "@emotion/hash" "^0.7.4" + "@material-ui/types" "^5.0.0" + "@material-ui/utils" "^4.7.1" clsx "^1.0.2" csstype "^2.5.2" hoist-non-react-statics "^3.2.1" - jss "^10.0.0" - jss-plugin-camel-case "^10.0.0" - jss-plugin-default-unit "^10.0.0" - jss-plugin-global "^10.0.0" - jss-plugin-nested "^10.0.0" - jss-plugin-props-sort "^10.0.0" - jss-plugin-rule-value-function "^10.0.0" - jss-plugin-vendor-prefixer "^10.0.0" + jss "^10.0.3" + jss-plugin-camel-case "^10.0.3" + jss-plugin-default-unit "^10.0.3" + jss-plugin-global "^10.0.3" + jss-plugin-nested "^10.0.3" + jss-plugin-props-sort "^10.0.3" + jss-plugin-rule-value-function "^10.0.3" + jss-plugin-vendor-prefixer "^10.0.3" prop-types "^15.7.2" -"@material-ui/system@^4.5.2": - version "4.5.2" - resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.5.2.tgz#7143bd8422a3f33f435c23f378136254004bbd60" - integrity sha512-h9RWvdM9XKlHHqwiuhyvWdobptQkHli+m2jJFs7i1AI/hmGsIc4reDmS7fInhETgt/Txx7uiAIznfRNIIVHmQw== +"@material-ui/system@^4.7.1": + version "4.7.1" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.7.1.tgz#d928dacc0eeae6bea569ff3ee079f409efb3517d" + integrity sha512-zH02p+FOimXLSKOW/OT2laYkl9bB3dD1AvnZqsHYoseUaq0aVrpbl2BGjQi+vJ5lg8w73uYlt9zOWzb3+1UdMQ== dependencies: "@babel/runtime" "^7.4.4" - "@material-ui/utils" "^4.5.2" + "@material-ui/utils" "^4.7.1" prop-types "^15.7.2" -"@material-ui/types@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-4.1.1.tgz#b65e002d926089970a3271213a3ad7a21b17f02b" - integrity sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ== - dependencies: - "@types/react" "*" +"@material-ui/types@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.0.0.tgz#26d6259dc6b39f4c2e1e9aceff7a11e031941741" + integrity sha512-UeH2BuKkwDndtMSS0qgx1kCzSMw+ydtj0xx/XbFtxNSTlXydKwzs5gVW5ZKsFlAkwoOOQ9TIsyoCC8hq18tOwg== "@material-ui/utils@^4.5.2": version "4.5.2" @@ -1179,6 +1178,15 @@ prop-types "^15.7.2" react-is "^16.8.6" +"@material-ui/utils@^4.7.1": + version "4.7.1" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.7.1.tgz#dc16c7f0d2cd02fbcdd5cfe601fd6863ae3cc652" + integrity sha512-+ux0SlLdlehvzCk2zdQ3KiS3/ylWvuo/JwAGhvb8dFVvwR21K28z0PU9OQW2PGogrMEdvX3miEI5tGxTwwWiwQ== + dependencies: + "@babel/runtime" "^7.4.4" + prop-types "^15.7.2" + react-is "^16.8.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -3086,7 +3094,7 @@ css-unit-converter@^1.1.1: resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= -css-vendor@^2.0.6: +css-vendor@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.7.tgz#4e6d53d953c187981576d6a542acc9fb57174bda" integrity sha512-VS9Rjt79+p7M0WkPqcAza4Yq1ZHrsHrwf7hPL/bjQB+c1lwmAI+1FXxYTYt818D/50fFVflw0XKleiBN5RITkg== @@ -6148,69 +6156,69 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jss-plugin-camel-case@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0.tgz#d601bae2e8e2041cc526add289dcd7062db0a248" - integrity sha512-yALDL00+pPR4FJh+k07A8FeDvfoPPuXU48HLy63enAubcVd3DnS+2rgqPXglHDGixIDVkCSXecl/l5GAMjzIbA== +jss-plugin-camel-case@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.3.tgz#ce25f3cdb7f2b80724558361351fe6b644ca9e4f" + integrity sha512-rild/oFKFkmRP7AoiX9D6bdDAUfmJv8c7sEBvFoi+JP31dn2W8nw4txMKGnV1LJKlFkYprdZt1X99Uvztl1hug== dependencies: "@babel/runtime" "^7.3.1" hyphenate-style-name "^1.0.3" - jss "10.0.0" + jss "^10.0.3" -jss-plugin-default-unit@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0.tgz#601caf5f576fc0c66986fbe8a9aa37307a3a3ea3" - integrity sha512-sURozIOdCtGg9ap18erQ+ijndAfEGtTaetxfU3H4qwC18Bi+fdvjlY/ahKbuu0ASs7R/+WKCP7UaRZOjUDMcdQ== +jss-plugin-default-unit@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.3.tgz#c4b97b7b18c6cf9e9809e05b8525045decc298d3" + integrity sha512-n+XfVLPF9Qh7IOTdQ8M4oRpjpg6egjr/r0NNytubbCafMgCILJYIVrMTGgOTydH+uvak8onQY3f/F9hasPUx6g== dependencies: "@babel/runtime" "^7.3.1" - jss "10.0.0" + jss "^10.0.3" -jss-plugin-global@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.0.0.tgz#0fed1b6461e0d57d6e394f877529009bc1cb3cb6" - integrity sha512-80ofWKSQUo62bxLtRoTNe0kFPtHgUbAJeOeR36WEGgWIBEsXLyXOnD5KNnjPqG4heuEkz9eSLccjYST50JnI7Q== +jss-plugin-global@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.0.3.tgz#82bc95aa7f2c7171adc3ea47ec7717aca76a2389" + integrity sha512-kNotkAciJIXpIGYnmueaIifBne9rdq31O8Xq1nF7KMfKlskNRANTcEX5rVnsGKl2yubTMYfjKBFCeDgcQn6+gA== dependencies: "@babel/runtime" "^7.3.1" - jss "10.0.0" + jss "^10.0.3" -jss-plugin-nested@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.0.0.tgz#d37ecc013c3b0d0e4acc2b48f6b62da6ae53948b" - integrity sha512-waxxwl/po1hN3azTyixKnr8ReEqUv5WK7WsO+5AWB0bFndML5Yqnt8ARZ90HEg8/P6WlqE/AB2413TkCRZE8bA== +jss-plugin-nested@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.0.3.tgz#1ff39383154a710008788dbc9f73e6dec77b2852" + integrity sha512-OMucRs9YLvWlZ3Ew+VhdgNVMwSS2zZy/2vy+s/etvopnPUzDHgCnJwdY2Wx/SlhLGERJeKKufyih2seH+ui0iw== dependencies: "@babel/runtime" "^7.3.1" - jss "10.0.0" + jss "^10.0.3" tiny-warning "^1.0.2" -jss-plugin-props-sort@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0.tgz#38a13407384c2a4a7c026659488350669b953b18" - integrity sha512-41mf22CImjwNdtOG3r+cdC8+RhwNm616sjHx5YlqTwtSJLyLFinbQC/a4PIFk8xqf1qpFH1kEAIw+yx9HaqZ3g== +jss-plugin-props-sort@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.3.tgz#8bc9f2a670fbd603f110486d28c526eb9efcbdc4" + integrity sha512-ufhvdCMnRcDa0tNHoZ12OcVNQQyE10yLMohxo/UIMarLV245rM6n9D19A12epjldRgyiS13SoSyLFCJEobprYg== dependencies: "@babel/runtime" "^7.3.1" - jss "10.0.0" + jss "^10.0.3" -jss-plugin-rule-value-function@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0.tgz#3ec1b781b7c86080136dbef6c36e91f20244b72e" - integrity sha512-Jw+BZ8JIw1f12V0SERqGlBT1JEPWax3vuZpMym54NAXpPb7R1LYHiCTIlaJUyqvIfEy3kiHMtgI+r2whGgRIxQ== +jss-plugin-rule-value-function@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.3.tgz#1103240cf686bde5baee16cd7b15b0daf79d1103" + integrity sha512-RWwIT2UBAIwf3f6DQtt5gyjxHMRJoeO9TQku+ueR8dBMakqSSe8vFwQNfjXEoe0W+Tez5HZCTkZKNMulv3Z+9A== dependencies: "@babel/runtime" "^7.3.1" - jss "10.0.0" + jss "^10.0.3" -jss-plugin-vendor-prefixer@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0.tgz#400280535b0f483a9c78105afe4eee61b70018eb" - integrity sha512-qslqvL0MUbWuzXJWdUxpj6mdNUX8jr4FFTo3aZnAT65nmzWL7g8oTr9ZxmTXXgdp7ANhS1QWE7036/Q2isFBpw== +jss-plugin-vendor-prefixer@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.3.tgz#cfdf2ac1263e190ee9a0d874cdcc6092df452012" + integrity sha512-zVs6e5z4tFRK/fJ5kuTLzXlTFQbLeFTVwk7lTZiYNufmZwKT0kSmnOJDUukcSe7JLGSRztjWhnHB/6voP174gw== dependencies: "@babel/runtime" "^7.3.1" - css-vendor "^2.0.6" - jss "10.0.0" + css-vendor "^2.0.7" + jss "^10.0.3" -jss@10.0.0, jss@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jss/-/jss-10.0.0.tgz#998d5026c02accae15708de83bd6ba57bac977d2" - integrity sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ== +jss@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.0.3.tgz#5c160f96aa8ce8b9f851ee0b33505dcd37f490a4" + integrity sha512-AcDvFdOk16If9qvC9KN3oFXsrkHWM9+TaPMpVB9orm3z+nq1Xw3ofHyflRe/mkSucRZnaQtlhZs1hdP3DR9uRw== dependencies: "@babel/runtime" "^7.3.1" csstype "^2.6.5" @@ -8640,7 +8648,7 @@ react-image-lightbox@^5.1.1: prop-types "^15.6.2" react-modal "^3.8.1" -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.6, react-is@^16.9.0: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.6, react-is@^16.9.0: version "16.12.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==