@iobroker/adapter-react-v5 3.1.23 → 3.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/FileBrowser.js +26 -9
- package/Components/FileBrowser.js.map +1 -1
- package/Components/FileViewer.js +27 -22
- package/Components/FileViewer.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigText.js +24 -3
- package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
- package/Components/ObjectBrowser.js +315 -449
- package/Components/ObjectBrowser.js.map +1 -1
- package/README.md +3 -0
- package/index.js +1 -0
- package/package.json +1 -1
|
@@ -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","paddingTop","itemAclButtonTable","itemDeleteButtonTable","uploadDiv","bottom","right","uploadDivDragging","uploadCenterDiv","border","borderRadius","uploadCenterIcon","uploadCenterText","uploadCloseButton","uploadCenterTextAndIcon","menuButtonExpertActive","pathDiv","marginRight","whiteSpace","pathDivInput","pathDivBreadcrumb","paddingBottom","borderBottom","pathDivBreadcrumbDir","pathDivBreadcrumbSlash","pathDivBreadcrumbFile","backgroundImageLight","backgroundImageDark","backgroundImageColored","direction","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: 'top',\n padding: 0,\n '& span': {\n paddingTop: 9,\n },\n '& svg': {\n width: 14,\n height: 14,\n fontSize: '1rem',\n },\n },\n itemAclButtonTable: {\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n fontSize: 12,\n display: 'flex',\n },\n itemDeleteButtonTable: {\n display: 'inline-block',\n width: BUTTON_WIDTH,\n height: ROW_HEIGHT,\n minWidth: BUTTON_WIDTH,\n verticalAlign: 'top',\n padding: 0,\n '& svg': {\n width: 18,\n height: 18,\n fontSize: '1.5rem',\n },\n },\n\n uploadDiv: {\n top: 0,\n zIndex: 1,\n bottom: 0,\n left: 0,\n right: 0,\n position: 'absolute',\n opacity: 0.9,\n textAlign: 'center',\n background: '#FFFFFF',\n },\n uploadDivDragging: {\n opacity: 1,\n },\n\n uploadCenterDiv: {\n margin: 20,\n border: '3px dashed grey',\n borderRadius: 30,\n width: 'calc(100% - 40px)',\n height: 'calc(100% - 40px)',\n position: 'relative',\n color: theme.palette.mode === 'dark' ? '#222' : '#CCC',\n 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[`itemDownloadButton${this.state.viewType}`]} /> : null}\n\n {this.state.viewType === TABLE && this.props.allowDelete && this.state.folders[item.id] && this.state.folders[item.id].length ?\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 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 '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 ? <IconButton\n download\n href={this.imagePrefix + item.id}\n className={this.props.classes[`itemDownloadButton${this.state.viewType}`]}\n onClick={e => e.stopPropagation()}\n size=\"large\"\n >\n <DownloadIcon />\n </IconButton> : 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={true}\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","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={true}\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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"}
|