mirror of
https://github.com/cloudreve/frontend.git
synced 2025-12-25 19:52:48 +00:00
分享单页
This commit is contained in:
parent
5062a0860c
commit
016c17f3a8
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -102,12 +102,12 @@ const TypeIcon = props => {
|
|||
<>
|
||||
{props.isUpload && (
|
||||
<Avatar
|
||||
className={props.className}
|
||||
style={{
|
||||
backgroundColor: color
|
||||
}}
|
||||
>
|
||||
<IconComponent
|
||||
className={props.className}
|
||||
style={{
|
||||
color: theme.palette.background.paper,
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -1,144 +0,0 @@
|
|||
import React, { Component } from 'react'
|
||||
import { connect } from 'react-redux'
|
||||
import { toggleSnackbar,}from "../actions/index"
|
||||
import axios from 'axios'
|
||||
|
||||
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:"",
|
||||
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 (
|
||||
<div className={classes.layout}>
|
||||
<Card className={classes.card}>
|
||||
<CardHeader
|
||||
avatar={
|
||||
<Avatar aria-label="Recipe" src={"/Member/Avatar/1/"+window.shareInfo.ownerUid}>
|
||||
</Avatar>
|
||||
}
|
||||
title={window.shareInfo.ownerNick+" 的加密分享"}
|
||||
subheader={window.shareInfo.shareDate}
|
||||
/>
|
||||
<Divider/>
|
||||
<CardContent>
|
||||
<form onSubmit={this.submit}>
|
||||
<TextField
|
||||
id="pwd"
|
||||
label="输入分享密码"
|
||||
value={this.state.pwd}
|
||||
onChange={this.handleChange('pwd')}
|
||||
margin="normal"
|
||||
type="password"
|
||||
autoFocus
|
||||
fullWidth
|
||||
color="secondary"
|
||||
/>
|
||||
</form>
|
||||
</CardContent>
|
||||
<CardActions className={classes.actions} disableActionSpacing>
|
||||
<Button onClick={this.submit} color="secondary" className={classes.continue} variant="contained" disabled={this.state.pwd==="" || this.state.loading}>继续</Button>
|
||||
</CardActions>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const LockedFile = connect(
|
||||
mapStateToProps,
|
||||
mapDispatchToProps
|
||||
)( withStyles(styles)(LockedFileCompoment))
|
||||
|
||||
export default LockedFile
|
||||
|
|
@ -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 (
|
||||
<div className={classes.layout}>
|
||||
<Card className={classes.card}>
|
||||
<CardHeader
|
||||
avatar={
|
||||
<Avatar
|
||||
aria-label="Recipe"
|
||||
src={
|
||||
"/Member/Avatar/1/" +
|
||||
this.props.share.creator.key
|
||||
}
|
||||
/>
|
||||
}
|
||||
title={this.props.share.creator.nick + " 的加密分享"}
|
||||
subheader={this.props.share.create_date}
|
||||
/>
|
||||
<Divider />
|
||||
<CardContent>
|
||||
<form onSubmit={this.submit}>
|
||||
<TextField
|
||||
id="pwd"
|
||||
label="输入分享密码"
|
||||
value={this.state.pwd}
|
||||
onChange={this.handleChange("pwd")}
|
||||
margin="normal"
|
||||
type="password"
|
||||
autoFocus
|
||||
fullWidth
|
||||
color="secondary"
|
||||
/>
|
||||
</form>
|
||||
</CardContent>
|
||||
<CardActions
|
||||
className={classes.actions}
|
||||
disableActionSpacing
|
||||
>
|
||||
<Button
|
||||
onClick={this.submit}
|
||||
color="secondary"
|
||||
className={classes.continue}
|
||||
variant="contained"
|
||||
disabled={
|
||||
this.state.pwd === "" || this.props.loading
|
||||
}
|
||||
>
|
||||
继续
|
||||
</Button>
|
||||
</CardActions>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const LockedFile = connect(
|
||||
mapStateToProps,
|
||||
mapDispatchToProps
|
||||
)(withStyles(styles)(LockedFileCompoment));
|
||||
|
||||
export default LockedFile;
|
||||
|
|
@ -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 (
|
||||
|
||||
<Suspense fallback={<PageLoading/>}>
|
||||
{share === undefined &&
|
||||
<PageLoading/>
|
||||
}
|
||||
{share === null &&
|
||||
<ShareNotFound/>
|
||||
}
|
||||
<Suspense fallback={<PageLoading />}>
|
||||
{share === undefined && <PageLoading />}
|
||||
{share === null && <ShareNotFound />}
|
||||
{share && share.locked && (
|
||||
<LockedFile
|
||||
loading={loading}
|
||||
setPassowrd={setPassword}
|
||||
share={share}
|
||||
/>
|
||||
)}
|
||||
{share&&!share.locked&&!share.is_dir&&<SharedFile share={share}/>}
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
<div className={classes.layout}>
|
||||
<Modals/>
|
||||
<div className={classes.fileCotainer}>
|
||||
<FileIcon file={file} share={true}/></div>
|
||||
<div className={classes.buttonCotainer}>
|
||||
<Button variant="contained" color="secondary" className={classes.button} onClick={this.download}>
|
||||
<DownloadIcon className={classes.icon}/> 下载 ({sizeToString(window.shareInfo.fileSize)})
|
||||
</Button>
|
||||
<Button variant="outlined" className={classes.button} onClick={this.preview}>
|
||||
<PreviewIcon className={classes.icon}/> 预览
|
||||
</Button>
|
||||
<Button variant="outlined" className={classes.button} onClick={this.handleOpen}>
|
||||
<InfoIcon className={classes.icon}/> 信息
|
||||
</Button>
|
||||
<Popper id={id} open={this.state.open} anchorEl={this.state.anchorEl} transition>
|
||||
{({ TransitionProps }) => (
|
||||
<Fade {...TransitionProps} timeout={350}>
|
||||
<Paper className={classes.paper}>
|
||||
<Typography >此分享被浏览{window.shareInfo.ViewNum}次,被下载{window.shareInfo.downloadNum}次</Typography>
|
||||
</Paper>
|
||||
</Fade>
|
||||
)}
|
||||
</Popper>
|
||||
<div className={classes.layout}>
|
||||
<Modals />
|
||||
<div className={classes.box}>
|
||||
<div className={classes.boxHeader}>
|
||||
<Avatar
|
||||
className={classes.avatar}
|
||||
alt={this.props.share.creator.nick}
|
||||
src={
|
||||
"/Member/Avatar/1/" +
|
||||
this.props.share.creator.key
|
||||
}
|
||||
/>
|
||||
<Typography variant="h6" className={classes.shareDes}>
|
||||
{this.props.share.creator.nick} 向您分享了 1 个文件
|
||||
</Typography>
|
||||
<Typography className={classes.shareInfo}>
|
||||
{this.props.share.views} 次浏览 • {this.props.share.downloads} 次下载
|
||||
•{" "}
|
||||
{this.getSecondDes()}
|
||||
</Typography>
|
||||
</div>
|
||||
<Divider />
|
||||
<div className={classes.boxContent}>
|
||||
<TypeIcon
|
||||
className={classes.icon}
|
||||
isUpload
|
||||
fileName={this.props.share.source.name}
|
||||
/>
|
||||
<div className={classes.fileName}>
|
||||
<Typography>
|
||||
{this.props.share.source.name}
|
||||
</Typography>
|
||||
<Typography className={classes.fileSize}>
|
||||
{sizeToString(this.props.share.source.size)}
|
||||
</Typography>
|
||||
</div>
|
||||
</div>
|
||||
<Divider/>
|
||||
<div className={classes.boxFooter}>
|
||||
<div className={classes.actionLeft}>
|
||||
<Button color="secondary">保存到我的文件</Button>
|
||||
</div>
|
||||
<div className={classes.actions}>
|
||||
<Button
|
||||
variant="outlined"
|
||||
color="secondary"
|
||||
onClick={this.download}
|
||||
>
|
||||
预览
|
||||
</Button>
|
||||
<Button
|
||||
variant="contained"
|
||||
color="secondary"
|
||||
className={classes.downloadButton}
|
||||
onClick={this.download}
|
||||
>
|
||||
下载
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/*<div className={classes.fileCotainer}>*/}
|
||||
{/* <FileIcon file={file} share={true} />*/}
|
||||
{/*</div>*/}
|
||||
{/*<div className={classes.buttonCotainer}>*/}
|
||||
{/* <Button*/}
|
||||
{/* variant="outlined"*/}
|
||||
{/* className={classes.button}*/}
|
||||
{/* onClick={this.preview}*/}
|
||||
{/* >*/}
|
||||
{/* <PreviewIcon className={classes.icon} /> 预览*/}
|
||||
{/* </Button>*/}
|
||||
{/* <Button*/}
|
||||
{/* variant="outlined"*/}
|
||||
{/* className={classes.button}*/}
|
||||
{/* onClick={this.handleOpen}*/}
|
||||
{/* >*/}
|
||||
{/* <InfoIcon className={classes.icon} /> 信息*/}
|
||||
{/* </Button>*/}
|
||||
{/* <Popper*/}
|
||||
{/* id={id}*/}
|
||||
{/* open={this.state.open}*/}
|
||||
{/* anchorEl={this.state.anchorEl}*/}
|
||||
{/* transition*/}
|
||||
{/* >*/}
|
||||
{/* {({ TransitionProps }) => (*/}
|
||||
{/* <Fade {...TransitionProps} timeout={350}>*/}
|
||||
{/* <Paper className={classes.paper}>*/}
|
||||
{/* <Typography>*/}
|
||||
{/* 此分享被浏览{this.props.share.views}*/}
|
||||
{/* 次,被下载{this.props.share.downloads}次*/}
|
||||
{/* </Typography>*/}
|
||||
{/* </Paper>*/}
|
||||
{/* </Fade>*/}
|
||||
{/* )}*/}
|
||||
{/* </Popper>*/}
|
||||
{/*</div>*/}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const SharedFile = connect(
|
||||
mapStateToProps,
|
||||
mapDispatchToProps
|
||||
)( withStyles(styles)(SharedFileCompoment))
|
||||
)(withStyles(styles)(SharedFileCompoment));
|
||||
|
||||
export default SharedFile
|
||||
export default SharedFile;
|
||||
|
|
|
|||
|
|
@ -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 => ({
|
||||
|
|
|
|||
168
yarn.lock
168
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==
|
||||
|
|
|
|||
Loading…
Reference in New Issue