@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
49 lines (44 loc) • 1.73 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
/**
* Flatten variant utility to convert a VariantCode into a flat files list
* Handles relative path resolution and metadata file scoping
* Uses addPathsToVariant for the core logic, then flattens the result
*/
import { stringOrHastToString } from "../pipeline/hastUtils/index.js";
import { addPathsToVariant } from "../CodeHighlighter/addPathsToVariant.js";
/**
* Flatten a VariantCode into a flat files structure
* Resolves relative paths and handles metadata file scoping
* Uses addPathsToVariant for path resolution logic
*/
export function flattenVariant(variant) {
var result = {};
// Use addPathsToVariant to get the structured paths
var variantWithPaths = addPathsToVariant(variant);
// Add main file if it exists
if (variantWithPaths.path && variantWithPaths.source !== undefined) {
result[variantWithPaths.path] = {
source: stringOrHastToString(variantWithPaths.source)
};
}
// Add extra files if they exist
if (variantWithPaths.extraFiles) {
for (var _i = 0, _Object$values = Object.values(variantWithPaths.extraFiles); _i < _Object$values.length; _i++) {
var fileWithPath = _Object$values[_i];
// Skip files that are just URLs or missing a path
if (typeof fileWithPath === 'string' || !fileWithPath.path) {
continue;
}
// Skip files with no source content
if (!fileWithPath.source && fileWithPath.source !== '') {
continue;
}
result[fileWithPath.path] = _extends({
source: stringOrHastToString(fileWithPath.source || '')
}, fileWithPath.metadata && {
metadata: fileWithPath.metadata
});
}
}
return result;
}