main.dba51531.chunk.js.map 52 KB

1
  1. {"version":3,"sources":["serviceWorker.js","imageList.js","FolderList.js","SearchAppMenu.js","index.js"],"names":["Boolean","window","location","hostname","match","imageList","props","shareImage","CIP","state","images","currentImage","vsrc","setState","open","currentImagePath","fetch","then","res","json","result","uuid","UUID","mode","Permission","console","log","error","ShareError","handleChange","event","target","value","path","method","headers","response","data","isLoaded","permission","onCurrentImageChange","bind","handleDialogClose","index","this","body","JSON","stringify","folder","classes","message","length","Alert","severity","enableLightbox","enableImageSelection","currentImageWillChange","customControls","Button","variant","size","style","margin","startIcon","onClick","Dialog","zIndex","maxWidth","fullWidth","onClose","DialogTitle","List","ListItem","ListItemAvatar","Avatar","DialogContent","TextField","label","defaultValue","InputProps","readOnly","origin","select","onChange","SelectProps","native","map","option","key","color","LinearProgress","React","Component","defaultProps","useStyles","makeStyles","theme","root","display","flexWrap","justifyContent","overflow","gridList","width","height","icon","TitlebarGridList","useState","setError","setIsLoaded","items","setItems","folderName","setFolderName","onChanageFolder","folderN","useEffect","className","GridList","cellHeight","cols","tile","GridListTile","img","VPath","src","alt","Foldername","GridListTileBar","title","actionIcon","IconButton","aria-label","BorderLinearProgress","withStyles","colorPrimary","backgroundColor","palette","grey","type","bar","borderRadius","flexGrow","menuButton","marginRight","spacing","toolbar","alignItems","padding","mixins","drawer","transition","transitions","create","easing","sharp","duration","leavingScreen","marginLeft","enteringScreen","flexShrink","whiteSpace","overflowX","breakpoints","up","background","paper","position","bottom","left","right","Mcontainer","top","elevation","Main","useTheme","setOpen","Settingopen","setSettingOpen","handleSettingClose","Alertopen","setAlertOpen","handleAlertClose","reason","Imagelistopen","setImagelistOpen","Folderlistopen","setFolderlistOpen","setFolderNameF","Uploadopen","setUploadOpen","handleUploadClose","DropUP","getUploadParams","file","meta","FormData","append","url","onChangeStatus","status","name","onSubmit","files","allFiles","forEach","f","remove","accept","inputContent","extra","reject","styles","dropzoneReject","borderColor","dropzone","inputLabel","AppBar","clsx","appBar","appBarShift","Toolbar","edge","hide","Typography","username","usericon","Drawer","drawerOpen","drawerClose","direction","Divider","text","button","ListItemIcon","ListItemText","primary","secondary","unlimited","quota_human","quota","content","Snackbar","autoHideDuration","Modal","aria-labelledby","aria-describedby","modal","closeAfterTransition","BackdropComponent","Backdrop","BackdropProps","timeout","Fade","in","Grid","container","justify","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister","catch"],"mappings":"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","file":"static/js/main.dba51531.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Gallery from 'react-grid-gallery';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport ShareIcon from '@material-ui/icons/Share';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport LinkIcon from '@material-ui/icons/Link';\nimport TextField from '@material-ui/core/TextField';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport Avatar from '@material-ui/core/Avatar';\nimport Alert from '@material-ui/lab/Alert';\n\nconst styles = theme => ({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n dialogText: {\n color: theme.palette.blue\n }\n});\n\nclass imageList extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n images: [],\n currentImage: 0,\n currentImagePath: \"\",\n\n error: null,\n isLoaded: false,\n\n open: false,\n //for modal\n uuid: \"not_found\",\n mode: \"nil\",\n permission: \"anyone\",\n ShareError: null,\n };\n\n this.onCurrentImageChange = this.onCurrentImageChange.bind(this);\n this.shareImage = this.shareImage.bind(this);\n this.handleDialogClose = this.handleDialogClose.bind(this);\n //this.onChangeValue = this.onChangeValue.bind(this);\n }\n\n onCurrentImageChange(index) {\n this.setState({ currentImage: index });\n }\n\n handleDialogClose() {\n this.setState({\n open: false\n });\n }\n\n shareImage = () => {\n var CIP = this.state.images[this.state.currentImage].vsrc;\n this.setState({ open: true, currentImagePath: CIP });\n fetch(\"/system/file_system/share/new?path=\" + CIP, {})\n //fetch(\"/backend_test/new?path=\" + CIP, {})\n .then(res => res.json())\n .then(\n (result) => {\n this.setState({\n uuid: result.UUID,\n mode: result.Permission,\n });\n console.log(this.state.uuid);\n },\n // Note: it's important to handle errors here\n // instead of a catch() block so that we don't swallow\n // exceptions from actual bugs in components.\n (error) => {\n this.setState({\n ShareError: error\n });\n }\n )\n }\n \n //modal\n /*\n onChangeValue(event) {\n console.log(event.target.value);\n }\n*/\n handleChange = (event) => {\n this.setState({ mode: event.target.value });\n\n var uuid = this.state.uuid;\n var mode = event.target.value;\n var path = this.state.currentImagePath;\n\n if (event.target.value != \"remove\") {\n //this.setState({ currency: event.target.value });\n //fetch('/backend_test/edit?uuid=' + uuid + '&mode=' + mode, {\n fetch('/system/file_system/share/edit?uuid=' + uuid + '&mode=' + mode, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then((response) => response.json())\n .then((data) => data);\n } else {\n //remove but use edit response now\n //fetch(\"/backend_test/remove?path=\" + path, {\n fetch('/system/file_system/share/delete?path=' + path, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then((response) => response.json())\n .then((data) => data);\n }\n }\n \n componentDidMount() {\n // fetch(\"/backend_test/listFile\", {})\n \n fetch(\"/system/ajgi/interface?script=/Photo/backend/listFile.js\", {\n method: 'post',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ folder: this.props.path })\n })\n \n .then(res => res.json())\n .then(\n (result) => {\n this.setState({\n isLoaded: true,\n images: result\n });\n },\n // Note: it's important to handle errors here\n // instead of a catch() block so that we don't swallow\n // exceptions from actual bugs in components.\n (error) => {\n this.setState({\n isLoaded: true,\n error: error\n });\n }\n )\n }\n\n setPath() {\n this.setState({ path: \"user:/Photo/\" });\n }\n\n //handle modal\n\n render() {\n const { classes } = this.props;\n const { isLoaded, error } = this.state;\n const theme = {\n margin: 4,\n }\n \n if (error) {\n return <div>Error: {error.message} (imageList.js)</div>;\n }else if(!isLoaded) {\n return <div><LinearProgress /></div>;\n } else {\n if (this.state.images.length == 0) {\n return <div><Alert severity=\"info\">Nothing here :(</Alert></div>\n } else {\n return (\n <div>\n <Gallery images={this.state.images}\n enableLightbox={true}\n enableImageSelection={false}\n currentImageWillChange={this.onCurrentImageChange}\n\n customControls={[\n <Button\n variant=\"contained\"\n size=\"large\"\n style={theme}\n startIcon={<ShareIcon />}\n onClick={this.shareImage.bind(this)}\n >Share</Button>\n ]} />\n\n <Dialog\n style={{ zIndex: 99999 }}\n open={this.state.open}\n maxWidth=\"md\"\n fullWidth=\"true\"\n onClose={this.handleDialogClose}\n >\n <DialogTitle>\n <List>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <LinkIcon />\n </Avatar>\n </ListItemAvatar>\n Get link\n </ListItem>\n </List>\n </DialogTitle>\n <DialogContent>\n <TextField\n label=\"Shared link\"\n defaultValue=\"https://arozos.com/share/not_found\"\n InputProps={{\n readOnly: true,\n }}\n variant=\"filled\"\n fullWidth=\"true\"\n value={window.location.origin + \"/share?id=\" + this.state.uuid}\n />\n <br /><br />\n <TextField\n select\n label=\"Share option\"\n value={this.state.mode}\n onChange={this.handleChange}\n SelectProps={{\n native: true,\n }}\n variant=\"outlined\"\n fullWidth=\"true\"\n >\n {[\n {\n label: 'Anyone with the link',\n value: 'anyone',\n },\n {\n label: 'Anyone signed in',\n value: 'signedin',\n },\n {\n label: 'Users in the same group',\n value: 'samegroup',\n },\n {\n label: 'Not public',\n value: 'remove',\n },\n ].map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </TextField>\n <br /><br />\n <Button variant=\"contained\" color=\"primary\" onClick={this.handleDialogClose}>\n Done\n</Button>\n </DialogContent>\n </Dialog>\n </div >\n );\n }\n }\n }\n}\n\nimageList.propTypes = {\n images: PropTypes.arrayOf(\n PropTypes.shape({\n src: PropTypes.string.isRequired,\n vsrc: PropTypes.string.isRequired,\n thumbnail: PropTypes.string.isRequired,\n srcset: PropTypes.array,\n caption: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element\n ]),\n thumbnailWidth: PropTypes.number.isRequired,\n thumbnailHeight: PropTypes.number.isRequired\n })\n ).isRequired\n};\n\n\nimageList.defaultProps = {\n images: []\n};\n\nexport default imageList;","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport GridList from '@material-ui/core/GridList';\nimport GridListTile from '@material-ui/core/GridListTile';\nimport GridListTileBar from '@material-ui/core/GridListTileBar';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nimport IconButton from '@material-ui/core/IconButton';\nimport InfoIcon from '@material-ui/icons/Info';\nimport { useEffect } from 'react';\nimport imageList from './imageList.js';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward';\nimport Alert from '@material-ui/lab/Alert';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-around',\n overflow: 'hidden',\n },\n gridList: {\n width: '100%',\n height: '100%',\n },\n icon: {\n color: 'rgba(255, 255, 255, 0.54)',\n },\n}));\n\n/**\n * The example data is structured as follows:\n *\n * import image from 'path/to/image.jpg';\n * [etc...]\n *\n * const tileData = [\n * {\n * img: image,\n * title: 'Image',\n * author: 'author',\n * },\n * {\n * [etc...]\n * },\n * ];\n */\nexport default function TitlebarGridList(props) {\n\n const classes = useStyles();\n\n const [error, setError] = React.useState(null);\n const [isLoaded, setIsLoaded] = React.useState(false);\n const [items, setItems] = React.useState([]);\n\n const [folderName, setFolderName] = React.useState('user:/Photo/');\n\n const onChanageFolder = (folderN) => {\n setFolderName(folderN);\n console.log(\"1\" + folderName);\n props.onChange(folderN);\n }\n\n useEffect(() => {\n //fetch(\"/backend_test/listFolder\", {})\n \n fetch(\"/system/ajgi/interface?script=/Photo/backend/listFolder.js\", {\n method: 'post',\n body: JSON.stringify({ folder: folderName })\n })\n \n .then(res => res.json())\n .then(\n (result) => {\n setIsLoaded(true);\n setItems(result);\n },\n // Note: it's important to handle errors here\n // instead of a catch() block so that we don't swallow\n // exceptions from actual bugs in components.\n (error) => {\n setIsLoaded(true);\n setError(error);\n }\n )\n }, [])\n\n \n if (error) {\n return <div>Error: {error.message} (FolderList.js)</div>;\n } else if (!isLoaded) {\n return <div><LinearProgress /></div>;\n } else {\n if (items.length == 0) {\n return <div><Alert severity=\"info\">Nothing here :(</Alert></div>\n } else {\n return (\n <div className={classes.root}>\n <GridList cellHeight={180} cols={5} className={classes.gridList}>\n {items.map((tile) => (\n <GridListTile key={tile.img} onClick={() => onChanageFolder(tile.VPath)}>\n <img src={tile.img} alt={tile.Foldername} />\n <GridListTileBar\n title={tile.Foldername}\n actionIcon={\n <IconButton aria-label={`info about ${tile.Foldername}`} onClick={() => onChanageFolder(tile.VPath)} className={classes.icon}>\n <ArrowForwardIcon />\n </IconButton>\n }\n />\n </GridListTile>\n ))}\n </GridList>\n </div>\n );\n }\n }\n}\n","import React from 'react';\nimport { makeStyles, useTheme, withStyles } from '@material-ui/core/styles';\nimport { useEffect } from 'react';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport clsx from 'clsx';\nimport Drawer from '@material-ui/core/Drawer';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport InfoIcon from '@material-ui/icons/Info';\nimport ImageList from './imageList';\nimport PhotoIcon from '@material-ui/icons/Photo';\nimport PhotoAlbumIcon from '@material-ui/icons/PhotoAlbum';\nimport Grid from '@material-ui/core/Grid';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport Avatar from '@material-ui/core/Avatar';\nimport CloudIcon from '@material-ui/icons/Cloud';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Modal from '@material-ui/core/Modal';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport Fade from '@material-ui/core/Fade';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport CloseIcon from '@material-ui/icons/Close';\nimport FolderList from './FolderList';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport 'react-dropzone-uploader/dist/styles.css'\nimport 'react-dropzone-uploader/dist/styles.css'\nimport Dropzone from 'react-dropzone-uploader'\n\nconst drawerWidth = 240;\n\nconst BorderLinearProgress = withStyles((theme) => ({\n colorPrimary: {\n backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n },\n root: {\n display: 'flex',\n },\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n },\n appBarShift: {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n menuButton: {\n marginRight: 36,\n },\n hide: {\n display: 'none',\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerClose: {\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n [theme.breakpoints.up('sm')]: {\n width: theme.spacing(9) + 1,\n },\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n },\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n backgroundColor: theme.palette.background.paper,\n width: '100%',\n height: '100%',\n //boxShadow: theme.shadows[5],\n //padding: theme.spacing(2, 4, 3),\n },\n fabL: {\n position: 'absolute',\n bottom: '50%',\n left: theme.spacing(2),\n },\n fabR: {\n position: 'absolute',\n bottom: '50%',\n //left: `calc(95% - ${theme.spacing(2)}px)`,\n //right: theme.spacing(2),\n right: `calc(${theme.spacing(2)}px + ( 100vw / 4 ))`,\n Mcontainer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n width: \"100%\",\n alignItems: \"center\"\n },\n },\n}));\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nexport default function Main(props) {\n//FOR AJAX\n const classes = useStyles();\n\n const [error, setError] = React.useState(null);\n const [isLoaded, setIsLoaded] = React.useState(false);\n const [items, setItems] = React.useState([]);\n\n//END\n const theme = useTheme();\n const [open, setOpen] = React.useState(false);\n\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n const [Settingopen, setSettingOpen] = React.useState(false);\n\n const handleSettingOpen = () => {\n setSettingOpen(true);\n };\n\n const handleSettingClose = () => {\n setSettingOpen(false);\n };\n\n const [Alertopen, setAlertOpen] = React.useState(false);\n\n const handleAlertClick = () => {\n setAlertOpen(true);\n };\n\n const handleAlertClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n setAlertOpen(false);\n };\n\n const [Imagelistopen, setImagelistOpen] = React.useState(true);\n const [Folderlistopen, setFolderlistOpen] = React.useState(false);\n\n const [folderName, setFolderName] = React.useState('user:/Photo/');\n\n\n const setFolderNameF = (folderN) => {\n setFolderName(folderN);\n console.log(\"3\" + folderName);\n setImagelistOpen(true);\n setFolderlistOpen(false);\n }\n\n const handleClick = value => () => {\n console.log(value);\n switch (value) {\n case \"Photos\":\n setImagelistOpen(true);\n setFolderlistOpen(false);\n break;\n case \"Albums\":\n setFolderlistOpen(true);\n setImagelistOpen(false);\n break;\n //case \"Sharing\":\n //setAlertOpen(true);\n //case \"Utilities\":\n //setAlertOpen(true);\n }\n }\n\n const [Uploadopen, setUploadOpen] = React.useState(false);\n\n const handleUploadOpen = () => {\n setImagelistOpen(false);\n setUploadOpen(true);\n };\n\n const handleUploadClose = () => {\n setImagelistOpen(true);\n setUploadOpen(false);\n };\n \n const DropUP = () => {\n // specify upload params and url for your files\n const getUploadParams = ({ file, meta }) => {\n const body = new FormData()\n body.append('path', folderName)\n body.append('file', file)\n return { url: '/system/file_system/upload', body}\n }\n \n const handleChangeStatus = ({ meta }, status) => {\n if (status === 'done') {\n console.log(`${meta.name} uploaded!`)\n }\n //console.log(status, meta)\n }\n\n const handleSubmit = (files, allFiles) => {\n //console.log(files.map(f => f.meta))\n allFiles.forEach(f => f.remove())\n }\n\n return (\n <Dropzone\n getUploadParams={getUploadParams}\n onChangeStatus={handleChangeStatus}\n onSubmit={handleSubmit}\n accept=\"image/*\"\n inputContent={(files, extra) => (extra.reject ? 'Image only' : 'Drag Files')}\n styles={{\n dropzoneReject: { borderColor: 'red', backgroundColor: '#DAA' },\n dropzone: {width: '100%', height: '100%'},\n inputLabel: (files, extra) => (extra.reject ? { color: 'red' } : {}),\n }}\n />\n )\n }\n\n useEffect(() => {\n //fetch(\"/backend_test/config\", {})\n \n fetch(\"/system/ajgi/interface?script=/Photo/backend/config.js\", {\n method: 'post',\n body: JSON.stringify({ folder: folderName })\n })\n \n .then(res => res.json())\n .then(\n (result) => {\n setIsLoaded(true);\n setItems(result);\n },\n // Note: it's important to handle errors here\n // instead of a catch() block so that we don't swallow\n // exceptions from actual bugs in components.\n (error) => {\n setIsLoaded(true);\n setError(error);\n }\n )\n }, [])\n\n\n if (error) {\n return <div>Error: {error.message} (Config.js)</div>;\n } else if (!isLoaded) {\n return <div><LinearProgress /></div>;\n } else {\n return (\n <div className={classes.root}>\n <AppBar position=\"fixed\" style={{ background: '#2196f3' }} className={\n clsx(classes.appBar, {\n [classes.appBarShift]: open,\n })\n }>\n <Toolbar >\n <IconButton edge=\"start\" onClick={handleDrawerOpen} className={\n clsx(classes.menuButton, {\n [classes.hide]: open,\n })\n } className={classes.menuButton} color=\"inherit\" aria-label=\"menu\">\n <MenuIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n ArOZ Photo\n </Typography>\n <Button variant=\"contained\" startIcon={<CloudUploadIcon />} type=\"button\" onClick={handleUploadOpen}>Upload</Button>\n <IconButton style={{ color: '#ffffff' }} aria-label=\"help\" onClick={handleAlertClick}>\n <HelpOutlineIcon />\n </IconButton>\n <IconButton style={{ color: '#ffffff' }} aria-label=\"settings\" onClick={handleSettingOpen}>\n <SettingsIcon />\n </IconButton>\n <Avatar alt={items.username} src={items.usericon} />\n </Toolbar>\n </AppBar>\n <Drawer\n variant=\"permanent\"\n className={\n clsx(classes.drawer, {\n [classes.drawerOpen]: open,\n [classes.drawerClose]: !open,\n })\n }\n classes={\n {\n paper: clsx({\n [classes.drawerOpen]: open,\n [classes.drawerClose]: !open,\n }),\n }\n }>\n <div className={classes.toolbar}>\n <IconButton onClick={handleDrawerClose}>\n {theme.direction === 'ltr' ? <ChevronLeftIcon /> : <ChevronRightIcon />}\n </IconButton>\n </div>\n <Divider />\n <List>\n {['Photos', /* 'Sharing', */ 'Albums', /* 'Utilities' */].map((text, index) => (\n <ListItem button key={text} onClick={handleClick(text)}>\n { /* index == 0 ? < PhotoIcon /> : index == 1 ? < ShareIcon /> : index == 2 ? < PhotoAlbumIcon /> : < LibraryAddCheckIcon /> */}\n <ListItemIcon>{index == 0 ? < PhotoIcon /> : < PhotoAlbumIcon />}</ListItemIcon>\n <ListItemText primary={text} />\n </ListItem>\n ))}\n </List>\n <Divider />\n <List>\n <ListItem button key=\"Storage\">\n <ListItemIcon>< CloudIcon /></ListItemIcon>\n <ListItemText primary=\"Storage\" secondary={items.unlimited ? items.quota_human + \" Used\": <BorderLinearProgress variant=\"determinate\" value={items.quota} />} />\n </ListItem>\n </List>\n </Drawer>\n <main className={classes.content}>\n <div className={classes.toolbar} />\n {Imagelistopen && <ImageList path={folderName} />}\n {Folderlistopen && <FolderList onChange={setFolderNameF} folderName={setFolderNameF} />}\n </main>\n <Snackbar open={Alertopen} autoHideDuration={6000} onClose={handleAlertClose}>\n <Alert onClose={handleAlertClose} severity=\"error\">\n This function has not been implemented on this platform (aCloud 0x0)\n </Alert>\n </Snackbar>\n\n <Modal\n aria-labelledby=\"transition-modal-title\"\n aria-describedby=\"transition-modal-description\"\n className={classes.modal}\n open={Uploadopen}\n onClose={handleUploadClose}\n closeAfterTransition\n BackdropComponent={Backdrop}\n BackdropProps={{\n timeout: 500,\n }}\n >\n <Fade in={Uploadopen}>\n <div className={classes.paper}>\n <Grid container alignItems=\"flex-start\" justify=\"flex-end\" direction=\"row\">\n <IconButton color=\"primary\" aria-label=\"close\" onClick={handleUploadClose}>\n <CloseIcon />\n </IconButton>\n </Grid>\n <Alert severity=\"info\">Uploading to: {folderName}</Alert>\n <DropUP/>\n </div>\n </Fade>\n </Modal>\n\n <Modal\n aria-labelledby=\"transition-modal-title\"\n aria-describedby=\"transition-modal-description\"\n className={classes.modal}\n open={Settingopen}\n onClose={handleSettingClose}\n closeAfterTransition\n BackdropComponent={Backdrop}\n BackdropProps={{\n timeout: 500,\n }}\n >\n <Fade in={Settingopen}>\n <div className={classes.paper}>\n <Grid container alignItems=\"flex-start\" justify=\"flex-end\" direction=\"row\">\n <IconButton color=\"primary\" aria-label=\"close\" onClick={handleSettingClose}>\n <CloseIcon />\n </IconButton>\n </Grid>\n <List>\n <ListItem button>\n <ListItemAvatar>\n <Avatar>\n <InfoIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary=\"Version\" secondary=\"v1.5.3-beta\" />\n </ListItem>\n <ListItem button>\n <ListItemAvatar>\n <Avatar>\n <InfoIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary=\"Developer\" secondary=\"Alan yeung\" />\n </ListItem>\n </List>\n </div>\n </Fade>\n </Modal>\n </div>\n );\n }\n}\n","\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport * as serviceWorker from './serviceWorker';\nimport SearchAppMenu from './SearchAppMenu';\n\n\nReactDOM.render(\n <div>\n <SearchAppMenu />\n <preview />\n </div>,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n\n/*\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Demo from './modal';\n\nReactDOM.render( < Demo / > , document.querySelector('#root'));\n*/\n\n/*\n <SearchAppMenu/>\n <App/>\n <preview/>\n */"],"sourceRoot":""}