@iobroker/adapter-react-v5 3.3.0 → 3.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"FileBrowser.js","names":["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","parseInt","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","borderRadius","backgroundColor","paddingTop","itemDownloadEmptyTable","itemAclButtonTable","itemDeleteButtonTable","uploadDiv","bottom","right","uploadDivDragging","uploadCenterDiv","border","uploadCenterIcon","uploadCenterText","uploadCloseButton","uploadCenterTextAndIcon","menuButtonExpertActive","pathDiv","marginRight","whiteSpace","pathDivInput","pathDivBreadcrumb","paddingBottom","borderBottom","pathDivBreadcrumbDir","pathDivBreadcrumbSlash","pathDivBreadcrumbFile","backgroundImageLight","backgroundImageDark","backgroundImageColored","direction","specialFolder","USER_DATA","sortFolders","a","b","folder","name","getParentDir","dir","parts","split","length","pop","join","isFile","path","ext","getFileExtension","toLowerCase","match","TABLE","TILE","FileBrowser","props","id","fileName","size","key","pos","lastIndexOf","substring","console","log","state","folders","_tempTimeout","clearTimeout","setTimeout","browseFolder","then","setState","array","backgroundImage","indexOf","window","_localStorage","localStorage","setItem","classes","expanded","getItem","limitPath","limitToObjectID","limitToPath","endsWith","JSON","parse","filter","startsWith","e","viewType","showViewTypeButton","selected","currentDir","filterEmpty","expertMode","addFolder","uploadFile","deleteItem","marked","viewer","formatEditFile","errorText","modalEditOfAccess","queueLength","loadAllFolders","allFoldersLoaded","fileErrors","imagePrefix","levelPadding","mounted","suppressDeleteConfirm","browseList","browseListRunning","initialReadFinished","supportSubscribes","browseFolders","Promise","resolve","findItem","pathFocus","scrollToSelected","el","document","getElementById","scrollIntoView","loadFolders","socket","checkFeatureSupported","result","subscribeFiles","onFileChange","unsubscribeFiles","Object","values","forEach","timer","foldersList","_newFolders","_resolve","keys","shift","adapter","relPath","reject","push","processBrowseList","level","processing","readDir","files","item","folderId","_checkEmpty","force","all","map","error","readMetaItems","objs","_folders","userData","obj","_id","findIndex","splice","title","common","meta","from","ts","icon","acl","sort","unshift","alert","readDirSerial","file","isDir","stats","modified","modifiedAt","stopPropagation","stringify","temp","err","t","lastSelect","Date","now","onSelect","cb","filterFiles","includes","filterByType","EXTENSIONS","Icon","IconOpen","IconClosed","isUserData","isSpecialData","select","changeFolder","toggleFolder","lang","end","clsx","undefined","formatAcl","allowDownload","allowDelete","formatBytes","access","permissions","toString","padStart","images","getClassBackgroundImage","target","onerror","getFileIcon","formatSize","getEditFile","res","renderBackFolder","renderFolder","renderFile","renderItems","showExpertButton","menuButton","allowCreateFolder","allowUpload","setStateBackgroundImage","parentFolder","find","findFirstFolder","text","parent","replace","setOpacityTimer","items","getElementsByClassName","i","style","data","writeFile64","_item","acceptedFiles","count","reader","FileReader","onabort","onload","readAsArrayBuffer","getRootProps","getInputProps","deleteRecursive","deleteFolder","parentId","f","deleteFile","newState","themeName","info","changed","it","p","part","keyCode","changeToPath","value","renderBreadcrumb","ready","foldersLoading","className","showToolbar","renderToolbar","renderPath","renderInputDialog","renderUpload","renderDeleteDialog","allowView","renderViewDialog","modalEditOfAccessControl","modalEditOfAccessObjData","renderError","Component","defaultProps","propTypes","PropTypes","object","string","func","isRequired","bool","tileView","_export","withWidth","withStyles"],"sources":["FileBrowser.js"],"sourcesContent":["/**\n * Copyright 2020-2022, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\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-v5/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 IconClosed from '../icons/IconClosed';\nimport IconOpen from '../icons/IconOpen';\nimport IconNoIcon from '../icons/IconNoIcon';\n\nimport withWidth from './withWidth';\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 + parseInt(theme.spacing(1), 10)}px)`,\n },\n filesDivTile: {\n height: `calc(100% - ${48 * 2 + parseInt(theme.spacing(1), 10)}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: 'middle',\n textAlign: 'center',\n padding: 0,\n borderRadius: BUTTON_WIDTH / 2,\n '&:hover': {\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n },\n '& span': {\n paddingTop: 9,\n },\n '& svg': {\n width: 14,\n height: 14,\n fontSize: '1rem',\n marginTop: -3,\n verticalAlign: 'middle',\n color: theme.palette.mode === 'dark' ? '#EEE' : '#111',\n },\n },\n itemDownloadEmptyTable: {\n display: 'inline-block',\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n padding: 0,\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 display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\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 specialFolder: {\n color: theme.palette.mode === 'dark' ? '#229b0f' : '#5dd300'\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 }\n if (a.folder) {\n return -1;\n }\n if (b.folder) {\n return 1;\n }\n return a.name > b.name ? 1 : (a.name < b.name ? -1 : 0);\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 const ext = Utils.getFileExtension(path);\n if (ext && ext.toLowerCase().match(/[a-z]+/) && ext.length < 5) {\n return true;\n }\n\n return false;\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 || window.localStorage).getItem('files.expanded') || '[]';\n\n if (this.props.limitPath) {\n const parts = this.props.limitPath.split('/');\n this.limitToObjectID = parts[0];\n this.limitToPath = !parts.length ? null : (parts.length === 1 && parts[0] === '' ? null : parts.join('/'));\n if (this.limitToPath && this.limitToPath.endsWith('/')) {\n this.limitToPath.substring(0, this.limitToPath.length - 1);\n }\n }\n\n try {\n expanded = JSON.parse(expanded);\n if (this.limitToPath) {\n expanded = expanded.filter(id => id.startsWith(this.limitToPath + '/') || id === this.limitToPath || this.limitToPath.startsWith(id + '/'));\n }\n } catch (e) {\n expanded = [];\n }\n\n let viewType;\n if (this.props.showViewTypeButton) {\n viewType = (window._localStorage || window.localStorage).getItem('files.viewType') || TABLE;\n } else {\n viewType = TABLE;\n }\n\n const selected = this.props.selected || (window._localStorage || 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 const backgroundImage = (window._localStorage || window.localStorage).getItem('files.backgroundImage') || null;\n\n this.state = {\n viewType,\n folders: {},\n filterEmpty: (window._localStorage || 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 fileErrors: [],\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 this.supportSubscribes = null;\n this._tempTimeout = {};\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.expertMode !== undefined && props.expertMode !== state.expertMode) {\n return { expertMode: props.expertMode, loadAllFolders: true };\n }\n\n return null;\n }\n\n loadFolders() {\n this.initialReadFinished = false;\n\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.limitToObjectID || this.state.currentDir.startsWith(this.limitToObjectID)) ? 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 return this.props.socket.checkFeatureSupported('BINARY_STATE_EVENT')\n .then(result => {\n this.supportSubscribes = result;\n this.supportSubscribes && this.props.socket.subscribeFiles('*', '*', this.onFileChange);\n });\n }\n\n componentWillUnmount() {\n this.supportSubscribes && this.props.socket.unsubscribeFiles('*', '*', this.onFileChange);\n this.mounted = false;\n this.browseList = null;\n this.browseListRunning = false;\n Object.values(this._tempTimeout)\n .forEach(timer => timer && clearTimeout(timer));\n this._tempTimeout = {};\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 return _resolve(_newFolders);\n }\n\n return 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 readDirSerial(adapter, relPath) {\n return new Promise((resolve, reject) => {\n if (this.browseList) { // if component still mounted\n this.browseList.push({\n resolve, reject, adapter, relPath,\n });\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 .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, force) {\n if (typeof _newFolders === 'boolean') {\n force = _newFolders;\n _newFolders = null;\n }\n\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] && !force) {\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 }\n\n return Promise.resolve(_newFolders);\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 if (!this.state.expertMode) {\n objs = objs.filter(obj => !obj._id.endsWith('.admin'));\n }\n const pos = objs.findIndex(obj => obj._id === 'system.meta.uuid');\n if (pos !== -1) {\n objs.splice(pos, 1);\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 if (this.limitToObjectID && this.limitToObjectID !== obj._id) {\n return;\n }\n\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 if (!this.limitToObjectID || this.limitToObjectID === USER_DATA) {\n userData && _folders.unshift(userData);\n }\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)\n .catch(error => { })))\n .then(() => _newFolders);\n }\n\n return _newFolders;\n })\n .catch(e => this.initialReadFinished && window.alert(`Cannot read meta items: ${e}`));\n }\n\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\n if (this.limitToPath) {\n if (item.folder && (item.id.startsWith(this.limitToPath + '/') || item.id === this.limitToPath || this.limitToPath.startsWith(item.id + '/'))) {\n _folders.push(item);\n } else if (item.id.startsWith(this.limitToPath + '/')) {\n _folders.push(item);\n }\n } else {\n _folders.push(item);\n }\n });\n\n _folders.sort(sortFolders);\n _newFolders[folderId] = _folders;\n\n if (!_checkEmpty) {\n return Promise.all(_folders\n .filter(item => item.folder)\n .map(item => this.browseFolder(item.id, _newFolders, true))\n )\n .then(() => _newFolders);\n }\n\n return _newFolders;\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 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 || 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('ra_Cannot find \"%s\"', item.id) : this.props.t('ra_Cannot read \"%s\"', item.id)));\n } else {\n this.setState({ expanded });\n }\n } else {\n expanded.splice(pos, 1);\n (window._localStorage || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ expanded });\n }\n }\n\n onFileChange = (id, fileName, size) => {\n const key = id + '/' + fileName;\n const pos = key.lastIndexOf('/');\n const folder = key.substring(0, pos);\n console.log(`File changed ${key}[${size}]`);\n\n if (this.state.folders[folder]) {\n this._tempTimeout[folder] && clearTimeout(this._tempTimeout[folder]);\n\n this._tempTimeout[folder] = setTimeout(() => {\n delete this._tempTimeout[folder];\n\n this.browseFolder(folder, true)\n .then(folders => this.setState({ folders }));\n }, 300);\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 || 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({\n folders,\n path: folder,\n currentDir: folder,\n selected: folder,\n pathFocus: false\n }, () =>\n this.props.onSelect && this.props.onSelect('')));\n }\n\n return this.setState({\n currentDir: folder,\n selected: folder,\n path: folder,\n pathFocus: false\n }, () =>\n this.props.onSelect && this.props.onSelect(''));\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 || 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, false, !!this.state.folders[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 const isUserData = item.name === USER_DATA;\n const isSpecialData = isUserData || item.name === 'vis.0';\n\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={Utils.clsx(this.props.classes['itemFolderIcon' + this.state.viewType], isSpecialData && this.props.classes.specialFolder)} 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 >{isUserData ? 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\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[`itemDownloadEmpty${this.state.viewType}`]} /> : null}\n\n {this.state.viewType === TABLE && this.props.allowDelete && this.state.folders[item.id] && this.state.folders[item.id].length ?\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 >\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 </div>;\n }\n\n renderBackFolder() {\n return <div\n key={this.state.currentDir}\n id={this.state.currentDir}\n onClick={e => this.changeFolder(e)}\n title={this.props.t('ra_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 >\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 <div className={this.props.classes['itemAccess' + this.state.viewType]}>\n <IconButton\n size=\"large\"\n onClick={() => this.setState({ modalEditOfAccess: true })}\n className={this.props.classes['itemAclButton' + this.state.viewType]}\n >{access || '---'}</IconButton>\n </div>;\n }\n\n getFileIcon(ext) {\n switch (ext) {\n case 'json':\n case 'json5':\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 static getEditFile(ext) {\n switch (ext) {\n case 'json':\n case 'json5':\n case 'js':\n case 'html':\n case 'txt':\n return true;\n default:\n return false;\n }\n }\n\n setStateBackgroundImage = () => {\n const array = ['light', 'dark', 'colored', 'delete'];\n this.setState(({ backgroundImage }) => {\n if (array.indexOf(backgroundImage) !== -1 && array.length - 1 !== array.indexOf(backgroundImage)) {\n (window._localStorage || window.localStorage).setItem('files.backgroundImage', array[array.indexOf(backgroundImage) + 1]);\n return { backgroundImage: array[array.indexOf(backgroundImage) + 1] };\n }\n (window._localStorage || window.localStorage).setItem('files.backgroundImage', array[0]);\n return { backgroundImage: array[0] };\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 <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, !!this.state.folders[item.id]);\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 this.state.fileErrors.includes(item.id) ?\n <IconNoIcon className={Utils.clsx(this.props.classes['itemImage' + this.state.viewType], this.getClassBackgroundImage())}/> :\n <img\n onError={e => {\n e.target.onerror = null;\n const fileErrors = [...this.state.fileErrors];\n if (!fileErrors.includes(item.id)) {\n fileErrors.push(item.id);\n this.setState({ fileErrors });\n }\n }}\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>\n {this.state.viewType === TABLE && this.props.expertMode && FileBrowser.getEditFile(ext) ?\n <IconButton\n aria-label=\"edit\"\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, !!this.state.folders[item.id]);\n }\n }}\n className={this.props.classes[`itemDeleteButton${this.state.viewType}`]}\n size=\"large\"\n >\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 ? <a\n className={Utils.clsx('MuiButtonBase-root', 'MuiIconButton-root', 'MuiIconButton-sizeLarge', this.props.classes.itemDownloadButtonTable)}\n tabIndex=\"0\"\n download={item.id}\n href={this.imagePrefix + item.id}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n <DownloadIcon />\n </a> : null}\n\n {this.state.viewType === TABLE &&\n this.props.allowDelete &&\n item.id !== 'vis.0/' &&\n item.id !== USER_DATA\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 >\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 renderItems(folderId) {\n if (this.state.folders && this.state.folders[folderId]) {\n // tile\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 (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 }\n return this.state.folders[folderId].map(item => {\n const res = [];\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\n return <div style={{ position: 'relative' }}>\n <CircularProgress key={folderId} color=\"secondary\" size={24} />\n <div style={{\n position: 'absolute', zIndex: 2, top: 4, width: 24, textAlign: 'center',\n }}\n >\n {this.state.queueLength}\n </div>\n </div>;\n }\n\n renderToolbar() {\n return <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\"\n >\n <ExpertIcon />\n </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 || 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\"\n >\n {this.state.viewType !== TABLE ? <IconList /> : <IconTile />}\n </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 || window.localStorage).setItem('file.empty', !this.state.filterEmpty);\n this.setState({ filterEmpty: !this.state.filterEmpty });\n }}\n size=\"large\"\n >\n <EmptyFilterIcon />\n </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\"\n >\n <RefreshIcon />\n </IconButton>\n {this.props.allowCreateFolder ? <IconButton\n edge=\"start\"\n disabled={!this.state.selected || !this.state.folders[this.state.selected] ||\n (\n this.limitToPath &&\n !this.state.selected.startsWith(this.limitToPath + '/') &&\n this.limitToPath !== this.state.selected\n )}\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\"\n >\n <AddFolderIcon />\n </IconButton> : null}\n {this.props.allowUpload ? <IconButton\n edge=\"start\"\n disabled={\n !this.state.selected ||\n !this.state.folders[this.state.selected] ||\n (\n this.limitToPath &&\n !this.state.selected.startsWith(this.limitToPath + '/') &&\n this.limitToPath !== this.state.selected\n )\n }\n title={this.props.t('ra_Upload file')}\n className={this.props.classes.menuButton}\n color=\"inherit\"\n aria-label=\"upload file\"\n onClick={() => this.setState({ uploadFile: true })}\n size=\"large\"\n >\n <UploadIcon />\n </IconButton> : null}\n <Tooltip title={this.props.t('ra_Background image')}>\n <IconButton\n color=\"inherit\"\n edge=\"start\"\n className={this.props.classes.menuButton}\n onClick={this.setStateBackgroundImage}\n size=\"large\"\n >\n <Brightness5Icon />\n </IconButton>\n </Tooltip>\n </Toolbar>;\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 const 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 <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,\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 || 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 return null;\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 const 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\n key=\"close\"\n color=\"primary\"\n aria-label=\"close\"\n className={this.props.classes.uploadCloseButton}\n onClick={() => this.setState({ uploadFile: false })}\n >\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\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 const 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\n this.uploadFile(id, reader.result)\n .then(() => {\n if (!--count) {\n this.setState({ uploadFile: false }, () => {\n if (this.supportSubscribes) {\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 || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n }\n this.setState({ expanded }, () =>\n this.select(id));\n } else {\n setTimeout(() =>\n this.browseFolder(parentFolder, true)\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 || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n }\n this.setState({ folders, expanded }, () =>\n this.select(id));\n })\n , 500);\n }\n });\n }\n });\n };\n\n reader.readAsArrayBuffer(file);\n });\n }}\n >\n {({ getRootProps, getInputProps }) => (\n <div\n className={Utils.clsx(this.props.classes.uploadDiv, this.state.uploadFile === 'dragging' && this.props.classes.uploadDivDragging)}\n {...getRootProps()}\n >\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 {\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')\n }\n </div>\n </div>\n </div>\n </div>)}\n </Dropzone>,\n ];\n }\n return null;\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, () => this.setState({ folders }));\n }\n });\n }\n });\n }\n\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 }\n return Promise.resolve();\n }\n\n deleteItem(deleteItem) {\n deleteItem = deleteItem || this.state.deleteItem;\n\n this.setState({ deleteItem: '' }, () =>\n this.deleteRecursive(deleteItem)\n .then(() => {\n const newState = {};\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 || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n newState.expanded = expanded;\n }\n\n if (!this.supportSubscribes) {\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 newState.folders = folders;\n\n this.setState(newState, () =>\n setTimeout(() => this.browseFolders([...this.state.expanded], folders)\n .then(folders => this.setState({ folders })), 200));\n\n } else {\n this.setState(newState);\n }\n })\n );\n }\n\n renderDeleteDialog() {\n if (this.state.deleteItem) {\n return <Dialog\n key=\"deleteDialog\"\n open={!0}\n onClose={() => this.setState({ deleteItem: '' })}\n aria-labelledby=\"form-dialog-title\"\n >\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\n color=\"grey\"\n variant=\"contained\"\n onClick={() => {\n this.suppressDeleteConfirm = Date.now() + 60000 * 5;\n this.deleteItem();\n }}\n >\n {this.props.t('ra_Delete (no confirm for 5 mins)')}\n </Button>\n <Button variant=\"contained\" onClick={() => this.deleteItem()} color=\"primary\" autoFocus>{this.props.t('ra_Delete')}</Button>\n <Button variant=\"contained\" onClick={() => this.setState({ deleteItem: '' })} color=\"grey\">{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n return false;\n }\n\n renderViewDialog() {\n return this.state.viewer ? <FileViewer\n supportSubscribes={this.supportSubscribes}\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 }\n return null;\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 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('ra_Cannot find \"%s\"', folder) : this.props.t('ra_Cannot read \"%s\"', folder) }));\n }\n return resolve(true);\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('ra_Root')}\n </div>,\n <span key={`${this.state.selected}_s_${i}`} className={this.props.classes.pathDivBreadcrumbSlash}>{'>'}</span>];\n }\n return <div key={`${this.state.selected}_${i}`} className={this.props.classes.pathDivBreadcrumbFile} onClick={() => this.setState({ pathFocus: true })}>{part}</div>;\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={() => 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 />;\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 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 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, // function (id, isDoubleClick)\n\n modalEditOfAccessControl: PropTypes.func,\n};\n\n/** @type {typeof FileBrowser} */\nconst _export = withWidth()(withStyles(styles)(FileBrowser));\nexport default _export;"],"mappings":"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"}
1
+ {"version":3,"file":"FileBrowser.js","names":["ROW_HEIGHT","BUTTON_WIDTH","TILE_HEIGHT","TILE_WIDTH","NOT_FOUND","FILE_TYPE_ICONS","all","FileIcon","images","TypeIconImages","code","JSIcon","txt","TypeIconTxt","audio","TypeIconAudio","video","TypeIconVideo","styles","theme","dialog","height","mixins","toolbar","minHeight","root","width","overflow","position","filesDiv","spacing","overflowX","overflowY","padding","filesDivTable","parseInt","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","borderRadius","backgroundColor","paddingTop","itemDownloadEmptyTable","itemAclButtonTable","itemDeleteButtonTable","uploadDiv","bottom","right","uploadDivDragging","uploadCenterDiv","border","uploadCenterIcon","uploadCenterText","uploadCloseButton","uploadCenterTextAndIcon","menuButtonExpertActive","pathDiv","marginRight","whiteSpace","pathDivInput","pathDivBreadcrumb","paddingBottom","borderBottom","pathDivBreadcrumbDir","pathDivBreadcrumbSlash","pathDivBreadcrumbFile","backgroundImageLight","backgroundImageDark","backgroundImageColored","direction","specialFolder","USER_DATA","sortFolders","a","b","folder","name","getParentDir","dir","parts","split","length","pop","join","isFile","path","ext","getFileExtension","toLowerCase","match","TABLE","TILE","FileBrowser","props","id","fileName","size","key","pos","lastIndexOf","substring","console","log","state","folders","_tempTimeout","clearTimeout","setTimeout","browseFolder","then","setState","array","backgroundImage","indexOf","window","_localStorage","localStorage","setItem","classes","expanded","getItem","limitPath","limitToObjectID","limitToPath","endsWith","JSON","parse","filter","startsWith","e","viewType","showViewTypeButton","selected","Array","isArray","currentDir","filterEmpty","expertMode","addFolder","uploadFile","deleteItem","viewer","formatEditFile","errorText","modalEditOfAccess","queueLength","loadAllFolders","fileErrors","filterByType","showTypesMenu","imagePrefix","levelPadding","mounted","suppressDeleteConfirm","browseList","browseListRunning","initialReadFinished","supportSubscribes","browseFolders","Promise","resolve","findItem","pathFocus","scrollToSelected","el","document","getElementById","scrollIntoView","loadFolders","socket","checkFeatureSupported","result","subscribeFiles","onFileChange","unsubscribeFiles","Object","values","forEach","timer","foldersList","_newFolders","_resolve","keys","shift","adapter","relPath","reject","push","processBrowseList","level","processing","readDir","files","item","folderId","_checkEmpty","force","map","error","readMetaItems","objs","_folders","userData","obj","_id","findIndex","splice","title","common","meta","from","ts","icon","acl","sort","unshift","alert","readDirSerial","file","isDir","stats","modified","modifiedAt","stopPropagation","stringify","temp","err","t","lastSelect","Date","now","onSelect","cb","filterFiles","includes","EXTENSIONS","Icon","IconOpen","IconClosed","isUserData","isSpecialData","select","changeFolder","toggleFolder","lang","end","clsx","undefined","formatAcl","allowDownload","allowDelete","formatBytes","access","permissions","toString","padStart","getClassBackgroundImage","target","onerror","getFileIcon","formatSize","getEditFile","res","renderBackFolder","renderFolder","renderFile","renderItems","IconType","showTypeSelector","showExpertButton","menuButton","allowCreateFolder","allowUpload","type","MyIcon","removeItem","setStateBackgroundImage","parentFolder","find","findFirstFolder","text","parent","replace","setOpacityTimer","items","getElementsByClassName","i","style","data","writeFile64","_item","acceptedFiles","count","reader","FileReader","onabort","onload","readAsArrayBuffer","getRootProps","getInputProps","deleteRecursive","deleteFolder","parentId","f","deleteFile","newState","themeName","p","part","keyCode","changeToPath","value","renderBreadcrumb","ready","foldersLoading","className","showToolbar","renderToolbar","renderPath","renderInputDialog","renderUpload","renderDeleteDialog","allowView","renderViewDialog","modalEditOfAccessControl","modalEditOfAccessObjData","renderError","Component","defaultProps","propTypes","PropTypes","object","string","func","isRequired","bool","tileView","_export","withWidth","withStyles"],"sources":["FileBrowser.js"],"sourcesContent":["/**\n * Copyright 2020-2022, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n * */\nimport React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\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 {\n Hidden, ListItemIcon, ListItemText, Menu, MenuItem, Tooltip,\n} from '@mui/material';\n\nimport ErrorDialog from '../Dialogs/Error';\nimport Utils from './Utils';\nimport TextInputDialog from '../Dialogs/TextInput';\nimport FileViewer, { EXTENSIONS } from './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';\nimport TypeIconImages from '@mui/icons-material/Image';\nimport TypeIconTxt from '@mui/icons-material/FontDownload';\nimport TypeIconAudio from '@mui/icons-material/AudioFile';\nimport TypeIconVideo from '@mui/icons-material/Videocam';\n\nimport ExpertIcon from '../icons/IconExpert';\nimport IconClosed from '../icons/IconClosed';\nimport IconOpen from '../icons/IconOpen';\nimport IconNoIcon from '../icons/IconNoIcon';\n\nimport withWidth from './withWidth';\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 FILE_TYPE_ICONS = {\n all: FileIcon,\n images: TypeIconImages,\n code: JSIcon,\n txt: TypeIconTxt,\n audio: TypeIconAudio,\n video: TypeIconVideo,\n};\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 + parseInt(theme.spacing(1), 10)}px)`,\n },\n filesDivTile: {\n height: `calc(100% - ${48 * 2 + parseInt(theme.spacing(1), 10)}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: 'middle',\n textAlign: 'center',\n padding: 0,\n borderRadius: BUTTON_WIDTH / 2,\n '&:hover': {\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n },\n '& span': {\n paddingTop: 9,\n },\n '& svg': {\n width: 14,\n height: 14,\n fontSize: '1rem',\n marginTop: -3,\n verticalAlign: 'middle',\n color: theme.palette.mode === 'dark' ? '#EEE' : '#111',\n },\n },\n itemDownloadEmptyTable: {\n display: 'inline-block',\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n padding: 0,\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 display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\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 specialFolder: {\n color: theme.palette.mode === 'dark' ? '#229b0f' : '#5dd300',\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 }\n if (a.folder) {\n return -1;\n }\n if (b.folder) {\n return 1;\n }\n return a.name > b.name ? 1 : (a.name < b.name ? -1 : 0);\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 const ext = Utils.getFileExtension(path);\n return !!(ext && ext.toLowerCase().match(/[a-z]+/) && ext.length < 5);\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 || window.localStorage).getItem('files.expanded') || '[]';\n\n if (this.props.limitPath) {\n const parts = this.props.limitPath.split('/');\n this.limitToObjectID = parts[0];\n this.limitToPath = !parts.length ? null : (parts.length === 1 && parts[0] === '' ? null : parts.join('/'));\n if (this.limitToPath && this.limitToPath.endsWith('/')) {\n this.limitToPath.substring(0, this.limitToPath.length - 1);\n }\n }\n\n try {\n expanded = JSON.parse(expanded);\n if (this.limitToPath) {\n expanded = expanded.filter(id => id.startsWith(`${this.limitToPath}/`) || id === this.limitToPath || this.limitToPath.startsWith(`${id}/`));\n }\n } catch (e) {\n expanded = [];\n }\n\n let viewType;\n if (this.props.showViewTypeButton) {\n viewType = (window._localStorage || window.localStorage).getItem('files.viewType') || TABLE;\n } else {\n viewType = TABLE;\n }\n\n let selected = this.props.selected || (window._localStorage || window.localStorage).getItem('files.selected') || USER_DATA;\n\n // TODO: Now we do not support multiple selection\n if (Array.isArray(selected)) {\n selected = selected[0];\n }\n\n let currentDir = '';\n if (isFile(selected)) {\n currentDir = getParentDir(selected);\n } else {\n currentDir = selected;\n }\n const backgroundImage = (window._localStorage || window.localStorage).getItem('files.backgroundImage') || null;\n\n this.state = {\n viewType,\n folders: {},\n filterEmpty: (window._localStorage || 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 fileErrors: [],\n filterByType: props.filterByType || window.localStorage.getItem('files.filterByType') || '',\n showTypesMenu: null,\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 this.supportSubscribes = null;\n this._tempTimeout = {};\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.expertMode !== undefined && props.expertMode !== state.expertMode) {\n return { expertMode: props.expertMode, loadAllFolders: true };\n }\n\n return null;\n }\n\n loadFolders() {\n this.initialReadFinished = false;\n\n return this.browseFolder('/')\n .then(folders => (this.state.viewType === TABLE ?\n this.browseFolders([...this.state.expanded], folders)\n :\n (this.state.currentDir && this.state.currentDir !== '/' && (!this.limitToObjectID || this.state.currentDir.startsWith(this.limitToObjectID)) ?\n this.browseFolder(this.state.currentDir, folders) : Promise.resolve(folders))))\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 return this.props.socket.checkFeatureSupported('BINARY_STATE_EVENT')\n .then(result => {\n this.supportSubscribes = result;\n this.supportSubscribes && this.props.socket.subscribeFiles('*', '*', this.onFileChange);\n });\n }\n\n componentWillUnmount() {\n this.supportSubscribes && this.props.socket.unsubscribeFiles('*', '*', this.onFileChange);\n this.mounted = false;\n this.browseList = null;\n this.browseListRunning = false;\n Object.values(this._tempTimeout)\n .forEach(timer => timer && clearTimeout(timer));\n this._tempTimeout = {};\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 => {\n this.browseFolders(foldersList, _newFolders, resolve);\n });\n }\n\n if (!foldersList || !foldersList.length) {\n return _resolve(_newFolders);\n }\n\n return 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 readDirSerial(adapter, relPath) {\n return new Promise((resolve, reject) => {\n if (this.browseList) { // if component still mounted\n this.browseList.push({\n resolve, reject, adapter, relPath,\n });\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 .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, force) {\n if (typeof _newFolders === 'boolean') {\n force = _newFolders;\n _newFolders = null;\n }\n\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] && !force) {\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(() => { })))\n .then(() => resolve(_newFolders))\n .catch(error => reject(error)));\n }\n\n return Promise.resolve(_newFolders);\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 if (!this.state.expertMode) {\n objs = objs.filter(obj => !obj._id.endsWith('.admin'));\n }\n const pos = objs.findIndex(obj => obj._id === 'system.meta.uuid');\n if (pos !== -1) {\n objs.splice(pos, 1);\n }\n\n objs.forEach(obj => {\n if (this.limitToObjectID && this.limitToObjectID !== obj._id) {\n return;\n }\n\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 if (!this.limitToObjectID || this.limitToObjectID === USER_DATA) {\n userData && _folders.unshift(userData);\n }\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)\n .catch(() => { })))\n .then(() => _newFolders);\n }\n\n return _newFolders;\n })\n .catch(e => this.initialReadFinished && window.alert(`Cannot read meta items: ${e}`));\n }\n\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\n if (this.limitToPath) {\n if (item.folder && (item.id.startsWith(`${this.limitToPath}/`) || item.id === this.limitToPath || this.limitToPath.startsWith(`${item.id}/`))) {\n _folders.push(item);\n } else if (item.id.startsWith(`${this.limitToPath}/`)) {\n _folders.push(item);\n }\n } else {\n _folders.push(item);\n }\n });\n\n _folders.sort(sortFolders);\n _newFolders[folderId] = _folders;\n\n if (!_checkEmpty) {\n return Promise.all(_folders\n .filter(item => item.folder)\n .map(item => this.browseFolder(item.id, _newFolders, true)))\n .then(() => _newFolders);\n }\n\n return _newFolders;\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 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 || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n\n if (!item.temp) {\n this.browseFolder(item.id)\n .then(folders => this.setState({ expanded, folders }))\n .catch(err => window.alert(err === NOT_FOUND ? this.props.t('ra_Cannot find \"%s\"', item.id) : this.props.t('ra_Cannot read \"%s\"', item.id)));\n } else {\n this.setState({ expanded });\n }\n } else {\n expanded.splice(pos, 1);\n (window._localStorage || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n this.setState({ expanded });\n }\n }\n\n onFileChange = (id, fileName, size) => {\n const key = `${id}/${fileName}`;\n const pos = key.lastIndexOf('/');\n const folder = key.substring(0, pos);\n console.log(`File changed ${key}[${size}]`);\n\n if (this.state.folders[folder]) {\n this._tempTimeout[folder] && clearTimeout(this._tempTimeout[folder]);\n\n this._tempTimeout[folder] = setTimeout(() => {\n delete this._tempTimeout[folder];\n\n this.browseFolder(folder, true)\n .then(folders => this.setState({ folders }));\n }, 300);\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 || 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({\n folders,\n path: folder,\n currentDir: folder,\n selected: folder,\n pathFocus: false,\n }, () =>\n this.props.onSelect && this.props.onSelect('')));\n }\n\n return this.setState({\n currentDir: folder,\n selected: folder,\n path: folder,\n pathFocus: false,\n }, () =>\n this.props.onSelect && this.props.onSelect(''));\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 || 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.state.filterByType || EXTENSIONS[this.state.filterByType].includes(ext))\n ) {\n this.props.onSelect(id, false, !!this.state.folders[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 const isUserData = item.name === USER_DATA;\n const isSpecialData = isUserData || item.name === 'vis.0' || item.name === 'vis-2-beta.0';\n\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\n className={Utils.clsx(this.props.classes[`itemFolderIcon${this.state.viewType}`], isSpecialData && this.props.classes.specialFolder)}\n onClick={this.state.viewType === TABLE ? e => this.toggleFolder(item, e) : undefined}\n />\n\n <div className={Utils.clsx(this.props.classes[`itemName${this.state.viewType}`], this.props.classes[`itemNameFolder${this.state.viewType}`])}>{isUserData ? 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\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[`itemDownloadEmpty${this.state.viewType}`]} /> : null}\n\n {this.state.viewType === TABLE && this.props.allowDelete && this.state.folders[item.id] && this.state.folders[item.id].length ?\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 >\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 </div>;\n }\n\n renderBackFolder() {\n return <div\n key={this.state.currentDir}\n id={this.state.currentDir}\n onClick={e => this.changeFolder(e)}\n title={this.props.t('ra_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 >\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 >\n..\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 <div className={this.props.classes[`itemAccess${this.state.viewType}`]}>\n <IconButton\n size=\"large\"\n onClick={() => this.setState({ modalEditOfAccess: true })}\n className={this.props.classes[`itemAclButton${this.state.viewType}`]}\n >\n {access || '---'}\n </IconButton>\n </div>;\n }\n\n getFileIcon(ext) {\n switch (ext) {\n case 'json':\n case 'json5':\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 static getEditFile(ext) {\n switch (ext) {\n case 'json':\n case 'json5':\n case 'js':\n case 'html':\n case 'txt':\n return true;\n default:\n return false;\n }\n }\n\n setStateBackgroundImage = () => {\n const array = ['light', 'dark', 'colored', 'delete'];\n this.setState(({ backgroundImage }) => {\n if (array.indexOf(backgroundImage) !== -1 && array.length - 1 !== array.indexOf(backgroundImage)) {\n (window._localStorage || window.localStorage).setItem('files.backgroundImage', array[array.indexOf(backgroundImage) + 1]);\n return { backgroundImage: array[array.indexOf(backgroundImage) + 1] };\n }\n (window._localStorage || window.localStorage).setItem('files.backgroundImage', array[0]);\n return { backgroundImage: array[0] };\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 <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.state.filterByType || EXTENSIONS[this.state.filterByType].includes(item.ext))\n ) {\n this.props.onSelect(item.id, true, !!this.state.folders[item.id]);\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 this.state.fileErrors.includes(item.id) ?\n <IconNoIcon className={Utils.clsx(this.props.classes[`itemImage${this.state.viewType}`], this.getClassBackgroundImage())} /> :\n <img\n onError={e => {\n e.target.onerror = null;\n const fileErrors = [...this.state.fileErrors];\n if (!fileErrors.includes(item.id)) {\n fileErrors.push(item.id);\n this.setState({ fileErrors });\n }\n }}\n className={Utils.clsx(this.props.classes[`itemImage${this.state.viewType}`], this.getClassBackgroundImage())}\n src={this.imagePrefix + item.id}\n 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>\n {this.state.viewType === TABLE && this.props.expertMode && FileBrowser.getEditFile(ext) ?\n <IconButton\n aria-label=\"edit\"\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.state.filterByType || EXTENSIONS[this.state.filterByType].includes(item.ext))\n ) {\n this.props.onSelect(item.id, true, !!this.state.folders[item.id]);\n }\n }}\n className={this.props.classes[`itemDeleteButton${this.state.viewType}`]}\n size=\"large\"\n >\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 ? <a\n className={Utils.clsx('MuiButtonBase-root', 'MuiIconButton-root', 'MuiIconButton-sizeLarge', this.props.classes.itemDownloadButtonTable)}\n tabIndex=\"0\"\n download={item.id}\n href={this.imagePrefix + item.id}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n <DownloadIcon />\n </a> : null}\n\n {this.state.viewType === TABLE &&\n this.props.allowDelete &&\n item.id !== 'vis.0/' &&\n item.id !== 'vis-2-beta.0/' &&\n item.id !== USER_DATA\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 >\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 </div>;\n }\n\n renderItems(folderId) {\n if (this.state.folders && this.state.folders[folderId]) {\n // tile\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 (item.folder) {\n res.push(this.renderFolder(item));\n } else if (\n (!this.props.filterFiles || this.props.filterFiles.includes(item.ext)) &&\n (!this.state.filterByType || EXTENSIONS[this.state.filterByType].includes(item.ext))\n ) {\n res.push(this.renderFile(item));\n }\n });\n return res;\n }\n return this.state.folders[folderId].map(item => {\n const res = [];\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.state.filterByType || EXTENSIONS[this.state.filterByType].includes(item.ext))\n ) {\n res.push(this.renderFile(item));\n } else {\n return null;\n }\n\n return res;\n });\n }\n\n return <div style={{ position: 'relative' }}>\n <CircularProgress key={folderId} color=\"secondary\" size={24} />\n <div style={{\n position: 'absolute', zIndex: 2, top: 4, width: 24, textAlign: 'center',\n }}\n >\n {this.state.queueLength}\n </div>\n </div>;\n }\n\n renderToolbar() {\n const IconType = this.props.showTypeSelector ? (FILE_TYPE_ICONS[this.state.filterByType || 'all'] || FILE_TYPE_ICONS.all) : null;\n\n return <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=\"small\"\n >\n <ExpertIcon fontSize=\"small\" />\n </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 || 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=\"small\"\n >\n {this.state.viewType !== TABLE ? <IconList fontSize=\"small\" /> : <IconTile fontSize=\"small\" />}\n </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 || window.localStorage).setItem('file.empty', !this.state.filterEmpty);\n this.setState({ filterEmpty: !this.state.filterEmpty });\n }}\n size=\"small\"\n >\n <EmptyFilterIcon fontSize=\"small\" />\n </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=\"small\"\n >\n <RefreshIcon fontSize=\"small\" />\n </IconButton>\n {this.props.allowCreateFolder ? <IconButton\n edge=\"start\"\n disabled={!this.state.selected || !this.state.folders[this.state.selected] ||\n (\n this.limitToPath &&\n !this.state.selected.startsWith(`${this.limitToPath}/`) &&\n this.limitToPath !== this.state.selected\n )}\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=\"small\"\n >\n <AddFolderIcon fontSize=\"small\" />\n </IconButton> : null}\n {this.props.allowUpload ? <IconButton\n edge=\"start\"\n disabled={\n !this.state.selected ||\n !this.state.folders[this.state.selected] ||\n (\n this.limitToPath &&\n !this.state.selected.startsWith(`${this.limitToPath}/`) &&\n this.limitToPath !== this.state.selected\n )\n }\n title={this.props.t('ra_Upload file')}\n className={this.props.classes.menuButton}\n color=\"inherit\"\n aria-label=\"upload file\"\n onClick={() => this.setState({ uploadFile: true })}\n size=\"small\"\n >\n <UploadIcon fontSize=\"small\" />\n </IconButton> : null}\n {this.props.showTypeSelector ? <Tooltip title={this.props.t('ra_Filter files')}>\n <IconButton size=\"small\" onClick={e => this.setState({ showTypesMenu: e.target })}>\n <IconType fontSize=\"small\" />\n </IconButton>\n </Tooltip> : null}\n {this.state.showTypesMenu ? <Menu\n open={!0}\n anchorEl={this.state.showTypesMenu}\n onClose={() => this.setState({ showTypesMenu: null })}\n >\n {Object.keys(FILE_TYPE_ICONS).map(type => {\n const MyIcon = FILE_TYPE_ICONS[type];\n return <MenuItem\n key={type}\n selected={this.state.filterByType === type}\n onClick={() => {\n if (type === 'all') {\n (window._localStorage || window.localStorage).removeItem('files.filterByType');\n this.setState({ filterByType: '', showTypesMenu: null });\n } else {\n (window._localStorage || window.localStorage).setItem('files.filterByType', type);\n this.setState({ filterByType: type, showTypesMenu: null });\n }\n }}\n >\n <ListItemIcon><MyIcon fontSize=\"small\" /></ListItemIcon>\n <ListItemText>{this.props.t(`ra_fileType_${type}`)}</ListItemText>\n </MenuItem>;\n })}\n </Menu> : null}\n <Tooltip title={this.props.t('ra_Background image')}>\n <IconButton\n color=\"inherit\"\n edge=\"start\"\n className={this.props.classes.menuButton}\n onClick={this.setStateBackgroundImage}\n size=\"small\"\n >\n <Brightness5Icon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </Toolbar>;\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 const 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 <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,\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 || 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 return null;\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 const 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\n key=\"close\"\n color=\"primary\"\n aria-label=\"close\"\n className={this.props.classes.uploadCloseButton}\n onClick={() => this.setState({ uploadFile: false })}\n >\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\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 const parentFolder = this.findFirstFolder(this.state.selected);\n\n if (!parentFolder) {\n window.alert(this.props.t('ra_Invalid parent folder!'));\n } else {\n const id = `${parentFolder}/${file.name}`;\n\n this.uploadFile(id, reader.result)\n .then(() => {\n if (!--count) {\n this.setState({ uploadFile: false }, () => {\n if (this.supportSubscribes) {\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 || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n }\n this.setState({ expanded }, () =>\n this.select(id));\n } else {\n setTimeout(\n () =>\n this.browseFolder(parentFolder, true)\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 || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n }\n this.setState({ folders, expanded }, () =>\n this.select(id));\n }),\n 500,\n );\n }\n });\n }\n });\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }}\n >\n {({ getRootProps, getInputProps }) => (\n <div\n className={Utils.clsx(this.props.classes.uploadDiv, this.state.uploadFile === 'dragging' && this.props.classes.uploadDivDragging)}\n {...getRootProps()}\n >\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 {\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')\n }\n </div>\n </div>\n </div>\n </div>)}\n </Dropzone>,\n ];\n }\n return null;\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, () => this.setState({ folders }));\n }\n });\n }\n });\n }\n\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 }\n return Promise.resolve();\n }\n\n deleteItem(deleteItem) {\n deleteItem = deleteItem || this.state.deleteItem;\n\n this.setState({ deleteItem: '' }, () =>\n this.deleteRecursive(deleteItem)\n .then(() => {\n const newState = {};\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 || window.localStorage).setItem('files.expanded', JSON.stringify(expanded));\n newState.expanded = expanded;\n }\n\n if (!this.supportSubscribes) {\n const 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 newState.folders = folders;\n\n this.setState(newState, () =>\n setTimeout(() => this.browseFolders([...this.state.expanded], folders)\n .then(_folders => this.setState({ folders: _folders })), 200));\n } else {\n this.setState(newState);\n }\n }));\n }\n\n renderDeleteDialog() {\n if (this.state.deleteItem) {\n return <Dialog\n key=\"deleteDialog\"\n open={!0}\n onClose={() => this.setState({ deleteItem: '' })}\n aria-labelledby=\"form-dialog-title\"\n >\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\n color=\"grey\"\n variant=\"contained\"\n onClick={() => {\n this.suppressDeleteConfirm = Date.now() + 60000 * 5;\n this.deleteItem();\n }}\n >\n {this.props.t('ra_Delete (no confirm for 5 mins)')}\n </Button>\n <Button variant=\"contained\" onClick={() => this.deleteItem()} color=\"primary\" autoFocus>{this.props.t('ra_Delete')}</Button>\n <Button variant=\"contained\" onClick={() => this.setState({ deleteItem: '' })} color=\"grey\">{this.props.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n return false;\n }\n\n renderViewDialog() {\n return this.state.viewer ? <FileViewer\n supportSubscribes={this.supportSubscribes}\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\n classes={{ }}\n key=\"errorDialog\"\n text={this.state.errorText}\n onClose={() => this.setState({ errorText: '' })}\n />;\n }\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\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 new Promise(resolve => {\n if (!this.state.folders[folder]) {\n this.browseFolder(folder)\n .then(folders => this.setState({ folders }, () => resolve(true)))\n .catch(err => this.setState({ errorText: err === NOT_FOUND ? this.props.t('ra_Cannot find \"%s\"', folder) : this.props.t('ra_Cannot read \"%s\"', folder) }));\n } else {\n 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('ra_Root')}\n </div>,\n <span key={`${this.state.selected}_s_${i}`} className={this.props.classes.pathDivBreadcrumbSlash}>{'>'}</span>];\n }\n return <div key={`${this.state.selected}_${i}`} className={this.props.classes.pathDivBreadcrumbFile} onClick={() => this.setState({ pathFocus: true })}>{part}</div>;\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={() => this.changeToPath()}\n onChange={e => this.setState({ path: e.target.value })}\n className={this.props.classes.pathDivInput}\n />\n :\n this.renderBreadcrumb()}\n </div>;\n }\n\n render() {\n if (!this.props.ready) {\n return <LinearProgress />;\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 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 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 showTypeSelector: 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 EXTENSIONS\n onSelect: PropTypes.func, // function (id, isDoubleClick)\n\n modalEditOfAccessControl: PropTypes.func,\n};\n\n/** @type {typeof FileBrowser} */\nconst _export = withWidth()(withStyles(styles)(FileBrowser));\nexport default _export;\n"],"mappings":"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"}