UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

68 lines (62 loc) 2.81 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _extends from "@babel/runtime/helpers/esm/extends"; /** * Add path utility to add path property to each file in a variant * Uses calculateMainFilePath utility and URL resolution for simplified path calculation */ import { calculateMaxBackNavigation, createSyntheticDirectories } from "./pathUtils.js"; import { calculateMainFilePath } from "./calculateMainFilePath.js"; /** * Add flat paths to all files in a variant */ export function addPathsToVariant(variant) { var url = variant.url || ''; var fileName = variant.fileName || ''; // Calculate actual back navigation needed based on extraFiles var backNavResult = variant.extraFiles ? calculateMaxBackNavigation(variant.extraFiles) : { maxBackNavigation: 0, maxSourceBackNavigation: 0 }; // Create a synthetic URL for variants without URL to ensure consistent processing var effectiveUrl = url; if (!url && fileName) { effectiveUrl = "file:///".concat(fileName); } // Calculate main file path using only the back navigation needed by source files var mainFileUrl = effectiveUrl ? calculateMainFilePath(effectiveUrl, backNavResult.maxBackNavigation, backNavResult.maxSourceBackNavigation, variant.metadataPrefix, fileName || undefined // Only pass fileName if it's not empty ) : undefined; // Extract just the path part from the file:// URL and remove leading slash var path = mainFileUrl ? new URL(mainFileUrl).pathname.slice(1) : undefined; return _extends(_extends({}, variant), {}, { path: path, extraFiles: calculateExtraFilesPaths(variant.extraFiles, mainFileUrl || "file:///".concat(backNavResult.maxBackNavigation > 0 ? "".concat(createSyntheticDirectories(backNavResult.maxBackNavigation).join('/'), "/") : '', "temp.txt")) }); } /** * Calculate paths for all extra files using the same logic as the main file */ function calculateExtraFilesPaths(extraFiles, mainFileUrl) { if (!extraFiles) { return undefined; } var result = {}; for (var _i = 0, _Object$entries = Object.entries(extraFiles); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), relativePath = _Object$entries$_i[0], fileContent = _Object$entries$_i[1]; // Resolve the relative path against the main file URL try { var resolvedUrl = new URL(relativePath, mainFileUrl); var file = typeof fileContent === 'string' ? { source: fileContent } : fileContent; result[relativePath] = _extends(_extends({}, file), {}, { path: resolvedUrl.pathname.slice(1) }); } catch (_unused) { // If URL resolution fails, skip this file continue; } } return _extends(_extends({}, extraFiles), result); }