@redocly/theme
Version:
Shared UI components lib
30 lines • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useRenderableFiles = useRenderableFiles;
const react_1 = require("react");
const find_closest_common_directory_1 = require("../../utils/find-closest-common-directory");
const GetFileIcon_1 = require("../../utils/GetFileIcon");
const urls_1 = require("../../utils/urls");
function useRenderableFiles(files) {
return (0, react_1.useMemo)(function () {
const filePaths = files.map(({ path }) => path);
const rootDir = (0, find_closest_common_directory_1.findClosestCommonDirectory)(filePaths);
const renderableFiles = files.map((file) => {
const fileIcon = getFileTypeIcon(file.basename);
const parentFolder = file.path.split('/').slice(-2, -1)[0];
const isNameDuplicate = files.some((_file) => file.basename === _file.basename && file.path !== _file.path);
const inRootDir = file.path === `${(0, urls_1.removeLeadingSlash)(rootDir)}/${file.basename}`;
return Object.assign(Object.assign({}, file), { fileIcon,
inRootDir,
parentFolder,
isNameDuplicate });
});
return renderableFiles;
}, [files]);
}
function getFileTypeIcon(basename) {
var _a;
const extension = ((_a = basename.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
return (0, GetFileIcon_1.getFileIconByExt)(extension);
}
//# sourceMappingURL=use-renderable-files.js.map