feat(v2): Add @theme-init components to user theme (#3485)

* Add @theme-init components to user theme

* Refactor loadThemeAlias duplicate code to function
This commit is contained in:
Grégory Heitz 2020-09-28 14:48:42 +02:00 committed by GitHub
parent c0d8238c49
commit 06cc8fb7a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -8,29 +8,36 @@
import {ThemeAlias} from '@docusaurus/types';
import themeAlias from './alias';
function buildThemeAliases(
themeAliases: ThemeAlias,
aliases: ThemeAlias = {},
): ThemeAlias {
Object.keys(themeAliases).forEach((aliasKey) => {
if (aliasKey in aliases) {
const componentName = aliasKey.substring(aliasKey.indexOf('/') + 1);
// eslint-disable-next-line no-param-reassign
aliases[`@theme-init/${componentName}`] = aliases[aliasKey];
}
// eslint-disable-next-line no-param-reassign
aliases[aliasKey] = themeAliases[aliasKey];
});
return aliases;
}
export default function loadThemeAlias(
themePaths: string[],
userThemePaths: string[] = [],
): ThemeAlias {
const aliases = {};
let aliases = {};
themePaths.forEach((themePath) => {
const themeAliases = themeAlias(themePath);
Object.keys(themeAliases).forEach((aliasKey) => {
if (aliasKey in aliases) {
const componentName = aliasKey.substring(aliasKey.indexOf('/') + 1);
aliases[`@theme-init/${componentName}`] = aliases[aliasKey];
}
aliases[aliasKey] = themeAliases[aliasKey];
});
aliases = {...aliases, ...buildThemeAliases(themeAliases, aliases)};
});
userThemePaths.forEach((themePath) => {
const userThemeAliases = themeAlias(themePath, false);
Object.keys(userThemeAliases).forEach((aliasKey) => {
aliases[aliasKey] = userThemeAliases[aliasKey];
});
aliases = {...aliases, ...buildThemeAliases(userThemeAliases, aliases)};
});
return aliases;