@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
94 lines (93 loc) • 2.94 kB
JavaScript
import _typeof from "@babel/runtime/helpers/esm/typeof";
import { hasAllVariants } from "./hasAllVariants.js";
export function maybeInitialData(variants, variant, code, fileName) {
var needsHighlight = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
var needsAllFiles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
var needsAllVariants = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
if (!code) {
return {
initialData: false,
reason: 'No code provided'
};
}
if (needsAllVariants && !hasAllVariants(variants, code, needsHighlight)) {
return {
initialData: false,
reason: 'Not all variants are available'
};
}
var variantCode = code[variant];
if (!variantCode || typeof variantCode === 'string') {
return {
initialData: false,
reason: 'Variant code is not loaded yet'
};
}
if (needsAllFiles) {
if (!variantCode) {
return {
initialData: false,
reason: 'Variant code not found'
};
}
if (!variantCode.source) {
return {
initialData: false,
reason: 'Variant source not found'
};
}
if (variantCode.extraFiles && !Object.keys(variantCode.extraFiles).every(function (file) {
var _variantCode$extraFil;
var fileData = (_variantCode$extraFil = variantCode.extraFiles) == null ? void 0 : _variantCode$extraFil[file];
return _typeof(fileData) === 'object' && (fileData == null ? void 0 : fileData.source) !== undefined;
})) {
return {
initialData: false,
reason: 'Not all extra files are available'
};
}
}
// TODO, filename might need to be determined from filesOrder if provided?
var initialFilename = fileName || variantCode.fileName;
var fileSource;
if (fileName && fileName !== variantCode.fileName) {
var _variantCode$extraFil2;
var fileData = variantCode == null || (_variantCode$extraFil2 = variantCode.extraFiles) == null ? void 0 : _variantCode$extraFil2[fileName];
if (!fileData) {
return {
initialData: false,
reason: "File not found in code"
};
}
if (typeof fileData === 'string') {
// It's a URL, not actual source content
return {
initialData: false,
reason: "File is not loaded yet"
};
}
fileSource = fileData.source;
} else {
fileSource = variantCode.source;
}
if (!fileSource) {
return {
initialData: false,
reason: "File source not found"
};
}
if (needsHighlight && typeof fileSource === 'string') {
return {
initialData: false,
reason: 'File needs highlighting'
};
}
return {
initialData: {
code: code,
initialFilename: initialFilename,
initialSource: fileSource,
initialExtraFiles: variantCode == null ? void 0 : variantCode.extraFiles
}
};
}