UNPKG

react-dir-tree

Version:
71 lines (67 loc) 2.07 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } import * as React from "react"; import axios from "axios"; const DirTreeContext = /*#__PURE__*/React.createContext(null); /** * `DirTreeProvider` Component. Display a whole directory * structure. * * Wrap `Directory` or `LazyDirectory` inside this provider. * * This component make a request throw `DirTreeProvider fetchBaseDir` * to get tree structure. So is important to have the service up and running. * Check project repository to get service example. * * @see { @link https://github.com/PinoFlores/react-dir-tree#readme } * * @param {Object} props - {baseUrl, baseDirectory} * @version 0.1.0 * @author Jose Aburto <pino0071@email.com> */ export const DirTreeProvider = props => { const [baseDir, setBaseDir] = React.useState({ name: "Loading Directories, please wait...", path: "", children: [] }); const fetchBaseDir = () => { axios.get(`${props.baseUrl}`, { params: { dir: props.baseDirectory } }).then(({ data }) => { setBaseDir(data.path); }).catch(error => { setBaseDir({ // name: `No Dirs. ${response}`, name: "No Directories. Check Server.", path: "", children: [] }); console.log(error); }); }; const value = React.useMemo(() => { return { baseDir, fetchBaseDir }; }, [baseDir]); return /*#__PURE__*/React.createElement(DirTreeContext.Provider, _extends({ value: value }, props)); }; export const useDirTree = () => { const context = React.useContext(DirTreeContext); if (!context) throw new Error("useDirTree must be inside DirTreeContext"); const { baseDir, fetchBaseDir } = context; return { baseDir, fetchBaseDir }; };