UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

73 lines (67 loc) 2.78 kB
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 }; }