@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
73 lines (67 loc) • 2.78 kB
JavaScript
import _typeof from "@babel/runtime/helpers/esm/typeof";
/**
* Variant examination utility for analyzing variant structure and paths
*/
import { getUrlParts, calculateMaxSourceBackNavigation } from "./pathUtils.js";
/**
* Create path context for processing files with extended information
*/
export function createPathContext(variant) {
var hasMetadata = variant.extraFiles ? Object.values(variant.extraFiles).some(function (file) {
return _typeof(file) === 'object' && file.metadata;
}) : false;
// Calculate maxSourceBackNavigation based only on extraFiles structure
var maxSourceBackNavigation = variant.extraFiles ? calculateMaxSourceBackNavigation(variant.extraFiles) : 0;
// Parse URL to determine path structure
var urlDirectory = [];
var rootLevel = '';
var pathInwardFromRoot = '';
if (variant.url && variant.url.includes('://')) {
try {
var pathComponents = getUrlParts(variant.url);
if (pathComponents.length > 0) {
// Check if the last component looks like a filename (has an extension)
var lastComponent = pathComponents[pathComponents.length - 1];
var hasFileExtension = lastComponent.includes('.') && /\.[a-zA-Z0-9]+$/.test(lastComponent);
// If it has a file extension, exclude it from directory components
var directoryComponents = hasFileExtension ? pathComponents.slice(0, -1) : pathComponents;
urlDirectory = directoryComponents;
rootLevel = directoryComponents[0] || '';
// Only calculate pathInwardFromRoot if there's actual back navigation
if (maxSourceBackNavigation > 0 && directoryComponents.length >= maxSourceBackNavigation) {
// Take the last maxSourceBackNavigation components as the pathInwardFromRoot
var relevantComponents = directoryComponents.slice(-maxSourceBackNavigation);
pathInwardFromRoot = relevantComponents.join('/');
}
}
} catch (_unused) {
// If URL parsing fails, keep defaults
urlDirectory = [];
rootLevel = '';
pathInwardFromRoot = '';
}
}
// We keep the URL info for compatibility, but don't use it for calculations
var hasUrl = Boolean(variant.url);
var actualUrl = variant.url;
if (hasUrl && actualUrl) {
return {
hasUrl: true,
hasMetadata: hasMetadata,
maxSourceBackNavigation: maxSourceBackNavigation,
urlDirectory: urlDirectory,
rootLevel: rootLevel,
pathInwardFromRoot: pathInwardFromRoot,
actualUrl: actualUrl
};
}
return {
hasUrl: false,
hasMetadata: hasMetadata,
maxSourceBackNavigation: maxSourceBackNavigation,
urlDirectory: urlDirectory,
rootLevel: rootLevel,
pathInwardFromRoot: pathInwardFromRoot,
actualUrl: undefined
};
}