@iobroker/adapter-react-v5 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/ColorPicker.js +6 -2
- package/Components/ColorPicker.js.map +1 -1
- package/Components/ComplexCron.js +1 -1
- package/Components/ComplexCron.js.map +1 -1
- package/Components/FileBrowser.js +6 -6
- package/Components/FileBrowser.js.map +1 -1
- package/Components/FileViewer.js +5 -17
- package/Components/FileViewer.js.map +1 -1
- package/Components/Icon.js +1 -1
- package/Components/Icon.js.map +1 -1
- package/Components/IconPicker.js +1 -2
- package/Components/IconPicker.js.map +1 -1
- package/Components/Image.js +2 -1
- package/Components/Image.js.map +1 -1
- package/Components/Loader.js +8 -14
- package/Components/Loader.js.map +1 -1
- package/Components/Logo.js +8 -8
- package/Components/Logo.js.map +1 -1
- package/Components/MDUtils.js.map +1 -1
- package/Components/Schedule.js +1 -2
- package/Components/Schedule.js.map +1 -1
- package/Components/SelectWithIcon.js +40 -4
- package/Components/SelectWithIcon.js.map +1 -1
- package/Components/TextWithIcon.js +5 -3
- package/Components/TextWithIcon.js.map +1 -1
- package/Dialogs/ComplexCron.js +1 -1
- package/Dialogs/ComplexCron.js.map +1 -1
- package/Dialogs/Confirm.js +1 -1
- package/Dialogs/Confirm.js.map +1 -1
- package/Dialogs/Cron.js +1 -1
- package/Dialogs/Cron.js.map +1 -1
- package/Dialogs/Error.js +1 -1
- package/Dialogs/Error.js.map +1 -1
- package/Dialogs/Message.js +1 -1
- package/Dialogs/Message.js.map +1 -1
- package/Dialogs/SelectID.js +1 -1
- package/Dialogs/SelectID.js.map +1 -1
- package/Dialogs/SimpleCron.js +1 -1
- package/Dialogs/SimpleCron.js.map +1 -1
- package/Dialogs/TextInput.js +11 -11
- package/Dialogs/TextInput.js.map +1 -1
- package/GenericApp.js +7 -4
- package/GenericApp.js.map +1 -1
- package/README.md +3 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FileBrowser.js"],"names":["withWidth","WrappedComponent","props","ROW_HEIGHT","BUTTON_WIDTH","TILE_HEIGHT","TILE_WIDTH","NOT_FOUND","styles","theme","dialog","height","mixins","toolbar","minHeight","root","width","overflow","position","filesDiv","spacing","overflowX","overflowY","padding","filesDivTable","filesDivTile","display","alignContent","alignItems","flexWrap","flex","itemTile","userSelect","cursor","textAlign","opacity","transition","margin","background","palette","secondary","light","color","Utils","invertColor","main","itemNameFolderTile","fontWeight","itemNameTile","textOverflow","fontSize","wordBreak","itemFolderIconTile","paddingLeft","itemFolderIconBack","top","left","zIndex","mode","itemSizeTile","itemImageTile","objectFit","itemIconTile","itemSelected","primary","itemTable","lineHeight","itemNameTable","verticalAlign","flexGrow","itemNameFolderTable","itemSizeTable","itemAccessTable","paddingRight","justifyContent","itemImageTable","marginTop","maxHeight","itemIconTable","itemFolderTable","itemFolderTemp","itemFolderIconTable","marginLeft","itemDownloadButtonTable","minWidth","paddingTop","itemAclButtonTable","itemDeleteButtonTable","uploadDiv","bottom","right","uploadDivDragging","uploadCenterDiv","border","borderRadius","uploadCenterIcon","uploadCenterText","uploadCloseButton","uploadCenterTextAndIcon","menuButtonExpertActive","pathDiv","marginRight","whiteSpace","pathDivInput","pathDivBreadcrumb","paddingBottom","borderBottom","pathDivBreadcrumbDir","pathDivBreadcrumbSlash","pathDivBreadcrumbFile","backgroundImageLight","backgroundImageDark","backgroundImageColored","direction","USER_DATA","sortFolders","a","b","folder","name","getParentDir","dir","parts","split","length","pop","join","isFile","path","ext","getFileExtension","toLowerCase","match","TABLE","TILE","FileBrowser","array","setState","backgroundImage","indexOf","window","localStorage","setItem","state","classes","expanded","getItem","JSON","parse","e","viewType","showViewTypeButton","selected","currentDir","folders","filterEmpty","expertMode","addFolder","uploadFile","deleteItem","marked","viewer","formatEditFile","errorText","modalEditOfAccess","queueLength","loadAllFolders","allFoldersLoaded","imagePrefix","levelPadding","mounted","suppressDeleteConfirm","browseList","browseListRunning","initialReadFinished","browseFolder","then","browseFolders","Promise","resolve","findItem","pathFocus","scrollToSelected","el","document","getElementById","scrollIntoView","loadFolders","foldersList","_newFolders","_resolve","Object","keys","forEach","shift","setTimeout","adapter","relPath","reject","push","processBrowseList","level","processing","socket","readDir","files","item","folderId","_checkEmpty","all","filter","map","id","error","readMetaItems","objs","_folders","userData","obj","_id","title","common","meta","from","ts","icon","acl","sort","unshift","alert","readDirSerial","file","isDir","size","stats","modified","modifiedAt","stopPropagation","pos","stringify","temp","err","t","splice","lastSelect","Date","now","onSelect","cb","filterFiles","includes","filterByType","EXTENSIONS","Icon","IconOpen","IconClosed","select","changeFolder","toggleFolder","lang","end","clsx","undefined","formatAcl","allowDownload","allowDelete","startsWith","formatBytes","access","permissions","toString","padStart","images","target","onerror","src","NoImage","getClassBackgroundImage","getFileIcon","formatSize","getEditFile","res","renderBackFolder","renderFolder","renderFile","renderItems","showExpertButton","menuButton","allowCreateFolder","allowUpload","setStateBackgroundImage","parentFolder","find","findFirstFolder","text","parent","replace","prevProps","prevState","snapshot","setOpacityTimer","clearTimeout","items","getElementsByClassName","i","style","fileName","data","writeFile64","acceptedFiles","count","reader","FileReader","onabort","console","log","onload","result","readAsArrayBuffer","getRootProps","getInputProps","deleteRecursive","deleteFolder","parentId","f","deleteFile","themeName","info","changed","it","p","part","keyCode","changeToPath","value","renderBreadcrumb","ready","key","foldersLoading","className","showToolbar","renderToolbar","renderPath","renderInputDialog","renderUpload","renderDeleteDialog","allowView","renderViewDialog","modalEditOfAccessControl","modalEditOfAccessObjData","renderError","Component","defaultProps","objectAddBoolean","objectEditBoolean","objectStatesView","objectImportExport","objectEditOfAccessControl","modalNewObject","propTypes","PropTypes","object","string","func","bool","tileView","_export"],"mappings":"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","sourcesContent":["import withStyles from '@mui/styles/withStyles';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Dropzone from 'react-dropzone'\n\nimport LinearProgress from '@mui/material/LinearProgress';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Toolbar from '@mui/material/Toolbar';\nimport IconButton from '@mui/material/IconButton';\nimport Fab from '@mui/material/Fab';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Input from '@mui/material/Input';\nimport { Hidden, Tooltip } from '@mui/material';\n\nimport ErrorDialog from '../Dialogs/Error';\nimport Utils from './Utils';\nimport TextInputDialog from '../Dialogs/TextInput';\nimport { EXTENSIONS } from './FileViewer';\nimport FileViewer from './FileViewer';\n//import FileViewer from '@iobroker/adapter-react/Components/FileViewer';\n\n// Icons\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport CloseIcon from '@mui/icons-material/Close';\nimport JsonIcon from '@mui/icons-material/Bookmark';\nimport CssIcon from '@mui/icons-material/BookmarkBorder';\nimport HtmlIcon from '@mui/icons-material/Description';\nimport EditIcon from '@mui/icons-material/Edit';\nimport JSIcon from '@mui/icons-material/Code';\nimport FileIcon from '@mui/icons-material/InsertDriveFile';\nimport UploadIcon from '@mui/icons-material/Publish';\nimport MusicIcon from '@mui/icons-material/MusicNote';\nimport DownloadIcon from '@mui/icons-material/SaveAlt';\nimport AddFolderIcon from '@mui/icons-material/CreateNewFolder';\nimport EmptyFilterIcon from '@mui/icons-material/FolderOpen';\nimport IconList from '@mui/icons-material/List';\nimport IconTile from '@mui/icons-material/ViewModule';\nimport IconBack from '@mui/icons-material/ArrowBack';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Brightness5Icon from '@mui/icons-material/Brightness6';\n\nimport ExpertIcon from '../icons/IconExpert';\nimport NoImage from '../assets/no_icon.svg';\nimport IconClosed from '../icons/IconClosed';\nimport IconOpen from '../icons/IconOpen';\n\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nconst withWidth = () => (WrappedComponent) => (props) => <WrappedComponent {...props} width=\"xs\" />;\n\nconst ROW_HEIGHT = 32;\nconst BUTTON_WIDTH = 32;\nconst TILE_HEIGHT = 120;\nconst TILE_WIDTH = 64;\n\nconst NOT_FOUND = 'Not found';\n\nconst styles = theme => ({\n dialog: {\n height: `calc(100% - ${theme.mixins.toolbar.minHeight}px)`,\n },\n root: {\n width: '100%',\n overflow: 'hidden',\n height: '100%',\n position: 'relative',\n },\n filesDiv: {\n width: `calc(100% - ${theme.spacing(2)})`,\n overflowX: 'hidden',\n overflowY: 'auto',\n padding: theme.spacing(1),\n },\n filesDivTable: {\n height: `calc(100% - ${48 + theme.spacing(1)}px)`,\n },\n filesDivTile: {\n height: `calc(100% - ${48 * 2 + theme.spacing(1)}px)`,\n display: 'flex',\n alignContent: 'flex-start',\n alignItems: 'stretch',\n flexWrap: 'wrap',\n flex: `0 0 ${TILE_WIDTH}px`,\n },\n\n itemTile: {\n position: 'relative',\n userSelect: 'none',\n cursor: 'pointer',\n height: TILE_HEIGHT,\n width: TILE_WIDTH,\n display: 'inline-block',\n textAlign: 'center',\n opacity: 0.1,\n transition: 'opacity 1s',\n margin: 4,\n '&:hover': {\n background: theme.palette.secondary.light,\n color: Utils.invertColor(theme.palette.secondary.main, true),\n }\n },\n itemNameFolderTile: {\n fontWeight: 'bold',\n },\n itemNameTile: {\n width: '100%',\n height: 32,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: 12,\n textAlign: 'center',\n wordBreak: 'break-all',\n },\n itemFolderIconTile: {\n width: '100%',\n height: TILE_HEIGHT - 32 - 16 - 8, // name + size\n display: 'block',\n paddingLeft: 8,\n color: theme.palette.secondary.main || '#fbff7d',\n },\n itemFolderIconBack: {\n position: 'absolute',\n top: 22,\n left: 18,\n zIndex: 1,\n color: theme.palette.mode === 'dark' ? '#FFF' : '#000',\n },\n itemSizeTile: {\n width: '100%',\n height: 16,\n textAlign: 'center',\n fontSize: 10,\n },\n itemImageTile: {\n width: 'calc(100% - 8px)',\n height: TILE_HEIGHT - 32 - 16 - 8, // name + size\n margin: 4,\n display: 'block',\n textAlign: 'center',\n objectFit: 'contain',\n },\n itemIconTile: {\n width: '100%',\n height: TILE_HEIGHT - 32 - 16 - 8, // name + size\n display: 'block',\n objectFit: 'contain',\n },\n\n itemSelected: {\n background: theme.palette.primary.main,\n color: Utils.invertColor(theme.palette.primary.main, true),\n },\n\n itemTable: {\n userSelect: 'none',\n cursor: 'pointer',\n height: ROW_HEIGHT,\n display: 'inline-flex',\n lineHeight: ROW_HEIGHT + 'px',\n '&:hover': {\n background: theme.palette.secondary.light,\n color: Utils.invertColor(theme.palette.secondary.main, true),\n }\n },\n itemNameTable: {\n display: 'inline-block',\n paddingLeft: 10,\n fontSize: '1rem',\n verticalAlign: 'top',\n flexGrow: 1,\n },\n itemNameFolderTable: {\n fontWeight: 'bold',\n },\n itemSizeTable: {\n display: 'inline-block',\n width: 60,\n verticalAlign: 'top',\n textAlign: 'right'\n },\n itemAccessTable: {\n // display: 'inline-block',\n verticalAlign: 'top',\n width: 60,\n textAlign: 'right',\n paddingRight: 5,\n display: 'flex',\n justifyContent: 'center'\n },\n itemImageTable: {\n display: 'inline-block',\n width: 30,\n marginTop: 1,\n objectFit: 'contain',\n maxHeight: 30,\n },\n itemIconTable: {\n display: 'inline-block',\n marginTop: 1,\n width: 30,\n height: 30,\n },\n itemFolderTable: {\n\n },\n itemFolderTemp: {\n opacity: 0.4\n },\n itemFolderIconTable: {\n marginTop: 1,\n marginLeft: theme.spacing(1),\n display: 'inline-block',\n width: 30,\n height: 30,\n color: theme.palette.secondary.main || '#fbff7d',\n },\n itemDownloadButtonTable: {\n display: 'inline-block',\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n '& span': {\n paddingTop: 9\n },\n '& svg': {\n width: 14,\n height: 14,\n fontSize: '1rem'\n }\n },\n itemAclButtonTable: {\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth:BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n fontSize: 12,\n display: 'flex'\n },\n itemDeleteButtonTable: {\n display: 'inline-block',\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n '& svg': {\n width: 18,\n height: 18,\n fontSize: '1.5rem'\n }\n },\n\n uploadDiv: {\n top: 0,\n zIndex: 1,\n bottom: 0,\n left: 0,\n right: 0,\n position: 'absolute',\n opacity: 0.9,\n textAlign: 'center',\n background: '#FFFFFF',\n },\n uploadDivDragging: {\n opacity: 1,\n },\n\n uploadCenterDiv: {\n margin: 20,\n border: '3px dashed grey',\n borderRadius: 30,\n width: 'calc(100% - 40px)',\n height: 'calc(100% - 40px)',\n position: 'relative',\n color: theme.palette.mode === 'dark' ? '#222' : '#CCC'\n },\n uploadCenterIcon: {\n width: '25%',\n height: '25%',\n },\n uploadCenterText: {\n fontSize: 24,\n fontWeight: 'bold',\n },\n uploadCloseButton: {\n zIndex: 2,\n position: 'absolute',\n top: 30,\n right: 30,\n },\n uploadCenterTextAndIcon: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n height: '30%',\n width: '50%',\n margin: '-15% 0 0 -25%',\n },\n menuButtonExpertActive: {\n color: '#c00000',\n },\n pathDiv: {\n display: 'flex',\n width: `calc(100% - ${theme.spacing(2)})`,\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n textOverflow: 'clip',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n pathDivInput: {\n width: '100%',\n },\n pathDivBreadcrumb: {\n paddingTop: 3,\n paddingBottom: 2,\n borderBottom: 'solid 1px',\n },\n pathDivBreadcrumbDir: {\n paddingLeft: 4,\n paddingRight: 4,\n paddingBottom: 4,\n cursor: 'pointer',\n '&:hover': {\n background: theme.palette.mode === 'dark' ? '#333' : '#CCC',\n },\n },\n pathDivBreadcrumbSlash: {\n paddingLeft: 4,\n paddingRight: 4,\n paddingBottom: 4,\n opacity: 0.7,\n },\n pathDivBreadcrumbFile: {\n cursor: 'pointer',\n flexGrow: 1,\n },\n backgroundImageLight: {\n background: 'white'\n },\n backgroundImageDark: {\n background: 'black'\n },\n backgroundImageColored: {\n background: 'silver'\n },\n '@media screen and (max-width: 500px)': {\n itemNameTable: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'end',\n direction: 'rtl'\n }\n },\n});\n\nconst USER_DATA = '0_userdata.0';\n\nfunction sortFolders(a, b) {\n if (a.folder && b.folder) {\n return a.name > b.name ? 1 : (a.name < b.name ? -1 : 0);\n } else if (a.folder) {\n return -1;\n } else if (b.folder) {\n return 1;\n } else {\n return a.name > b.name ? 1 : (a.name < b.name ? -1 : 0)\n }\n}\n\nfunction getParentDir(dir) {\n const parts = (dir || '').split('/');\n parts.length && parts.pop();\n return parts.join('/');\n}\n\nfunction isFile(path) {\n let ext = Utils.getFileExtension(path);\n if (ext && ext.toLowerCase().match(/[a-z]+/) && ext.length < 5) {\n return true;\n } else {\n return false;\n }\n}\n\nconst TABLE = 'Table';\nconst TILE = 'Tile';\n\n/**\n * @extends {React.Component<import('./types').FileBrowserProps>}\n */\nclass FileBrowser extends Component {\n /**\n * @param {Readonly<import(\"./types\").FileBrowserProps>} props\n */\n constructor(props) {\n super(props);\n let expanded = window.localStorage.getItem('files.expanded') || '[]';\n\n try {\n expanded = JSON.parse(expanded);\n } catch (e) {\n expanded = [];\n }\n\n let viewType;\n if (this.props.showViewTypeButton) {\n viewType = window.localStorage.getItem('files.viewType') || TABLE;\n } else {\n viewType = TABLE;\n }\n\n let selected = this.props.selected || window.localStorage.getItem('files.selected') || USER_DATA;\n let currentDir = '';\n if (isFile(selected)) {\n currentDir = getParentDir(selected);\n } else {\n currentDir = selected;\n }\n let backgroundImage = window.localStorage.getItem('files.backgroundImage') || null;\n\n this.state = {\n viewType,\n folders: {},\n filterEmpty: window.localStorage.getItem('files.empty') !== 'false',\n expanded,\n currentDir,\n expertMode: this.props.expertMode,\n addFolder: false,\n uploadFile: false,\n deleteItem: '',\n marked: [],\n viewer: '',\n formatEditFile: '',\n path: selected,\n selected,\n errorText: '',\n modalEditOfAccess: false,\n backgroundImage,\n queueLength: 0,\n loadAllFolders: false,\n allFoldersLoaded: false,\n };\n\n this.imagePrefix = this.props.imagePrefix || './files/';\n\n this.levelPadding = this.props.levelPadding || 20;\n this.mounted = true;\n this.suppressDeleteConfirm = 0;\n\n this.browseList = [];\n this.browseListRunning = false;\n this.initialReadFinished = false;\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.expertMode !== undefined && props.expertMode !== state.expertMode) {\n return { expertMode: props.expertMode, loadAllFolders: !state.allFoldersLoaded && props.expertMode };\n } else {\n return null;\n }\n }\n\n loadFolders() {\n this.initialReadFinished = false;\n return this.browseFolder('/')\n .then(folders => {\n return this.state.viewType === TABLE ?\n this.browseFolders([...this.state.expanded], folders)\n :\n (this.state.currentDir && this.state.currentDir !== '/' ? this.browseFolder(this.state.currentDir, folders) : Promise.resolve(folders))\n })\n .then(folders => this.setState({ folders }, () => {\n if (this.state.viewType === TABLE && !this.findItem(this.state.selected)) {\n const parts = this.state.selected.split('/');\n while (parts.length && !this.findItem(parts.join('/'))) {\n parts.pop();\n }\n let selected;\n if (parts.length) {\n selected = parts.join('/');\n } else {\n selected = USER_DATA;\n }\n this.setState({ selected, path: selected, pathFocus: false }, () => this.scrollToSelected());\n } else {\n this.scrollToSelected();\n }\n this.initialReadFinished = true;\n }))\n }\n\n scrollToSelected() {\n if (this.mounted) {\n const el = document.getElementById(this.state.selected);\n el && el.scrollIntoView();\n }\n }\n\n componentDidMount() {\n this.mounted = true;\n this.loadFolders();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n this.browseList = null;\n this.browseListRunning = false;\n }\n\n browseFolders(foldersList, _newFolders, _resolve) {\n if (!_newFolders) {\n _newFolders = {};\n Object.keys(this.state.folders).forEach(folder => _newFolders[folder] = this.state.folders[folder]);\n }\n\n if (!_resolve) {\n return new Promise(resolve => this.browseFolders(foldersList, _newFolders, resolve));\n }\n\n if (!foldersList || !foldersList.length) {\n _resolve(_newFolders);\n } else {\n this.browseFolder(foldersList.shift(), _newFolders)\n .then(() => setTimeout(() => this.browseFolders(foldersList, _newFolders, _resolve), 0))\n .catch(() => setTimeout(() => this.browseFolders(foldersList, _newFolders, _resolve), 0))\n }\n }\n\n readDirSerial(adapter, relPath) {\n return new Promise((resolve, reject) => {\n if (this.browseList) { // if component still mounted\n this.browseList.push({resolve, reject, adapter, relPath});\n !this.browseListRunning && this.processBrowseList();\n }\n });\n }\n\n processBrowseList(level) {\n if (!this.browseListRunning && this.browseList && this.browseList.length) {\n this.browseListRunning = true;\n if (this.browseList.length > 10) {\n // not too often\n if (!(this.browseList.length % 10)) {\n this.setState({queueLength: this.browseList.length});\n }\n } else {\n this.setState({queueLength: this.browseList.length});\n }\n\n this.browseList[0].processing = true;\n this.props.socket.readDir(this.browseList[0].adapter, this.browseList[0].relPath)\n .then(files => {\n if (this.browseList) { // if component still mounted\n const item = this.browseList.shift();\n if (item) {\n const resolve = item.resolve;\n item.resolve = null;\n item.reject = null;\n item.adapter = null;\n item.relPath = null;\n resolve(files);\n this.browseListRunning = false;\n if (this.browseList.length) {\n if (level < 5) {\n this.processBrowseList(level + 1);\n } else {\n setTimeout(() => this.processBrowseList(0), 0);\n }\n } else {\n this.setState({queueLength: 0});\n }\n } else {\n this.setState({queueLength: 0});\n }\n }\n\n })\n .catch(e => {\n if (this.browseList) { // if component still mounted\n const item = this.browseList.shift();\n if (item) {\n const reject = item.reject;\n item.resolve = null;\n item.reject = null;\n item.adapter = null;\n item.relPath = null;\n reject(e);\n this.browseListRunning = false;\n if (this.browseList.length) {\n if (level < 5) {\n this.processBrowseList(level + 1);\n } else {\n setTimeout(() => this.processBrowseList(0), 0);\n }\n } else {\n this.setState({queueLength: 0});\n }\n } else {\n this.setState({queueLength: 0});\n }\n }\n });\n }\n }\n\n browseFolder(folderId, _newFolders, _checkEmpty) {\n if (!_newFolders) {\n _newFolders = {};\n Object.keys(this.state.folders).forEach(folder =>\n _newFolders[folder] = this.state.folders[folder]);\n }\n\n if (_newFolders[folderId]) {\n if (!_checkEmpty) {\n return new Promise((resolve, reject) =>\n Promise.all(_newFolders[folderId].filter(item => item.folder).map(item =>\n this.browseFolder(item.id, _newFolders, true)\n .catch(error => { })))\n .then(() => resolve(_newFolders))\n .catch(error => reject(error)));\n } else {\n return Promise.resolve(_newFolders);\n }\n }\n\n if (!folderId || folderId === '/') {\n return this.props.socket.readMetaItems()\n .then(objs => {\n const _folders = [];\n let userData = null;\n\n // load only adapter.admin and not other meta files like hm-rpc.0.devices.blablabla\n objs = objs.filter(obj => {\n if (!this.state.expertMode) {\n return obj._id === '0_userdata.0' || obj._id === 'vis.0';\n } else {\n return obj._id.split('.').length <= 2;\n }\n });\n\n // remember, that all folders are loaded\n if (this.state.expertMode) {\n this.setState({allFoldersLoaded: true, loadFolders: false});\n }\n\n objs.forEach(obj => {\n const item = {\n id: obj._id,\n name: obj._id,\n title: (obj.common && obj.common.name) || obj._id,\n meta: true,\n from: obj.from,\n ts: obj.ts,\n color: obj.common && obj.common.color,\n icon: obj.common && obj.common.icon,\n folder: true,\n acl: obj.acl,\n level: 0\n };\n if (item.id === USER_DATA) {\n // user data must be first\n userData = item;\n } else {\n _folders.push(item);\n }\n });\n _folders.sort((a, b) => a.id > b.id ? 1 : (a.id < b.id ? -1 : 0));\n _folders.unshift(userData);\n\n _newFolders[folderId || '/'] = _folders;\n\n if (!_checkEmpty) {\n return Promise.all(_folders.filter(item => item.folder).map(item =>\n this.browseFolder(item.id, _newFolders, true).catch(error => { })))\n .then(() => _newFolders)\n } else {\n return _newFolders;\n }\n })\n .catch(e => this.initialReadFinished && window.alert('Cannot read meta items: ' + e));\n } else {\n const parts = folderId.split('/');\n const level = parts.length;\n const adapter = parts.shift();\n const relPath = parts.join('/');\n\n // make all requests here serial\n return this.readDirSerial(adapter, relPath)\n .then(files => {\n const _folders = [];\n files.forEach(file => {\n const item = {\n id: folderId + '/' + file.file,\n ext: Utils.getFileExtension(file.file),\n folder: file.isDir,\n name: file.file,\n size: file.stats && file.stats.size,\n modified: file.modifiedAt,\n acl: file.acl,\n level\n };\n _folders.push(item);\n });\n\n _folders.sort(sortFolders);\n _newFolders[folderId] = _folders;\n\n if (!_checkEmpty) {\n return Promise.all(_folders.filter(item => item.folder).map(item => this.browseFolder(item.id, _newFolders, true)))\n .then(() => _newFolders);\n } else {\n return _newFolders;\n }\n })\n .catch(e => {\n this.initialReadFinished && window.alert(`Cannot read ${adapter}${relPath ? '/' + relPath : ''}: ${e}`);\n _newFolders[folderId] = [];\n return _newFolders;\n });\n }\n }\n\n toggleFolder(item, e) {\n e && e.stopPropagation();\n const expanded = [...this.state.expanded];\n const pos = expanded.indexOf(item.id);\n if (pos === -1) {\n expanded.push(item.id);\n expanded.sort();\n\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n\n if (!item.temp) {\n return this.browseFolder(item.id)\n .then(folders => this.setState({ expanded, folders }))\n .catch(err => window.alert(err === NOT_FOUND ? this.props.t('re_Cannot find \"%s\"', item.id) : this.props.t('re_Cannot read \"%s\"', item.id)));\n } else {\n this.setState({ expanded });\n }\n } else {\n expanded.splice(pos, 1);\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ expanded });\n }\n }\n\n changeFolder(e, folder) {\n e && e.stopPropagation();\n\n this.lastSelect = Date.now();\n\n folder = folder || getParentDir(this.state.currentDir);\n\n if (folder === '/') {\n folder = '';\n }\n\n window.localStorage.setItem('files.currentDir', folder);\n\n if (folder && !this.state.folders[folder]) {\n return this.browseFolder(folder)\n .then(folders =>\n this.setState({ folders, path: folder, currentDir: folder, selected: folder, pathFocus: false }, () => this.props.onSelect && this.props.onSelect('')));\n } else {\n this.setState({ currentDir: folder, selected: folder, path: folder, pathFocus: false }, () => this.props.onSelect && this.props.onSelect(''));\n }\n }\n\n select(id, e, cb) {\n if (typeof e === 'function') {\n cb = e;\n e = null;\n }\n e && e.stopPropagation();\n this.lastSelect = Date.now();\n window.localStorage.setItem('files.selected', id);\n this.setState({ selected: id, path: id, pathFocus: false }, () => {\n if (this.props.onSelect) {\n const ext = Utils.getFileExtension(id);\n if ((!this.props.filterFiles || this.props.filterFiles.includes(ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(ext))\n ) {\n this.props.onSelect(id);\n } else {\n this.props.onSelect('');\n }\n }\n cb && cb();\n });\n }\n\n renderFolder(item, expanded) {\n if (this.state.filterEmpty && (!this.state.folders[item.id] || !this.state.folders[item.id].length) && item.id !== USER_DATA && !item.temp) {\n return null;\n }\n const Icon = expanded ? IconOpen : IconClosed;\n const padding = this.state.viewType === TABLE ? item.level * this.levelPadding : 0;\n return (\n <div key={item.id}\n id={item.id}\n style={this.state.viewType === TABLE ? { marginLeft: padding, width: 'calc(100% - ' + padding + 'px' } : {}}\n onClick={e => this.state.viewType === TABLE ? this.select(item.id, e) : this.changeFolder(e, item.id)}\n onDoubleClick={e => this.state.viewType === TABLE && this.toggleFolder(item, e)}\n title={item.title && typeof item.title === 'object' ? item.title[this.props.lang] || item.title.end || '' : item.title || null}\n className={Utils.clsx(\n 'browserItem',\n this.props.classes['item' + this.state.viewType],\n this.props.classes['itemFolder' + this.state.viewType],\n this.state.selected === item.id && this.props.classes.itemSelected,\n item.temp && this.props.classes['itemFolderTemp'],\n )}>\n <Icon className={this.props.classes['itemFolderIcon' + this.state.viewType]} onClick={this.state.viewType === TABLE ? e => this.toggleFolder(item, e) : undefined} />\n\n <div className={Utils.clsx(this.props.classes['itemName' + this.state.viewType], this.props.classes['itemNameFolder' + this.state.viewType])}\n >{item.name === USER_DATA ? this.props.t('ra_User files') : item.name}</div>\n\n <Hidden smDown>\n {<div className={this.props.classes['itemSize' + this.state.viewType]}>{this.state.viewType === TABLE && this.state.folders[item.id] ? this.state.folders[item.id].length : ''}</div>}\n </Hidden>\n\n <Hidden smDown>\n {this.state.viewType === TABLE ? this.formatAcl(item.acl) : null}\n </Hidden>\n <Hidden smDown>\n {this.state.viewType === TABLE && this.props.expertMode && <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} />}\n </Hidden>\n {this.state.viewType === TABLE && this.props.allowDownload ? <div className={this.props.classes['itemDownloadButton' + this.state.viewType]} /> : null}\n\n {this.state.viewType === TABLE && this.props.allowDelete && this.state.folders[item.id] && this.state.folders[item.id].length && (this.state.expertMode || item.id.startsWith(USER_DATA) || item.id.startsWith('vis.0/')) ?\n <IconButton\n aria-label=\"delete\"\n onClick={e => {\n e.stopPropagation();\n if (this.suppressDeleteConfirm > Date.now()) {\n this.deleteItem(item.id);\n } else {\n this.setState({ deleteItem: item.id });\n }\n }}\n className={this.props.classes['itemDeleteButton' + this.state.viewType]}\n size=\"large\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n :\n (this.state.viewType === TABLE && this.props.allowDelete ? <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} /> : null)\n }\n </div>\n );\n }\n\n renderBackFolder() {\n return <div key={this.state.currentDir}\n id={this.state.currentDir}\n onClick={e => this.changeFolder(e)}\n title={this.props.t('re_Back to %s', getParentDir(this.state.currentDir))}\n className={Utils.clsx(\n 'browserItem',\n this.props.classes['item' + this.state.viewType],\n this.props.classes['itemFolder' + this.state.viewType],\n )}>\n <IconClosed className={this.props.classes['itemFolderIcon' + this.state.viewType]} />\n <IconBack className={this.props.classes.itemFolderIconBack} />\n\n <div\n className={Utils.clsx(this.props.classes['itemName' + this.state.viewType], this.props.classes['itemNameFolder' + this.state.viewType])}\n >..</div>\n </div>;\n }\n\n formatSize(size) {\n return <div className={this.props.classes['itemSize' + this.state.viewType]}>{size || size === 0 ? Utils.formatBytes(size) : ''}</div>;\n }\n\n formatAcl(acl) {\n let access = acl && (acl.permissions || acl.file);\n if (access) {\n access = access.toString(16).padStart(3, '0');\n }\n\n return (\n <div className={this.props.classes['itemAccess' + this.state.viewType]}> <IconButton\n onClick={() => this.setState({ modalEditOfAccess: true })}\n className={this.props.classes['itemAclButton' + this.state.viewType]}\n size=\"large\">{access || '---'}</IconButton></div>\n );\n }\n\n getFileIcon(ext) {\n switch (ext) {\n case 'json':\n return (<JsonIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'css':\n return (<CssIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'js':\n case 'ts':\n return (<JSIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'html':\n case 'md':\n return (<HtmlIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'mp3':\n case 'ogg':\n case 'wav':\n case 'm4a':\n case 'mp4':\n case 'flac':\n return (<MusicIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n default:\n return (<FileIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n }\n }\n\n getEditFile(ext) {\n switch (ext) {\n case 'json':\n case 'js':\n case 'html':\n case 'txt':\n return true;\n default:\n return false;\n }\n }\n\n setStateBackgroundImage = () => {\n let array = ['light', 'dark', 'colored', 'delete'];\n this.setState(({ backgroundImage }) => {\n if (array.indexOf(backgroundImage) !== -1 && array.length - 1 !== array.indexOf(backgroundImage)) {\n window.localStorage.setItem('files.backgroundImage', array[array.indexOf(backgroundImage) + 1]);\n return { backgroundImage: array[array.indexOf(backgroundImage) + 1] }\n } else {\n window.localStorage.setItem('files.backgroundImage', array[0]);\n return { backgroundImage: array[0] }\n }\n })\n }\n\n getClassBackgroundImage = () => {\n //['light', 'dark', 'colored', 'delete']\n switch (this.state.backgroundImage) {\n case 'light':\n return this.props.classes.backgroundImageLight;\n case 'dark':\n return this.props.classes.backgroundImageDark;\n case 'colored':\n return this.props.classes.backgroundImageColored;\n case 'delete':\n return null;\n default:\n return null;\n }\n }\n\n renderFile(item) {\n const padding = this.state.viewType === TABLE ? item.level * this.levelPadding : 0;\n const ext = Utils.getFileExtension(item.name);\n\n return (\n <div\n key={item.id}\n id={item.id}\n onDoubleClick={() => {\n if (!this.props.onSelect) {\n this.setState({ viewer: this.imagePrefix + item.id });\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n this.props.onSelect(item.id, true);\n }\n }}\n onClick={e => this.select(item.id, e)}\n style={this.state.viewType === TABLE ? { marginLeft: padding, width: 'calc(100% - ' + padding + 'px)' } : {}}\n className={Utils.clsx(\n 'browserItem',\n this.props.classes['item' + this.state.viewType],\n this.props.classes['itemFile' + this.state.viewType],\n this.state.selected === item.id && this.props.classes.itemSelected\n )}\n >\n {EXTENSIONS.images.includes(ext) ?\n <img\n onError={e => { e.target.onerror = null; e.target.src = NoImage }}\n className={Utils.clsx(this.props.classes['itemImage' + this.state.viewType], this.getClassBackgroundImage())}\n src={this.imagePrefix + item.id} alt={item.name}\n />\n :\n this.getFileIcon(ext)}\n <div className={this.props.classes['itemName' + this.state.viewType]}>{item.name}</div>\n <Hidden smDown>{this.formatSize(item.size)}</Hidden>\n <Hidden smDown>{this.state.viewType === TABLE ? this.formatAcl(item.acl) : null}</Hidden>\n <Hidden smDown>{this.state.viewType === TABLE && this.props.expertMode && this.getEditFile(ext) ?\n <IconButton\n aria-label=\"delete\"\n onClick={(e) => {\n e.stopPropagation();\n if (!this.props.onSelect) {\n this.setState({ viewer: this.imagePrefix + item.id, formatEditFile: ext });\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n this.props.onSelect(item.id, true);\n }\n }}\n className={this.props.classes['itemDeleteButton' + this.state.viewType]}\n size=\"large\">\n <EditIcon fontSize=\"small\" />\n </IconButton>\n :\n <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} />}\n </Hidden>\n {this.state.viewType === TABLE && this.props.allowDownload ? <IconButton\n download\n href={this.imagePrefix + item.id}\n className={this.props.classes['itemDownloadButton' + this.state.viewType]}\n onClick={e => e.stopPropagation()}\n size=\"large\"><DownloadIcon /></IconButton> : null}\n\n {this.state.viewType === TABLE &&\n this.props.allowDelete &&\n item.id !== 'vis.0/' &&\n item.id !== USER_DATA &&\n (this.state.expertMode || item.id.startsWith(USER_DATA) || item.id.startsWith('vis.0/'))\n ?\n <IconButton\n aria-label=\"delete\"\n onClick={e => {\n e.stopPropagation();\n if (this.suppressDeleteConfirm > Date.now()) {\n this.deleteItem(item.id);\n } else {\n this.setState({ deleteItem: item.id });\n }\n }}\n className={this.props.classes['itemDeleteButton' + this.state.viewType]}\n size=\"large\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n :\n (this.state.viewType === TABLE && this.props.allowDelete ?\n <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} />\n :\n null\n )\n }\n </div>\n );\n }\n\n renderItems(folderId) {\n if (folderId &&\n folderId !== '/' &&\n !this.state.expertMode &&\n folderId !== USER_DATA && !folderId.startsWith(USER_DATA) &&\n folderId !== 'vis.0' && !folderId.startsWith('vis.0/')\n ) {\n return null;\n }\n\n // tile\n if (this.state.folders && this.state.folders[folderId]) {\n if (this.state.viewType === TILE) {\n const res = [];\n if (folderId && folderId !== '/') {\n res.push(this.renderBackFolder())\n }\n this.state.folders[folderId].forEach(item => {\n if (!this.state.expertMode &&\n item.id !== USER_DATA && !item.id.startsWith(USER_DATA) &&\n item.id !== 'vis.0' && !item.id.startsWith('vis.0/')\n ) {\n return;\n }\n if (item.folder) {\n res.push(this.renderFolder(item));\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n res.push(this.renderFile(item));\n }\n });\n return res;\n } else {\n return this.state.folders[folderId].map(item => {\n const res = [];\n if (item.id &&\n item.id !== '/' &&\n !this.state.expertMode &&\n item.id !== USER_DATA &&\n !item.id.startsWith(USER_DATA) &&\n item.id !== 'vis.0' &&\n !item.id.startsWith('vis.0/')) {\n return null;\n }\n\n if (item.folder) {\n const expanded = this.state.expanded.includes(item.id);\n\n res.push(this.renderFolder(item, expanded));\n if (this.state.folders[item.id] && expanded) {\n res.push(this.renderItems(item.id))\n }\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n res.push(this.renderFile(item));\n } else {\n return null;\n }\n\n return res;\n });\n }\n } else {\n return <div style={{position: 'relative'}}>\n <CircularProgress key={folderId} color=\"secondary\" size={24}/>\n <div style={{position: 'absolute', zIndex: 2, top: 4, width: 24, textAlign: 'center'}} >{this.state.queueLength}</div>\n </div>;\n }\n }\n\n renderToolbar() {\n return (\n <Toolbar key=\"toolbar\" variant=\"dense\">\n {this.props.showExpertButton ? <IconButton\n edge=\"start\"\n title={this.props.t('ra_Toggle expert mode')}\n className={Utils.clsx(this.props.classes.menuButton, this.state.expertMode && this.props.classes.menuButtonExpertActive)}\n aria-label=\"expert mode\"\n onClick={() => this.setState({ expertMode: !this.state.expertMode })}\n size=\"large\"><ExpertIcon /></IconButton> : null}\n {this.props.showViewTypeButton ? <IconButton\n edge=\"start\"\n title={this.props.t('ra_Toggle view mode')}\n className={this.props.classes.menuButton}\n aria-label=\"view mode\"\n onClick={() => {\n const viewType = this.state.viewType === TABLE ? TILE : TABLE;\n window.localStorage.setItem('files.viewType', viewType);\n let currentDir = this.state.selected;\n if (isFile(currentDir)) {\n currentDir = getParentDir(currentDir)\n }\n this.setState({ viewType, currentDir }, () => {\n if (this.state.viewType === TABLE) {\n this.scrollToSelected();\n }\n });\n }}\n size=\"large\">{this.state.viewType !== TABLE ? <IconList /> : <IconTile />}</IconButton> : null}\n <IconButton\n edge=\"start\"\n title={this.props.t('ra_Hide empty folders')}\n className={this.props.classes.menuButton}\n color={this.state.filterEmpty ? 'secondary' : 'inherit'}\n aria-label=\"filter empty\"\n onClick={() => {\n window.localStorage.setItem('file.empty', !this.state.filterEmpty);\n this.setState({ filterEmpty: !this.state.filterEmpty });\n }}\n size=\"large\"><EmptyFilterIcon /></IconButton>\n <IconButton\n edge=\"start\"\n title={this.props.t('ra_Reload files')}\n className={this.props.classes.menuButton}\n color={'inherit'}\n aria-label=\"reload files\"\n onClick={() => this.setState({ folders: {} }, () => this.loadFolders())}\n size=\"large\"><RefreshIcon /></IconButton>\n {this.props.allowCreateFolder ? <IconButton\n edge=\"start\"\n disabled={this.state.expertMode ? !this.state.selected : !this.state.selected.startsWith('vis.0') && !this.state.selected.startsWith(USER_DATA)}\n title={this.props.t('ra_Create folder')}\n className={this.props.classes.menuButton}\n color={'inherit'}\n aria-label=\"add folder\"\n onClick={() => this.setState({ addFolder: true })}\n size=\"large\"><AddFolderIcon /></IconButton> : null}\n {this.props.allowUpload ? <IconButton\n edge=\"start\"\n disabled={this.state.expertMode ? !this.state.selected : !this.state.selected.startsWith('vis.0') && !this.state.selected.startsWith(USER_DATA)}\n title={this.props.t('ra_Upload file')}\n className={this.props.classes.menuButton}\n color={'inherit'}\n aria-label=\"upload file\"\n onClick={() =>\n this.setState({uploadFile: true})}\n size=\"large\"><UploadIcon /></IconButton> : null}\n <Tooltip title={this.props.t('Background image')}>\n <IconButton\n color={'inherit'}\n edge=\"start\"\n className={this.props.classes.menuButton}\n onClick={this.setStateBackgroundImage}\n size=\"large\">\n <Brightness5Icon />\n </IconButton>\n </Tooltip>\n </Toolbar>\n );\n }\n\n findItem(id, folders) {\n folders = folders || this.state.folders;\n if (!folders) {\n return null;\n }\n const parts = id.split('/');\n parts.pop();\n const parentFolder = parts.join('/') || '/';\n if (!folders[parentFolder]) {\n return null;\n }\n return folders[parentFolder].find(item => item.id === id);\n }\n\n renderInputDialog() {\n if (this.state.addFolder) {\n let parentFolder = this.findFirstFolder(this.state.selected);\n\n if (!parentFolder) {\n return window.alert(this.props.t('ra_Invalid parent folder!'));\n }\n\n return (\n <TextInputDialog\n key=\"inputDialog\"\n applyText={this.props.t('ra_Create')}\n cancelText={this.props.t('ra_Cancel')}\n titleText={this.props.t('ra_Create new folder in %s', this.state.selected)}\n promptText={this.props.t('ra_If no file will be created in the folder, it will disappear after the browser closed')}\n labelText={this.props.t('ra_Folder name')}\n verify={text => this.state.folders[parentFolder].find(item => item.name === text) ? '' : this.props.t('ra_Duplicate name')}\n onClose={name => {\n if (name) {\n const folders = {};\n Object.keys(this.state.folders).forEach(folder => folders[folder] = this.state.folders[folder]);\n const parent = this.findItem(parentFolder);\n const id = parentFolder + '/' + name;\n folders[parentFolder].push({\n id: id,\n level: parent.level + 1,\n name,\n folder: true,\n temp: true,\n });\n\n folders[parentFolder].sort(sortFolders);\n\n folders[id] = [];\n const expanded = [...this.state.expanded];\n if (!expanded.includes(parentFolder)) {\n expanded.push(parentFolder);\n expanded.sort();\n }\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ addFolder: false, folders, expanded }, () =>\n this.select(id));\n } else {\n this.setState({ addFolder: false });\n }\n }}\n replace={text => text.replace(/[^-_\\w\\d]/, '_')}\n />\n );\n } else {\n return null;\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.setOpacityTimer && clearTimeout(this.setOpacityTimer);\n this.setOpacityTimer = setTimeout(() => {\n this.setOpacityTimer = null;\n const items = window.document.getElementsByClassName('browserItem');\n for (let i = 0; i < items.length; i++) {\n items[i].style.opacity = 1;\n }\n }, 100);\n }\n\n uploadFile(fileName, data) {\n const parts = fileName.split('/');\n const adapter = parts.shift();\n return this.props.socket.writeFile64(adapter, parts.join('/'), data)\n .catch(e => window.alert('Cannot write file: ' + e));\n }\n\n findFirstFolder(id) {\n let parentFolder = id;\n let item = this.findItem(parentFolder);\n // find folder\n if (item && !item.folder) {\n const parts = parentFolder.split('/');\n parts.pop();\n parentFolder = '';\n while (parts.length) {\n const item = this.findItem(parts.join('/'));\n if (item && item.folder) {\n parentFolder = parts.join('/');\n break;\n }\n }\n }\n\n return parentFolder;\n }\n\n renderUpload() {\n if (this.state.uploadFile) {\n return [\n <Fab key=\"close\" color=\"primary\" aria-label=\"close\" className={this.props.classes.uploadCloseButton}\n onClick={() => this.setState({ uploadFile: false })}>\n <CloseIcon />\n </Fab>,\n <Dropzone\n key=\"dropzone\"\n onDragEnter={() => this.setState({ uploadFile: 'dragging' })}\n onDragLeave={() => this.setState({ uploadFile: true })}\n onDrop={acceptedFiles => {\n let count = acceptedFiles.length;\n acceptedFiles.forEach(file => {\n const reader = new FileReader();\n\n reader.onabort = () => console.log('file reading was aborted');\n reader.onerror = () => console.log('file reading has failed');\n reader.onload = () => {\n let parentFolder = this.findFirstFolder(this.state.selected);\n\n if (!parentFolder) {\n return window.alert(this.props.t('ra_Invalid parent folder!'));\n }\n const id = parentFolder + '/' + file.name;\n this.uploadFile(id, reader.result)\n .then(() => {\n if (!--count) {\n const folders = {};\n Object.keys(this.state.folders).forEach(name => {\n if (name !== parentFolder && !name.startsWith(parentFolder + '/')) {\n folders[name] = this.state.folders[name];\n }\n });\n this.setState({ uploadFile: false, folders }, () =>\n this.browseFolders([...this.state.expanded], folders)\n .then(folders => {\n // open current folder\n const expanded = [...this.state.expanded];\n if (!expanded.includes(parentFolder)) {\n expanded.push(parentFolder);\n expanded.sort();\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n }\n this.setState({ folders, expanded }, () =>\n this.select(id))\n }));\n }\n });\n };\n\n reader.readAsArrayBuffer(file);\n });\n }}\n >\n {({ getRootProps, getInputProps }) => (\n <div className={Utils.clsx(this.props.classes.uploadDiv, this.state.uploadFile === 'dragging' && this.props.classes.uploadDivDragging)}\n {...getRootProps()}>\n <input {...getInputProps()} />\n <div className={this.props.classes.uploadCenterDiv}>\n <div className={this.props.classes.uploadCenterTextAndIcon}>\n <UploadIcon className={this.props.classes.uploadCenterIcon} />\n <div className={this.props.classes.uploadCenterText}>{\n this.state.uploadFile === 'dragging' ? this.props.t('ra_Drop file here') :\n this.props.t('ra_Place your files here or click here to open the browse dialog')}</div>\n </div>\n </div>\n </div>)}\n </Dropzone>\n ];\n } else {\n return null;\n }\n }\n\n deleteRecursive(id) {\n const item = this.findItem(id);\n if (item.folder) {\n return (this.state.folders[id] ? Promise.all(this.state.folders[id].map(item =>\n this.deleteRecursive(item.id))) : Promise.resolve())\n .then(() => {\n // If it is folder of second level\n if (item.level >= 1) {\n const parts = id.split('/');\n const adapter = parts.shift();\n this.props.socket.deleteFolder(adapter, parts.join('/'))\n .then(() => {\n // remove this folder\n const folders = JSON.parse(JSON.stringify(this.state.folders));\n delete folders[item.id];\n // delete folder from parent item\n const parentId = getParentDir(item.id);\n const parentFolder = folders[parentId];\n if (parentFolder) {\n const pos = parentFolder.indexOf(parentFolder.find(f => f.id === item.id));\n if (pos !== -1) {\n parentFolder.splice(pos, 1);\n }\n\n this.select(parentId, () =>\n this.setState({folders}));\n }\n });\n }\n });\n } else {\n const parts = id.split('/');\n const adapter = parts.shift();\n if (parts.length) {\n return this.props.socket.deleteFile(adapter, parts.join('/'))\n .catch(e => window.alert('Cannot delete file: ' + e));\n } else {\n return Promise.resolve();\n }\n }\n }\n\n deleteItem(deleteItem) {\n deleteItem = deleteItem || this.state.deleteItem;\n\n this.setState({ deleteItem: '' }, () =>\n this.deleteRecursive(deleteItem)\n .then(() => {\n const pos = this.state.expanded.indexOf(deleteItem);\n if (pos !== -1) {\n const expanded = [...this.state.expanded];\n expanded.splice(pos, 1);\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ expanded });\n }\n /*let parentFolder = this.findFirstFolder(deleteItem);\n const folders = {};\n Object.keys(this.state.folders).forEach(name => {\n if (name !== parentFolder && !name.startsWith(parentFolder + '/')) {\n folders[name] = this.state.folders[name];\n }\n });\n this.setState({ folders }, () =>\n this.browseFolders([...this.state.expanded], folders)\n .then(folders => this.setState({ folders })));*/\n })\n );\n }\n\n renderDeleteDialog() {\n if (this.state.deleteItem) {\n return <Dialog key=\"deleteDialog\" open={true} onClose={() => this.setState({ deleteItem: '' })} aria-labelledby=\"form-dialog-title\">\n <DialogTitle id=\"form-dialog-title\">{this.props.t('ra_Confirm deletion of %s', this.state.deleteItem.split('/').pop())}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {this.props.t('ra_Are you sure?')}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button color=\"grey\" variant=\"contained\" onClick={() => {\n this.suppressDeleteConfirm = Date.now() + 60000 * 5;\n this.deleteItem();\n }} >{this.props.t('ra_Delete (no confirm for 5 mins)')}</Button>\n <Button variant=\"contained\" onClick={() => this.deleteItem()} color=\"primary\" autoFocus>{this.props.t('ra_Delete')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.setState({ deleteItem: '' })} >{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n } else {\n return false;\n }\n }\n\n renderViewDialog() {\n return this.state.viewer ? <FileViewer\n key={this.state.viewer}\n href={this.state.viewer}\n formatEditFile={this.state.formatEditFile}\n themeName={this.props.themeName}\n setStateBackgroundImage={this.setStateBackgroundImage}\n getClassBackgroundImage={this.getClassBackgroundImage}\n t={this.props.t}\n socket={this.props.socket}\n lang={this.props.lang}\n expertMode={this.state.expertMode}\n onClose={() => this.setState({ viewer: '', formatEditFile: '' })}\n /> : null;\n }\n\n renderError() {\n if (this.state.errorText) {\n return <ErrorDialog key=\"errorDialog\" text={this.state.errorText} onClose={() => this.setState({ errorText: '' })} />;\n } else {\n return null;\n }\n }\n\n updateItemsAcl(info) {\n const folders = JSON.parse(JSON.stringify(this.state.folders));\n let changed;\n info.forEach(it => {\n const item = this.findItem(it.id, folders);\n if (item && JSON.stringify(item.acl) !== JSON.stringify(it.acl)) {\n item.acl = it.acl;\n changed = true;\n }\n });\n changed && this.setState({ folders });\n }\n\n changeToPath() {\n setTimeout(() => {\n if (this.state.path !== this.state.selected && (!this.lastSelect || Date.now() - this.lastSelect > 100)) {\n let folder = this.state.path;\n if (isFile(this.state.path)) {\n folder = getParentDir(this.state.path);\n }\n return new Promise(resolve => {\n if (!this.state.folders[folder]) {\n return this.browseFolder(folder)\n .then(folders => this.setState({ folders }, () => resolve(true)))\n .catch(err => this.setState({ errorText: err === NOT_FOUND ? this.props.t('re_Cannot find \"%s\"', folder) : this.props.t('re_Cannot read \"%s\"', folder) }));\n } else {\n return resolve(true);\n }\n })\n .then(result =>\n result && this.setState({ selected: this.state.path, currentDir: folder, pathFocus: false }));\n } else if (!this.lastSelect || Date.now() - this.lastSelect > 100) {\n this.setState({ pathFocus: false });\n }\n }, 100);\n }\n\n renderBreadcrumb() {\n const parts = this.state.selected.startsWith('/') ? this.state.selected.split('/') : ('/' + this.state.selected).split('/');\n const p = [];\n return parts.map((part, i) => {\n part && p.push(part);\n const path = p.join('/');\n if (i < parts.length - 1) {\n return [\n <div key={this.state.selected + '_' + i} className={this.props.classes.pathDivBreadcrumbDir} onClick={e => this.changeFolder(e, path || '/')}>\n {part || this.props.t('re_Root')}\n </div>,\n <span key={this.state.selected + '_s_' + i} className={this.props.classes.pathDivBreadcrumbSlash}>{'>'}</span>];\n } else {\n return <div key={this.state.selected + '_' + i} className={this.props.classes.pathDivBreadcrumbFile} onClick={() => this.setState({ pathFocus: true })}>{part}</div>;\n }\n });\n }\n\n renderPath() {\n return <div key=\"path\" className={Utils.clsx(this.props.classes.pathDiv, !this.state.pathFocus && this.props.classes.pathDivBreadcrumb)}>\n {this.state.pathFocus ?\n <Input\n value={this.state.path}\n onKeyDown={e => e.keyCode === 13 && this.changeToPath()}\n onBlur={e => this.changeToPath()}\n onChange={e => this.setState({ path: e.target.value })}\n className={this.props.classes.pathDivInput}\n />\n :\n this.renderBreadcrumb()\n }\n </div>;\n }\n\n render() {\n if (!this.props.ready) {\n return <LinearProgress key={this.props.key ? this.props.key + '_c' : 'c'} />;\n }\n\n if (this.state.loadAllFolders && !this.foldersLoading) {\n this.foldersLoading = true;\n setTimeout(() => {\n this.setState({loadAllFolders: false, folders: {}}, () => {\n this.foldersLoading = false;\n this.loadFolders();\n });\n }, 300);\n }\n\n\n return <div style={this.props.style} className={Utils.clsx(this.props.classes.root, this.props.className)}>\n {this.props.showToolbar ? this.renderToolbar() : null}\n {this.state.viewType === TILE ? this.renderPath() : null}\n <div className={Utils.clsx(this.props.classes.filesDiv, this.props.classes['filesDiv' + this.state.viewType])}>\n {this.state.viewType === TABLE ? this.renderItems('/') : this.renderItems(this.state.currentDir || '/')}\n </div>\n {this.props.allowUpload ? this.renderInputDialog() : null}\n {this.props.allowUpload ? this.renderUpload() : null}\n {this.props.allowDelete ? this.renderDeleteDialog() : null}\n {this.props.allowView ? this.renderViewDialog() : null}\n {this.state.modalEditOfAccess && this.props.modalEditOfAccessControl && this.props.modalEditOfAccessControl(this, this.state.modalEditOfAccessObjData)}\n {this.renderError()}\n </div>;\n }\n}\n\nFileBrowser.defaultProps = {\n objectAddBoolean: false,\n objectEditBoolean: false,\n objectStatesView: false,\n objectImportExport: false,\n objectEditOfAccessControl: false,\n modalNewObject: () => { },\n modalEditOfAccessControl: () => { },\n}\n\nFileBrowser.propTypes = {\n style: PropTypes.object,\n className: PropTypes.string,\n t: PropTypes.func,\n lang: PropTypes.string,\n socket: PropTypes.object,\n ready: PropTypes.bool,\n expertMode: PropTypes.bool,\n showToolbar: PropTypes.bool,\n allowUpload: PropTypes.bool,\n allowDownload: PropTypes.bool,\n allowCreateFolder: PropTypes.bool,\n allowDelete: PropTypes.bool,\n allowView: PropTypes.bool,\n imagePrefix: PropTypes.string,\n showExpertButton: PropTypes.bool,\n viewType: PropTypes.string,\n showViewTypeButton: PropTypes.bool,\n\n selected: PropTypes.string,\n tileView: PropTypes.bool,\n filterFiles: PropTypes.array, // like ['png', 'svg', 'bmp', 'jpg', 'jpeg']\n filterByType: PropTypes.string, // images, code or txt from FileViewer.EXTENSIONS\n onSelect: PropTypes.func, // function (id, isDoubleClick)\n};\n\n/** @type {typeof FileBrowser} */\nconst _export = withWidth()(withStyles(styles)(FileBrowser));\nexport default _export;"],"file":"FileBrowser.js"}
|
|
1
|
+
{"version":3,"sources":["FileBrowser.js"],"names":["withWidth","WrappedComponent","props","ROW_HEIGHT","BUTTON_WIDTH","TILE_HEIGHT","TILE_WIDTH","NOT_FOUND","styles","theme","dialog","height","mixins","toolbar","minHeight","root","width","overflow","position","filesDiv","spacing","overflowX","overflowY","padding","filesDivTable","filesDivTile","display","alignContent","alignItems","flexWrap","flex","itemTile","userSelect","cursor","textAlign","opacity","transition","margin","background","palette","secondary","light","color","Utils","invertColor","main","itemNameFolderTile","fontWeight","itemNameTile","textOverflow","fontSize","wordBreak","itemFolderIconTile","paddingLeft","itemFolderIconBack","top","left","zIndex","mode","itemSizeTile","itemImageTile","objectFit","itemIconTile","itemSelected","primary","itemTable","lineHeight","itemNameTable","verticalAlign","flexGrow","itemNameFolderTable","itemSizeTable","itemAccessTable","paddingRight","justifyContent","itemImageTable","marginTop","maxHeight","itemIconTable","itemFolderTable","itemFolderTemp","itemFolderIconTable","marginLeft","itemDownloadButtonTable","minWidth","paddingTop","itemAclButtonTable","itemDeleteButtonTable","uploadDiv","bottom","right","uploadDivDragging","uploadCenterDiv","border","borderRadius","uploadCenterIcon","uploadCenterText","uploadCloseButton","uploadCenterTextAndIcon","menuButtonExpertActive","pathDiv","marginRight","whiteSpace","pathDivInput","pathDivBreadcrumb","paddingBottom","borderBottom","pathDivBreadcrumbDir","pathDivBreadcrumbSlash","pathDivBreadcrumbFile","backgroundImageLight","backgroundImageDark","backgroundImageColored","direction","USER_DATA","sortFolders","a","b","folder","name","getParentDir","dir","parts","split","length","pop","join","isFile","path","ext","getFileExtension","toLowerCase","match","TABLE","TILE","FileBrowser","array","setState","backgroundImage","indexOf","window","localStorage","setItem","state","classes","expanded","getItem","JSON","parse","e","viewType","showViewTypeButton","selected","currentDir","folders","filterEmpty","expertMode","addFolder","uploadFile","deleteItem","marked","viewer","formatEditFile","errorText","modalEditOfAccess","queueLength","loadAllFolders","allFoldersLoaded","imagePrefix","levelPadding","mounted","suppressDeleteConfirm","browseList","browseListRunning","initialReadFinished","browseFolder","then","browseFolders","Promise","resolve","findItem","pathFocus","scrollToSelected","el","document","getElementById","scrollIntoView","loadFolders","foldersList","_newFolders","_resolve","Object","keys","forEach","shift","setTimeout","adapter","relPath","reject","push","processBrowseList","level","processing","socket","readDir","files","item","folderId","_checkEmpty","all","filter","map","id","error","readMetaItems","objs","_folders","userData","obj","_id","title","common","meta","from","ts","icon","acl","sort","unshift","alert","readDirSerial","file","isDir","size","stats","modified","modifiedAt","stopPropagation","pos","stringify","temp","err","t","splice","lastSelect","Date","now","onSelect","cb","filterFiles","includes","filterByType","EXTENSIONS","Icon","IconOpen","IconClosed","select","changeFolder","toggleFolder","lang","end","clsx","undefined","formatAcl","allowDownload","allowDelete","startsWith","formatBytes","access","permissions","toString","padStart","images","target","onerror","src","NoImage","getClassBackgroundImage","getFileIcon","formatSize","getEditFile","res","renderBackFolder","renderFolder","renderFile","renderItems","showExpertButton","menuButton","allowCreateFolder","allowUpload","setStateBackgroundImage","parentFolder","find","findFirstFolder","text","parent","replace","prevProps","prevState","snapshot","setOpacityTimer","clearTimeout","items","getElementsByClassName","i","style","fileName","data","writeFile64","acceptedFiles","count","reader","FileReader","onabort","console","log","onload","result","readAsArrayBuffer","getRootProps","getInputProps","deleteRecursive","deleteFolder","parentId","f","deleteFile","themeName","info","changed","it","p","part","keyCode","changeToPath","value","renderBreadcrumb","ready","key","foldersLoading","className","showToolbar","renderToolbar","renderPath","renderInputDialog","renderUpload","renderDeleteDialog","allowView","renderViewDialog","modalEditOfAccessControl","modalEditOfAccessObjData","renderError","Component","defaultProps","objectAddBoolean","objectEditBoolean","objectStatesView","objectImportExport","objectEditOfAccessControl","modalNewObject","propTypes","PropTypes","object","string","func","isRequired","bool","tileView","_export"],"mappings":"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","sourcesContent":["import withStyles from '@mui/styles/withStyles';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Dropzone from 'react-dropzone'\n\nimport LinearProgress from '@mui/material/LinearProgress';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Toolbar from '@mui/material/Toolbar';\nimport IconButton from '@mui/material/IconButton';\nimport Fab from '@mui/material/Fab';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Input from '@mui/material/Input';\nimport { Hidden, Tooltip } from '@mui/material';\n\nimport ErrorDialog from '../Dialogs/Error';\nimport Utils from './Utils';\nimport TextInputDialog from '../Dialogs/TextInput';\nimport { EXTENSIONS } from './FileViewer';\nimport FileViewer from './FileViewer';\n//import FileViewer from '@iobroker/adapter-react/Components/FileViewer';\n\n// Icons\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport CloseIcon from '@mui/icons-material/Close';\nimport JsonIcon from '@mui/icons-material/Bookmark';\nimport CssIcon from '@mui/icons-material/BookmarkBorder';\nimport HtmlIcon from '@mui/icons-material/Description';\nimport EditIcon from '@mui/icons-material/Edit';\nimport JSIcon from '@mui/icons-material/Code';\nimport FileIcon from '@mui/icons-material/InsertDriveFile';\nimport UploadIcon from '@mui/icons-material/Publish';\nimport MusicIcon from '@mui/icons-material/MusicNote';\nimport DownloadIcon from '@mui/icons-material/SaveAlt';\nimport AddFolderIcon from '@mui/icons-material/CreateNewFolder';\nimport EmptyFilterIcon from '@mui/icons-material/FolderOpen';\nimport IconList from '@mui/icons-material/List';\nimport IconTile from '@mui/icons-material/ViewModule';\nimport IconBack from '@mui/icons-material/ArrowBack';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Brightness5Icon from '@mui/icons-material/Brightness6';\n\nimport ExpertIcon from '../icons/IconExpert';\nimport NoImage from '../assets/no_icon.svg';\nimport IconClosed from '../icons/IconClosed';\nimport IconOpen from '../icons/IconOpen';\n\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nconst withWidth = () => (WrappedComponent) => (props) => <WrappedComponent {...props} width=\"xs\" />;\n\nconst ROW_HEIGHT = 32;\nconst BUTTON_WIDTH = 32;\nconst TILE_HEIGHT = 120;\nconst TILE_WIDTH = 64;\n\nconst NOT_FOUND = 'Not found';\n\nconst styles = theme => ({\n dialog: {\n height: `calc(100% - ${theme.mixins.toolbar.minHeight}px)`,\n },\n root: {\n width: '100%',\n overflow: 'hidden',\n height: '100%',\n position: 'relative',\n },\n filesDiv: {\n width: `calc(100% - ${theme.spacing(2)})`,\n overflowX: 'hidden',\n overflowY: 'auto',\n padding: theme.spacing(1),\n },\n filesDivTable: {\n height: `calc(100% - ${48 + theme.spacing(1)}px)`,\n },\n filesDivTile: {\n height: `calc(100% - ${48 * 2 + theme.spacing(1)}px)`,\n display: 'flex',\n alignContent: 'flex-start',\n alignItems: 'stretch',\n flexWrap: 'wrap',\n flex: `0 0 ${TILE_WIDTH}px`,\n },\n\n itemTile: {\n position: 'relative',\n userSelect: 'none',\n cursor: 'pointer',\n height: TILE_HEIGHT,\n width: TILE_WIDTH,\n display: 'inline-block',\n textAlign: 'center',\n opacity: 0.1,\n transition: 'opacity 1s',\n margin: 4,\n '&:hover': {\n background: theme.palette.secondary.light,\n color: Utils.invertColor(theme.palette.secondary.main, true),\n }\n },\n itemNameFolderTile: {\n fontWeight: 'bold',\n },\n itemNameTile: {\n width: '100%',\n height: 32,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: 12,\n textAlign: 'center',\n wordBreak: 'break-all',\n },\n itemFolderIconTile: {\n width: '100%',\n height: TILE_HEIGHT - 32 - 16 - 8, // name + size\n display: 'block',\n paddingLeft: 8,\n color: theme.palette.secondary.main || '#fbff7d',\n },\n itemFolderIconBack: {\n position: 'absolute',\n top: 22,\n left: 18,\n zIndex: 1,\n color: theme.palette.mode === 'dark' ? '#FFF' : '#000',\n },\n itemSizeTile: {\n width: '100%',\n height: 16,\n textAlign: 'center',\n fontSize: 10,\n },\n itemImageTile: {\n width: 'calc(100% - 8px)',\n height: TILE_HEIGHT - 32 - 16 - 8, // name + size\n margin: 4,\n display: 'block',\n textAlign: 'center',\n objectFit: 'contain',\n },\n itemIconTile: {\n width: '100%',\n height: TILE_HEIGHT - 32 - 16 - 8, // name + size\n display: 'block',\n objectFit: 'contain',\n },\n\n itemSelected: {\n background: theme.palette.primary.main,\n color: Utils.invertColor(theme.palette.primary.main, true),\n },\n\n itemTable: {\n userSelect: 'none',\n cursor: 'pointer',\n height: ROW_HEIGHT,\n display: 'inline-flex',\n lineHeight: ROW_HEIGHT + 'px',\n '&:hover': {\n background: theme.palette.secondary.light,\n color: Utils.invertColor(theme.palette.secondary.main, true),\n }\n },\n itemNameTable: {\n display: 'inline-block',\n paddingLeft: 10,\n fontSize: '1rem',\n verticalAlign: 'top',\n flexGrow: 1,\n },\n itemNameFolderTable: {\n fontWeight: 'bold',\n },\n itemSizeTable: {\n display: 'inline-block',\n width: 60,\n verticalAlign: 'top',\n textAlign: 'right'\n },\n itemAccessTable: {\n // display: 'inline-block',\n verticalAlign: 'top',\n width: 60,\n textAlign: 'right',\n paddingRight: 5,\n display: 'flex',\n justifyContent: 'center'\n },\n itemImageTable: {\n display: 'inline-block',\n width: 30,\n marginTop: 1,\n objectFit: 'contain',\n maxHeight: 30,\n },\n itemIconTable: {\n display: 'inline-block',\n marginTop: 1,\n width: 30,\n height: 30,\n },\n itemFolderTable: {\n\n },\n itemFolderTemp: {\n opacity: 0.4\n },\n itemFolderIconTable: {\n marginTop: 1,\n marginLeft: theme.spacing(1),\n display: 'inline-block',\n width: 30,\n height: 30,\n color: theme.palette.secondary.main || '#fbff7d',\n },\n itemDownloadButtonTable: {\n display: 'inline-block',\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n '& span': {\n paddingTop: 9\n },\n '& svg': {\n width: 14,\n height: 14,\n fontSize: '1rem'\n }\n },\n itemAclButtonTable: {\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth:BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n fontSize: 12,\n display: 'flex'\n },\n itemDeleteButtonTable: {\n display: 'inline-block',\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n '& svg': {\n width: 18,\n height: 18,\n fontSize: '1.5rem'\n }\n },\n\n uploadDiv: {\n top: 0,\n zIndex: 1,\n bottom: 0,\n left: 0,\n right: 0,\n position: 'absolute',\n opacity: 0.9,\n textAlign: 'center',\n background: '#FFFFFF',\n },\n uploadDivDragging: {\n opacity: 1,\n },\n\n uploadCenterDiv: {\n margin: 20,\n border: '3px dashed grey',\n borderRadius: 30,\n width: 'calc(100% - 40px)',\n height: 'calc(100% - 40px)',\n position: 'relative',\n color: theme.palette.mode === 'dark' ? '#222' : '#CCC'\n },\n uploadCenterIcon: {\n width: '25%',\n height: '25%',\n },\n uploadCenterText: {\n fontSize: 24,\n fontWeight: 'bold',\n },\n uploadCloseButton: {\n zIndex: 2,\n position: 'absolute',\n top: 30,\n right: 30,\n },\n uploadCenterTextAndIcon: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n height: '30%',\n width: '50%',\n margin: '-15% 0 0 -25%',\n },\n menuButtonExpertActive: {\n color: '#c00000',\n },\n pathDiv: {\n display: 'flex',\n width: `calc(100% - ${theme.spacing(2)})`,\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n textOverflow: 'clip',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n pathDivInput: {\n width: '100%',\n },\n pathDivBreadcrumb: {\n paddingTop: 3,\n paddingBottom: 2,\n borderBottom: 'solid 1px',\n },\n pathDivBreadcrumbDir: {\n paddingLeft: 4,\n paddingRight: 4,\n paddingBottom: 4,\n cursor: 'pointer',\n '&:hover': {\n background: theme.palette.mode === 'dark' ? '#333' : '#CCC',\n },\n },\n pathDivBreadcrumbSlash: {\n paddingLeft: 4,\n paddingRight: 4,\n paddingBottom: 4,\n opacity: 0.7,\n },\n pathDivBreadcrumbFile: {\n cursor: 'pointer',\n flexGrow: 1,\n },\n backgroundImageLight: {\n background: 'white'\n },\n backgroundImageDark: {\n background: 'black'\n },\n backgroundImageColored: {\n background: 'silver'\n },\n '@media screen and (max-width: 500px)': {\n itemNameTable: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'end',\n direction: 'rtl'\n }\n },\n});\n\nconst USER_DATA = '0_userdata.0';\n\nfunction sortFolders(a, b) {\n if (a.folder && b.folder) {\n return a.name > b.name ? 1 : (a.name < b.name ? -1 : 0);\n } else if (a.folder) {\n return -1;\n } else if (b.folder) {\n return 1;\n } else {\n return a.name > b.name ? 1 : (a.name < b.name ? -1 : 0)\n }\n}\n\nfunction getParentDir(dir) {\n const parts = (dir || '').split('/');\n parts.length && parts.pop();\n return parts.join('/');\n}\n\nfunction isFile(path) {\n let ext = Utils.getFileExtension(path);\n if (ext && ext.toLowerCase().match(/[a-z]+/) && ext.length < 5) {\n return true;\n } else {\n return false;\n }\n}\n\nconst TABLE = 'Table';\nconst TILE = 'Tile';\n\n/**\n * @extends {React.Component<import('./types').FileBrowserProps>}\n */\nclass FileBrowser extends Component {\n /**\n * @param {Readonly<import(\"./types\").FileBrowserProps>} props\n */\n constructor(props) {\n super(props);\n let expanded = window.localStorage.getItem('files.expanded') || '[]';\n\n try {\n expanded = JSON.parse(expanded);\n } catch (e) {\n expanded = [];\n }\n\n let viewType;\n if (this.props.showViewTypeButton) {\n viewType = window.localStorage.getItem('files.viewType') || TABLE;\n } else {\n viewType = TABLE;\n }\n\n let selected = this.props.selected || window.localStorage.getItem('files.selected') || USER_DATA;\n let currentDir = '';\n if (isFile(selected)) {\n currentDir = getParentDir(selected);\n } else {\n currentDir = selected;\n }\n let backgroundImage = window.localStorage.getItem('files.backgroundImage') || null;\n\n this.state = {\n viewType,\n folders: {},\n filterEmpty: window.localStorage.getItem('files.empty') !== 'false',\n expanded,\n currentDir,\n expertMode: this.props.expertMode,\n addFolder: false,\n uploadFile: false,\n deleteItem: '',\n marked: [],\n viewer: '',\n formatEditFile: '',\n path: selected,\n selected,\n errorText: '',\n modalEditOfAccess: false,\n backgroundImage,\n queueLength: 0,\n loadAllFolders: false,\n allFoldersLoaded: false,\n };\n\n this.imagePrefix = this.props.imagePrefix || './files/';\n\n this.levelPadding = this.props.levelPadding || 20;\n this.mounted = true;\n this.suppressDeleteConfirm = 0;\n\n this.browseList = [];\n this.browseListRunning = false;\n this.initialReadFinished = false;\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.expertMode !== undefined && props.expertMode !== state.expertMode) {\n return { expertMode: props.expertMode, loadAllFolders: !state.allFoldersLoaded && props.expertMode };\n } else {\n return null;\n }\n }\n\n loadFolders() {\n this.initialReadFinished = false;\n return this.browseFolder('/')\n .then(folders => {\n return this.state.viewType === TABLE ?\n this.browseFolders([...this.state.expanded], folders)\n :\n (this.state.currentDir && this.state.currentDir !== '/' ? this.browseFolder(this.state.currentDir, folders) : Promise.resolve(folders))\n })\n .then(folders => this.setState({ folders }, () => {\n if (this.state.viewType === TABLE && !this.findItem(this.state.selected)) {\n const parts = this.state.selected.split('/');\n while (parts.length && !this.findItem(parts.join('/'))) {\n parts.pop();\n }\n let selected;\n if (parts.length) {\n selected = parts.join('/');\n } else {\n selected = USER_DATA;\n }\n this.setState({ selected, path: selected, pathFocus: false }, () => this.scrollToSelected());\n } else {\n this.scrollToSelected();\n }\n this.initialReadFinished = true;\n }))\n }\n\n scrollToSelected() {\n if (this.mounted) {\n const el = document.getElementById(this.state.selected);\n el && el.scrollIntoView();\n }\n }\n\n componentDidMount() {\n this.mounted = true;\n this.loadFolders();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n this.browseList = null;\n this.browseListRunning = false;\n }\n\n browseFolders(foldersList, _newFolders, _resolve) {\n if (!_newFolders) {\n _newFolders = {};\n Object.keys(this.state.folders).forEach(folder => _newFolders[folder] = this.state.folders[folder]);\n }\n\n if (!_resolve) {\n return new Promise(resolve => this.browseFolders(foldersList, _newFolders, resolve));\n }\n\n if (!foldersList || !foldersList.length) {\n _resolve(_newFolders);\n } else {\n this.browseFolder(foldersList.shift(), _newFolders)\n .then(() => setTimeout(() => this.browseFolders(foldersList, _newFolders, _resolve), 0))\n .catch(() => setTimeout(() => this.browseFolders(foldersList, _newFolders, _resolve), 0))\n }\n }\n\n readDirSerial(adapter, relPath) {\n return new Promise((resolve, reject) => {\n if (this.browseList) { // if component still mounted\n this.browseList.push({resolve, reject, adapter, relPath});\n !this.browseListRunning && this.processBrowseList();\n }\n });\n }\n\n processBrowseList(level) {\n if (!this.browseListRunning && this.browseList && this.browseList.length) {\n this.browseListRunning = true;\n if (this.browseList.length > 10) {\n // not too often\n if (!(this.browseList.length % 10)) {\n this.setState({queueLength: this.browseList.length});\n }\n } else {\n this.setState({queueLength: this.browseList.length});\n }\n\n this.browseList[0].processing = true;\n this.props.socket.readDir(this.browseList[0].adapter, this.browseList[0].relPath)\n .then(files => {\n if (this.browseList) { // if component still mounted\n const item = this.browseList.shift();\n if (item) {\n const resolve = item.resolve;\n item.resolve = null;\n item.reject = null;\n item.adapter = null;\n item.relPath = null;\n resolve(files);\n this.browseListRunning = false;\n if (this.browseList.length) {\n if (level < 5) {\n this.processBrowseList(level + 1);\n } else {\n setTimeout(() => this.processBrowseList(0), 0);\n }\n } else {\n this.setState({queueLength: 0});\n }\n } else {\n this.setState({queueLength: 0});\n }\n }\n\n })\n .catch(e => {\n if (this.browseList) { // if component still mounted\n const item = this.browseList.shift();\n if (item) {\n const reject = item.reject;\n item.resolve = null;\n item.reject = null;\n item.adapter = null;\n item.relPath = null;\n reject(e);\n this.browseListRunning = false;\n if (this.browseList.length) {\n if (level < 5) {\n this.processBrowseList(level + 1);\n } else {\n setTimeout(() => this.processBrowseList(0), 0);\n }\n } else {\n this.setState({queueLength: 0});\n }\n } else {\n this.setState({queueLength: 0});\n }\n }\n });\n }\n }\n\n browseFolder(folderId, _newFolders, _checkEmpty) {\n if (!_newFolders) {\n _newFolders = {};\n Object.keys(this.state.folders).forEach(folder =>\n _newFolders[folder] = this.state.folders[folder]);\n }\n\n if (_newFolders[folderId]) {\n if (!_checkEmpty) {\n return new Promise((resolve, reject) =>\n Promise.all(_newFolders[folderId].filter(item => item.folder).map(item =>\n this.browseFolder(item.id, _newFolders, true)\n .catch(error => { })))\n .then(() => resolve(_newFolders))\n .catch(error => reject(error)));\n } else {\n return Promise.resolve(_newFolders);\n }\n }\n\n if (!folderId || folderId === '/') {\n return this.props.socket.readMetaItems()\n .then(objs => {\n const _folders = [];\n let userData = null;\n\n // load only adapter.admin and not other meta files like hm-rpc.0.devices.blablabla\n objs = objs.filter(obj => {\n if (!this.state.expertMode) {\n return obj._id === '0_userdata.0' || obj._id === 'vis.0';\n } else {\n return obj._id.split('.').length <= 2;\n }\n });\n\n // remember, that all folders are loaded\n if (this.state.expertMode) {\n this.setState({allFoldersLoaded: true, loadFolders: false});\n }\n\n objs.forEach(obj => {\n const item = {\n id: obj._id,\n name: obj._id,\n title: (obj.common && obj.common.name) || obj._id,\n meta: true,\n from: obj.from,\n ts: obj.ts,\n color: obj.common && obj.common.color,\n icon: obj.common && obj.common.icon,\n folder: true,\n acl: obj.acl,\n level: 0\n };\n if (item.id === USER_DATA) {\n // user data must be first\n userData = item;\n } else {\n _folders.push(item);\n }\n });\n _folders.sort((a, b) => a.id > b.id ? 1 : (a.id < b.id ? -1 : 0));\n _folders.unshift(userData);\n\n _newFolders[folderId || '/'] = _folders;\n\n if (!_checkEmpty) {\n return Promise.all(_folders.filter(item => item.folder).map(item =>\n this.browseFolder(item.id, _newFolders, true).catch(error => { })))\n .then(() => _newFolders)\n } else {\n return _newFolders;\n }\n })\n .catch(e => this.initialReadFinished && window.alert('Cannot read meta items: ' + e));\n } else {\n const parts = folderId.split('/');\n const level = parts.length;\n const adapter = parts.shift();\n const relPath = parts.join('/');\n\n // make all requests here serial\n return this.readDirSerial(adapter, relPath)\n .then(files => {\n const _folders = [];\n files.forEach(file => {\n const item = {\n id: folderId + '/' + file.file,\n ext: Utils.getFileExtension(file.file),\n folder: file.isDir,\n name: file.file,\n size: file.stats && file.stats.size,\n modified: file.modifiedAt,\n acl: file.acl,\n level\n };\n _folders.push(item);\n });\n\n _folders.sort(sortFolders);\n _newFolders[folderId] = _folders;\n\n if (!_checkEmpty) {\n return Promise.all(_folders.filter(item => item.folder).map(item => this.browseFolder(item.id, _newFolders, true)))\n .then(() => _newFolders);\n } else {\n return _newFolders;\n }\n })\n .catch(e => {\n this.initialReadFinished && window.alert(`Cannot read ${adapter}${relPath ? '/' + relPath : ''}: ${e}`);\n _newFolders[folderId] = [];\n return _newFolders;\n });\n }\n }\n\n toggleFolder(item, e) {\n e && e.stopPropagation();\n const expanded = [...this.state.expanded];\n const pos = expanded.indexOf(item.id);\n if (pos === -1) {\n expanded.push(item.id);\n expanded.sort();\n\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n\n if (!item.temp) {\n return this.browseFolder(item.id)\n .then(folders => this.setState({ expanded, folders }))\n .catch(err => window.alert(err === NOT_FOUND ? this.props.t('re_Cannot find \"%s\"', item.id) : this.props.t('re_Cannot read \"%s\"', item.id)));\n } else {\n this.setState({ expanded });\n }\n } else {\n expanded.splice(pos, 1);\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ expanded });\n }\n }\n\n changeFolder(e, folder) {\n e && e.stopPropagation();\n\n this.lastSelect = Date.now();\n\n folder = folder || getParentDir(this.state.currentDir);\n\n if (folder === '/') {\n folder = '';\n }\n\n window.localStorage.setItem('files.currentDir', folder);\n\n if (folder && !this.state.folders[folder]) {\n return this.browseFolder(folder)\n .then(folders =>\n this.setState({ folders, path: folder, currentDir: folder, selected: folder, pathFocus: false }, () => this.props.onSelect && this.props.onSelect('')));\n } else {\n this.setState({ currentDir: folder, selected: folder, path: folder, pathFocus: false }, () => this.props.onSelect && this.props.onSelect(''));\n }\n }\n\n select(id, e, cb) {\n if (typeof e === 'function') {\n cb = e;\n e = null;\n }\n e && e.stopPropagation();\n this.lastSelect = Date.now();\n window.localStorage.setItem('files.selected', id);\n this.setState({ selected: id, path: id, pathFocus: false }, () => {\n if (this.props.onSelect) {\n const ext = Utils.getFileExtension(id);\n if ((!this.props.filterFiles || this.props.filterFiles.includes(ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(ext))\n ) {\n this.props.onSelect(id);\n } else {\n this.props.onSelect('');\n }\n }\n cb && cb();\n });\n }\n\n renderFolder(item, expanded) {\n if (this.state.filterEmpty && (!this.state.folders[item.id] || !this.state.folders[item.id].length) && item.id !== USER_DATA && !item.temp) {\n return null;\n }\n const Icon = expanded ? IconOpen : IconClosed;\n const padding = this.state.viewType === TABLE ? item.level * this.levelPadding : 0;\n return <div\n key={item.id}\n id={item.id}\n style={this.state.viewType === TABLE ? { marginLeft: padding, width: 'calc(100% - ' + padding + 'px' } : {}}\n onClick={e => this.state.viewType === TABLE ? this.select(item.id, e) : this.changeFolder(e, item.id)}\n onDoubleClick={e => this.state.viewType === TABLE && this.toggleFolder(item, e)}\n title={item.title && typeof item.title === 'object' ? item.title[this.props.lang] || item.title.end || '' : item.title || null}\n className={Utils.clsx(\n 'browserItem',\n this.props.classes['item' + this.state.viewType],\n this.props.classes['itemFolder' + this.state.viewType],\n this.state.selected === item.id && this.props.classes.itemSelected,\n item.temp && this.props.classes['itemFolderTemp'],\n )}\n >\n <Icon className={this.props.classes['itemFolderIcon' + this.state.viewType]} onClick={this.state.viewType === TABLE ? e => this.toggleFolder(item, e) : undefined} />\n\n <div className={Utils.clsx(this.props.classes['itemName' + this.state.viewType], this.props.classes['itemNameFolder' + this.state.viewType])}\n >{item.name === USER_DATA ? this.props.t('ra_User files') : item.name}</div>\n\n <Hidden smDown>\n {<div className={this.props.classes['itemSize' + this.state.viewType]}>{this.state.viewType === TABLE && this.state.folders[item.id] ? this.state.folders[item.id].length : ''}</div>}\n </Hidden>\n\n <Hidden smDown>\n {this.state.viewType === TABLE ? this.formatAcl(item.acl) : null}\n </Hidden>\n <Hidden smDown>\n {this.state.viewType === TABLE && this.props.expertMode ? <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} /> : null}\n </Hidden>\n {this.state.viewType === TABLE && this.props.allowDownload ? <div className={this.props.classes['itemDownloadButton' + this.state.viewType]} /> : null}\n\n {this.state.viewType === TABLE && this.props.allowDelete && this.state.folders[item.id] && this.state.folders[item.id].length && (this.state.expertMode || item.id.startsWith(USER_DATA) || item.id.startsWith('vis.0/')) ?\n <IconButton\n aria-label=\"delete\"\n onClick={e => {\n e.stopPropagation();\n if (this.suppressDeleteConfirm > Date.now()) {\n this.deleteItem(item.id);\n } else {\n this.setState({ deleteItem: item.id });\n }\n }}\n className={this.props.classes['itemDeleteButton' + this.state.viewType]}\n size=\"large\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n :\n (this.state.viewType === TABLE && this.props.allowDelete ? <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} /> : null)\n }\n </div>;\n }\n\n renderBackFolder() {\n return <div key={this.state.currentDir}\n id={this.state.currentDir}\n onClick={e => this.changeFolder(e)}\n title={this.props.t('re_Back to %s', getParentDir(this.state.currentDir))}\n className={Utils.clsx(\n 'browserItem',\n this.props.classes['item' + this.state.viewType],\n this.props.classes['itemFolder' + this.state.viewType],\n )}>\n <IconClosed className={this.props.classes['itemFolderIcon' + this.state.viewType]} />\n <IconBack className={this.props.classes.itemFolderIconBack} />\n\n <div\n className={Utils.clsx(this.props.classes['itemName' + this.state.viewType], this.props.classes['itemNameFolder' + this.state.viewType])}\n >..</div>\n </div>;\n }\n\n formatSize(size) {\n return <div className={this.props.classes['itemSize' + this.state.viewType]}>{size || size === 0 ? Utils.formatBytes(size) : ''}</div>;\n }\n\n formatAcl(acl) {\n let access = acl && (acl.permissions || acl.file);\n if (access) {\n access = access.toString(16).padStart(3, '0');\n }\n\n return (\n <div className={this.props.classes['itemAccess' + this.state.viewType]}> <IconButton\n onClick={() => this.setState({ modalEditOfAccess: true })}\n className={this.props.classes['itemAclButton' + this.state.viewType]}\n size=\"large\">{access || '---'}</IconButton></div>\n );\n }\n\n getFileIcon(ext) {\n switch (ext) {\n case 'json':\n return (<JsonIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'css':\n return (<CssIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'js':\n case 'ts':\n return (<JSIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'html':\n case 'md':\n return (<HtmlIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n case 'mp3':\n case 'ogg':\n case 'wav':\n case 'm4a':\n case 'mp4':\n case 'flac':\n return (<MusicIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n\n default:\n return (<FileIcon className={this.props.classes['itemIcon' + this.state.viewType]} />);\n }\n }\n\n getEditFile(ext) {\n switch (ext) {\n case 'json':\n case 'js':\n case 'html':\n case 'txt':\n return true;\n default:\n return false;\n }\n }\n\n setStateBackgroundImage = () => {\n let array = ['light', 'dark', 'colored', 'delete'];\n this.setState(({ backgroundImage }) => {\n if (array.indexOf(backgroundImage) !== -1 && array.length - 1 !== array.indexOf(backgroundImage)) {\n window.localStorage.setItem('files.backgroundImage', array[array.indexOf(backgroundImage) + 1]);\n return { backgroundImage: array[array.indexOf(backgroundImage) + 1] }\n } else {\n window.localStorage.setItem('files.backgroundImage', array[0]);\n return { backgroundImage: array[0] }\n }\n })\n }\n\n getClassBackgroundImage = () => {\n //['light', 'dark', 'colored', 'delete']\n switch (this.state.backgroundImage) {\n case 'light':\n return this.props.classes.backgroundImageLight;\n case 'dark':\n return this.props.classes.backgroundImageDark;\n case 'colored':\n return this.props.classes.backgroundImageColored;\n case 'delete':\n return null;\n default:\n return null;\n }\n }\n\n renderFile(item) {\n const padding = this.state.viewType === TABLE ? item.level * this.levelPadding : 0;\n const ext = Utils.getFileExtension(item.name);\n\n return (\n <div\n key={item.id}\n id={item.id}\n onDoubleClick={() => {\n if (!this.props.onSelect) {\n this.setState({ viewer: this.imagePrefix + item.id });\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n this.props.onSelect(item.id, true);\n }\n }}\n onClick={e => this.select(item.id, e)}\n style={this.state.viewType === TABLE ? { marginLeft: padding, width: 'calc(100% - ' + padding + 'px)' } : {}}\n className={Utils.clsx(\n 'browserItem',\n this.props.classes['item' + this.state.viewType],\n this.props.classes['itemFile' + this.state.viewType],\n this.state.selected === item.id && this.props.classes.itemSelected\n )}\n >\n {EXTENSIONS.images.includes(ext) ?\n <img\n onError={e => { e.target.onerror = null; e.target.src = NoImage }}\n className={Utils.clsx(this.props.classes['itemImage' + this.state.viewType], this.getClassBackgroundImage())}\n src={this.imagePrefix + item.id} alt={item.name}\n />\n :\n this.getFileIcon(ext)}\n <div className={this.props.classes['itemName' + this.state.viewType]}>{item.name}</div>\n <Hidden smDown>{this.formatSize(item.size)}</Hidden>\n <Hidden smDown>{this.state.viewType === TABLE ? this.formatAcl(item.acl) : null}</Hidden>\n <Hidden smDown>{this.state.viewType === TABLE && this.props.expertMode && this.getEditFile(ext) ?\n <IconButton\n aria-label=\"delete\"\n onClick={(e) => {\n e.stopPropagation();\n if (!this.props.onSelect) {\n this.setState({ viewer: this.imagePrefix + item.id, formatEditFile: ext });\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n this.props.onSelect(item.id, true);\n }\n }}\n className={this.props.classes['itemDeleteButton' + this.state.viewType]}\n size=\"large\">\n <EditIcon fontSize=\"small\" />\n </IconButton>\n :\n <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} />}\n </Hidden>\n {this.state.viewType === TABLE && this.props.allowDownload ? <IconButton\n download\n href={this.imagePrefix + item.id}\n className={this.props.classes['itemDownloadButton' + this.state.viewType]}\n onClick={e => e.stopPropagation()}\n size=\"large\"><DownloadIcon /></IconButton> : null}\n\n {this.state.viewType === TABLE &&\n this.props.allowDelete &&\n item.id !== 'vis.0/' &&\n item.id !== USER_DATA &&\n (this.state.expertMode || item.id.startsWith(USER_DATA) || item.id.startsWith('vis.0/'))\n ?\n <IconButton\n aria-label=\"delete\"\n onClick={e => {\n e.stopPropagation();\n if (this.suppressDeleteConfirm > Date.now()) {\n this.deleteItem(item.id);\n } else {\n this.setState({ deleteItem: item.id });\n }\n }}\n className={this.props.classes['itemDeleteButton' + this.state.viewType]}\n size=\"large\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n :\n (this.state.viewType === TABLE && this.props.allowDelete ?\n <div className={this.props.classes['itemDeleteButton' + this.state.viewType]} />\n :\n null\n )\n }\n </div>\n );\n }\n\n renderItems(folderId) {\n if (folderId &&\n folderId !== '/' &&\n !this.state.expertMode &&\n folderId !== USER_DATA && !folderId.startsWith(USER_DATA) &&\n folderId !== 'vis.0' && !folderId.startsWith('vis.0/')\n ) {\n return null;\n }\n\n // tile\n if (this.state.folders && this.state.folders[folderId]) {\n if (this.state.viewType === TILE) {\n const res = [];\n if (folderId && folderId !== '/') {\n res.push(this.renderBackFolder());\n }\n this.state.folders[folderId].forEach(item => {\n if (!this.state.expertMode &&\n item.id !== USER_DATA && !item.id.startsWith(USER_DATA) &&\n item.id !== 'vis.0' && !item.id.startsWith('vis.0/')\n ) {\n return;\n }\n if (item.folder) {\n res.push(this.renderFolder(item));\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n res.push(this.renderFile(item));\n }\n });\n return res;\n } else {\n return this.state.folders[folderId].map(item => {\n const res = [];\n if (item.id &&\n item.id !== '/' &&\n !this.state.expertMode &&\n item.id !== USER_DATA &&\n !item.id.startsWith(USER_DATA) &&\n item.id !== 'vis.0' &&\n !item.id.startsWith('vis.0/')) {\n return null;\n }\n\n if (item.folder) {\n const expanded = this.state.expanded.includes(item.id);\n\n res.push(this.renderFolder(item, expanded));\n if (this.state.folders[item.id] && expanded) {\n res.push(this.renderItems(item.id));\n }\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.props.filterByType || EXTENSIONS[this.props.filterByType].includes(item.ext))\n ) {\n res.push(this.renderFile(item));\n } else {\n return null;\n }\n\n return res;\n });\n }\n } else {\n return <div style={{position: 'relative'}}>\n <CircularProgress key={folderId} color=\"secondary\" size={24}/>\n <div style={{position: 'absolute', zIndex: 2, top: 4, width: 24, textAlign: 'center'}} >{this.state.queueLength}</div>\n </div>;\n }\n }\n\n renderToolbar() {\n return (\n <Toolbar key=\"toolbar\" variant=\"dense\">\n {this.props.showExpertButton ? <IconButton\n edge=\"start\"\n title={this.props.t('ra_Toggle expert mode')}\n className={Utils.clsx(this.props.classes.menuButton, this.state.expertMode && this.props.classes.menuButtonExpertActive)}\n aria-label=\"expert mode\"\n onClick={() => this.setState({ expertMode: !this.state.expertMode })}\n size=\"large\"><ExpertIcon /></IconButton> : null}\n {this.props.showViewTypeButton ? <IconButton\n edge=\"start\"\n title={this.props.t('ra_Toggle view mode')}\n className={this.props.classes.menuButton}\n aria-label=\"view mode\"\n onClick={() => {\n const viewType = this.state.viewType === TABLE ? TILE : TABLE;\n window.localStorage.setItem('files.viewType', viewType);\n let currentDir = this.state.selected;\n if (isFile(currentDir)) {\n currentDir = getParentDir(currentDir)\n }\n this.setState({ viewType, currentDir }, () => {\n if (this.state.viewType === TABLE) {\n this.scrollToSelected();\n }\n });\n }}\n size=\"large\">{this.state.viewType !== TABLE ? <IconList /> : <IconTile />}</IconButton> : null}\n <IconButton\n edge=\"start\"\n title={this.props.t('ra_Hide empty folders')}\n className={this.props.classes.menuButton}\n color={this.state.filterEmpty ? 'secondary' : 'inherit'}\n aria-label=\"filter empty\"\n onClick={() => {\n window.localStorage.setItem('file.empty', !this.state.filterEmpty);\n this.setState({ filterEmpty: !this.state.filterEmpty });\n }}\n size=\"large\"><EmptyFilterIcon /></IconButton>\n <IconButton\n edge=\"start\"\n title={this.props.t('ra_Reload files')}\n className={this.props.classes.menuButton}\n color={'inherit'}\n aria-label=\"reload files\"\n onClick={() => this.setState({ folders: {} }, () => this.loadFolders())}\n size=\"large\"><RefreshIcon /></IconButton>\n {this.props.allowCreateFolder ? <IconButton\n edge=\"start\"\n disabled={this.state.expertMode ? !this.state.selected : !this.state.selected.startsWith('vis.0') && !this.state.selected.startsWith(USER_DATA)}\n title={this.props.t('ra_Create folder')}\n className={this.props.classes.menuButton}\n color={'inherit'}\n aria-label=\"add folder\"\n onClick={() => this.setState({ addFolder: true })}\n size=\"large\"><AddFolderIcon /></IconButton> : null}\n {this.props.allowUpload ? <IconButton\n edge=\"start\"\n disabled={this.state.expertMode ? !this.state.selected : !this.state.selected.startsWith('vis.0') && !this.state.selected.startsWith(USER_DATA)}\n title={this.props.t('ra_Upload file')}\n className={this.props.classes.menuButton}\n color={'inherit'}\n aria-label=\"upload file\"\n onClick={() =>\n this.setState({uploadFile: true})}\n size=\"large\"><UploadIcon /></IconButton> : null}\n <Tooltip title={this.props.t('Background image')}>\n <IconButton\n color={'inherit'}\n edge=\"start\"\n className={this.props.classes.menuButton}\n onClick={this.setStateBackgroundImage}\n size=\"large\">\n <Brightness5Icon />\n </IconButton>\n </Tooltip>\n </Toolbar>\n );\n }\n\n findItem(id, folders) {\n folders = folders || this.state.folders;\n if (!folders) {\n return null;\n }\n const parts = id.split('/');\n parts.pop();\n const parentFolder = parts.join('/') || '/';\n if (!folders[parentFolder]) {\n return null;\n }\n return folders[parentFolder].find(item => item.id === id);\n }\n\n renderInputDialog() {\n if (this.state.addFolder) {\n let parentFolder = this.findFirstFolder(this.state.selected);\n\n if (!parentFolder) {\n return window.alert(this.props.t('ra_Invalid parent folder!'));\n }\n\n return (\n <TextInputDialog\n key=\"inputDialog\"\n applyText={this.props.t('ra_Create')}\n cancelText={this.props.t('ra_Cancel')}\n titleText={this.props.t('ra_Create new folder in %s', this.state.selected)}\n promptText={this.props.t('ra_If no file will be created in the folder, it will disappear after the browser closed')}\n labelText={this.props.t('ra_Folder name')}\n verify={text => this.state.folders[parentFolder].find(item => item.name === text) ? '' : this.props.t('ra_Duplicate name')}\n onClose={name => {\n if (name) {\n const folders = {};\n Object.keys(this.state.folders).forEach(folder => folders[folder] = this.state.folders[folder]);\n const parent = this.findItem(parentFolder);\n const id = parentFolder + '/' + name;\n folders[parentFolder].push({\n id: id,\n level: parent.level + 1,\n name,\n folder: true,\n temp: true,\n });\n\n folders[parentFolder].sort(sortFolders);\n\n folders[id] = [];\n const expanded = [...this.state.expanded];\n if (!expanded.includes(parentFolder)) {\n expanded.push(parentFolder);\n expanded.sort();\n }\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ addFolder: false, folders, expanded }, () =>\n this.select(id));\n } else {\n this.setState({ addFolder: false });\n }\n }}\n replace={text => text.replace(/[^-_\\w\\d]/, '_')}\n />\n );\n } else {\n return null;\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.setOpacityTimer && clearTimeout(this.setOpacityTimer);\n this.setOpacityTimer = setTimeout(() => {\n this.setOpacityTimer = null;\n const items = window.document.getElementsByClassName('browserItem');\n for (let i = 0; i < items.length; i++) {\n items[i].style.opacity = 1;\n }\n }, 100);\n }\n\n uploadFile(fileName, data) {\n const parts = fileName.split('/');\n const adapter = parts.shift();\n return this.props.socket.writeFile64(adapter, parts.join('/'), data)\n .catch(e => window.alert('Cannot write file: ' + e));\n }\n\n findFirstFolder(id) {\n let parentFolder = id;\n let item = this.findItem(parentFolder);\n // find folder\n if (item && !item.folder) {\n const parts = parentFolder.split('/');\n parts.pop();\n parentFolder = '';\n while (parts.length) {\n const item = this.findItem(parts.join('/'));\n if (item && item.folder) {\n parentFolder = parts.join('/');\n break;\n }\n }\n }\n\n return parentFolder;\n }\n\n renderUpload() {\n if (this.state.uploadFile) {\n return [\n <Fab key=\"close\" color=\"primary\" aria-label=\"close\" className={this.props.classes.uploadCloseButton}\n onClick={() => this.setState({ uploadFile: false })}>\n <CloseIcon />\n </Fab>,\n <Dropzone\n key=\"dropzone\"\n onDragEnter={() => this.setState({ uploadFile: 'dragging' })}\n onDragLeave={() => this.setState({ uploadFile: true })}\n onDrop={acceptedFiles => {\n let count = acceptedFiles.length;\n acceptedFiles.forEach(file => {\n const reader = new FileReader();\n\n reader.onabort = () => console.log('file reading was aborted');\n reader.onerror = () => console.log('file reading has failed');\n reader.onload = () => {\n let parentFolder = this.findFirstFolder(this.state.selected);\n\n if (!parentFolder) {\n return window.alert(this.props.t('ra_Invalid parent folder!'));\n }\n const id = parentFolder + '/' + file.name;\n this.uploadFile(id, reader.result)\n .then(() => {\n if (!--count) {\n const folders = {};\n Object.keys(this.state.folders).forEach(name => {\n if (name !== parentFolder && !name.startsWith(parentFolder + '/')) {\n folders[name] = this.state.folders[name];\n }\n });\n this.setState({ uploadFile: false, folders }, () =>\n this.browseFolders([...this.state.expanded], folders)\n .then(folders => {\n // open current folder\n const expanded = [...this.state.expanded];\n if (!expanded.includes(parentFolder)) {\n expanded.push(parentFolder);\n expanded.sort();\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n }\n this.setState({ folders, expanded }, () =>\n this.select(id))\n }));\n }\n });\n };\n\n reader.readAsArrayBuffer(file);\n });\n }}\n >\n {({ getRootProps, getInputProps }) => (\n <div className={Utils.clsx(this.props.classes.uploadDiv, this.state.uploadFile === 'dragging' && this.props.classes.uploadDivDragging)}\n {...getRootProps()}>\n <input {...getInputProps()} />\n <div className={this.props.classes.uploadCenterDiv}>\n <div className={this.props.classes.uploadCenterTextAndIcon}>\n <UploadIcon className={this.props.classes.uploadCenterIcon} />\n <div className={this.props.classes.uploadCenterText}>{\n this.state.uploadFile === 'dragging' ? this.props.t('ra_Drop file here') :\n this.props.t('ra_Place your files here or click here to open the browse dialog')}</div>\n </div>\n </div>\n </div>)}\n </Dropzone>\n ];\n } else {\n return null;\n }\n }\n\n deleteRecursive(id) {\n const item = this.findItem(id);\n if (item.folder) {\n return (this.state.folders[id] ? Promise.all(this.state.folders[id].map(item =>\n this.deleteRecursive(item.id))) : Promise.resolve())\n .then(() => {\n // If it is folder of second level\n if (item.level >= 1) {\n const parts = id.split('/');\n const adapter = parts.shift();\n this.props.socket.deleteFolder(adapter, parts.join('/'))\n .then(() => {\n // remove this folder\n const folders = JSON.parse(JSON.stringify(this.state.folders));\n delete folders[item.id];\n // delete folder from parent item\n const parentId = getParentDir(item.id);\n const parentFolder = folders[parentId];\n if (parentFolder) {\n const pos = parentFolder.indexOf(parentFolder.find(f => f.id === item.id));\n if (pos !== -1) {\n parentFolder.splice(pos, 1);\n }\n\n this.select(parentId, () =>\n this.setState({folders}));\n }\n });\n }\n });\n } else {\n const parts = id.split('/');\n const adapter = parts.shift();\n if (parts.length) {\n return this.props.socket.deleteFile(adapter, parts.join('/'))\n .catch(e => window.alert('Cannot delete file: ' + e));\n } else {\n return Promise.resolve();\n }\n }\n }\n\n deleteItem(deleteItem) {\n deleteItem = deleteItem || this.state.deleteItem;\n\n this.setState({ deleteItem: '' }, () =>\n this.deleteRecursive(deleteItem)\n .then(() => {\n const pos = this.state.expanded.indexOf(deleteItem);\n if (pos !== -1) {\n const expanded = [...this.state.expanded];\n expanded.splice(pos, 1);\n window.localStorage.setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ expanded });\n }\n /*let parentFolder = this.findFirstFolder(deleteItem);\n const folders = {};\n Object.keys(this.state.folders).forEach(name => {\n if (name !== parentFolder && !name.startsWith(parentFolder + '/')) {\n folders[name] = this.state.folders[name];\n }\n });\n this.setState({ folders }, () =>\n this.browseFolders([...this.state.expanded], folders)\n .then(folders => this.setState({ folders })));*/\n })\n );\n }\n\n renderDeleteDialog() {\n if (this.state.deleteItem) {\n return <Dialog key=\"deleteDialog\" open={true} onClose={() => this.setState({ deleteItem: '' })} aria-labelledby=\"form-dialog-title\">\n <DialogTitle id=\"form-dialog-title\">{this.props.t('ra_Confirm deletion of %s', this.state.deleteItem.split('/').pop())}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {this.props.t('ra_Are you sure?')}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button color=\"grey\" variant=\"contained\" onClick={() => {\n this.suppressDeleteConfirm = Date.now() + 60000 * 5;\n this.deleteItem();\n }} >{this.props.t('ra_Delete (no confirm for 5 mins)')}</Button>\n <Button variant=\"contained\" onClick={() => this.deleteItem()} color=\"primary\" autoFocus>{this.props.t('ra_Delete')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.setState({ deleteItem: '' })} >{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n } else {\n return false;\n }\n }\n\n renderViewDialog() {\n return this.state.viewer ? <FileViewer\n key={this.state.viewer}\n href={this.state.viewer}\n formatEditFile={this.state.formatEditFile}\n themeName={this.props.themeName}\n setStateBackgroundImage={this.setStateBackgroundImage}\n getClassBackgroundImage={this.getClassBackgroundImage}\n t={this.props.t}\n socket={this.props.socket}\n lang={this.props.lang}\n expertMode={this.state.expertMode}\n onClose={() => this.setState({ viewer: '', formatEditFile: '' })}\n /> : null;\n }\n\n renderError() {\n if (this.state.errorText) {\n return <ErrorDialog key=\"errorDialog\" text={this.state.errorText} onClose={() => this.setState({ errorText: '' })} />;\n } else {\n return null;\n }\n }\n\n updateItemsAcl(info) {\n const folders = JSON.parse(JSON.stringify(this.state.folders));\n let changed;\n info.forEach(it => {\n const item = this.findItem(it.id, folders);\n if (item && JSON.stringify(item.acl) !== JSON.stringify(it.acl)) {\n item.acl = it.acl;\n changed = true;\n }\n });\n changed && this.setState({ folders });\n }\n\n changeToPath() {\n setTimeout(() => {\n if (this.state.path !== this.state.selected && (!this.lastSelect || Date.now() - this.lastSelect > 100)) {\n let folder = this.state.path;\n if (isFile(this.state.path)) {\n folder = getParentDir(this.state.path);\n }\n return new Promise(resolve => {\n if (!this.state.folders[folder]) {\n return this.browseFolder(folder)\n .then(folders => this.setState({ folders }, () => resolve(true)))\n .catch(err => this.setState({ errorText: err === NOT_FOUND ? this.props.t('re_Cannot find \"%s\"', folder) : this.props.t('re_Cannot read \"%s\"', folder) }));\n } else {\n return resolve(true);\n }\n })\n .then(result =>\n result && this.setState({ selected: this.state.path, currentDir: folder, pathFocus: false }));\n } else if (!this.lastSelect || Date.now() - this.lastSelect > 100) {\n this.setState({ pathFocus: false });\n }\n }, 100);\n }\n\n renderBreadcrumb() {\n const parts = this.state.selected.startsWith('/') ? this.state.selected.split('/') : ('/' + this.state.selected).split('/');\n const p = [];\n return parts.map((part, i) => {\n part && p.push(part);\n const path = p.join('/');\n if (i < parts.length - 1) {\n return [\n <div key={this.state.selected + '_' + i} className={this.props.classes.pathDivBreadcrumbDir} onClick={e => this.changeFolder(e, path || '/')}>\n {part || this.props.t('re_Root')}\n </div>,\n <span key={this.state.selected + '_s_' + i} className={this.props.classes.pathDivBreadcrumbSlash}>{'>'}</span>];\n } else {\n return <div key={this.state.selected + '_' + i} className={this.props.classes.pathDivBreadcrumbFile} onClick={() => this.setState({ pathFocus: true })}>{part}</div>;\n }\n });\n }\n\n renderPath() {\n return <div key=\"path\" className={Utils.clsx(this.props.classes.pathDiv, !this.state.pathFocus && this.props.classes.pathDivBreadcrumb)}>\n {this.state.pathFocus ?\n <Input\n value={this.state.path}\n onKeyDown={e => e.keyCode === 13 && this.changeToPath()}\n onBlur={e => this.changeToPath()}\n onChange={e => this.setState({ path: e.target.value })}\n className={this.props.classes.pathDivInput}\n />\n :\n this.renderBreadcrumb()\n }\n </div>;\n }\n\n render() {\n if (!this.props.ready) {\n return <LinearProgress key={this.props.key ? this.props.key + '_c' : 'c'} />;\n }\n\n if (this.state.loadAllFolders && !this.foldersLoading) {\n this.foldersLoading = true;\n setTimeout(() => {\n this.setState({loadAllFolders: false, folders: {}}, () => {\n this.foldersLoading = false;\n this.loadFolders();\n });\n }, 300);\n }\n\n\n return <div style={this.props.style} className={Utils.clsx(this.props.classes.root, this.props.className)}>\n {this.props.showToolbar ? this.renderToolbar() : null}\n {this.state.viewType === TILE ? this.renderPath() : null}\n {<div className={Utils.clsx(this.props.classes.filesDiv, this.props.classes['filesDiv' + this.state.viewType])}>\n {this.state.viewType === TABLE ? this.renderItems('/') : this.renderItems(this.state.currentDir || '/')}\n </div>}\n {this.props.allowUpload ? this.renderInputDialog() : null}\n {this.props.allowUpload ? this.renderUpload() : null}\n {this.props.allowDelete ? this.renderDeleteDialog() : null}\n {this.props.allowView ? this.renderViewDialog() : null}\n {this.state.modalEditOfAccess && this.props.modalEditOfAccessControl && this.props.modalEditOfAccessControl(this, this.state.modalEditOfAccessObjData)}\n {this.renderError()}\n </div>;\n }\n}\n\nFileBrowser.defaultProps = {\n objectAddBoolean: false,\n objectEditBoolean: false,\n objectStatesView: false,\n objectImportExport: false,\n objectEditOfAccessControl: false,\n modalNewObject: () => { },\n modalEditOfAccessControl: () => { },\n};\n\nFileBrowser.propTypes = {\n style: PropTypes.object,\n className: PropTypes.string,\n t: PropTypes.func.isRequired,\n lang: PropTypes.string.isRequired,\n socket: PropTypes.object.isRequired,\n ready: PropTypes.bool,\n expertMode: PropTypes.bool,\n showToolbar: PropTypes.bool,\n allowUpload: PropTypes.bool,\n allowDownload: PropTypes.bool,\n allowCreateFolder: PropTypes.bool,\n allowDelete: PropTypes.bool,\n allowView: PropTypes.bool,\n imagePrefix: PropTypes.string,\n showExpertButton: PropTypes.bool,\n viewType: PropTypes.string,\n showViewTypeButton: PropTypes.bool,\n\n selected: PropTypes.string,\n tileView: PropTypes.bool,\n filterFiles: PropTypes.array, // like ['png', 'svg', 'bmp', 'jpg', 'jpeg']\n filterByType: PropTypes.string, // images, code or txt from FileViewer.EXTENSIONS\n onSelect: PropTypes.func.isRequired, // function (id, isDoubleClick)\n};\n\n/** @type {typeof FileBrowser} */\nconst _export = withWidth()(withStyles(styles)(FileBrowser));\nexport default _export;"],"file":"FileBrowser.js"}
|