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 '@docusaurus/types';
import themeAlias from './alias'; 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( export default function loadThemeAlias(
themePaths: string[], themePaths: string[],
userThemePaths: string[] = [], userThemePaths: string[] = [],
): ThemeAlias { ): ThemeAlias {
const aliases = {}; let aliases = {};
themePaths.forEach((themePath) => { themePaths.forEach((themePath) => {
const themeAliases = themeAlias(themePath); const themeAliases = themeAlias(themePath);
Object.keys(themeAliases).forEach((aliasKey) => { aliases = {...aliases, ...buildThemeAliases(themeAliases, aliases)};
if (aliasKey in aliases) {
const componentName = aliasKey.substring(aliasKey.indexOf('/') + 1);
aliases[`@theme-init/${componentName}`] = aliases[aliasKey];
}
aliases[aliasKey] = themeAliases[aliasKey];
});
}); });
userThemePaths.forEach((themePath) => { userThemePaths.forEach((themePath) => {
const userThemeAliases = themeAlias(themePath, false); const userThemeAliases = themeAlias(themePath, false);
Object.keys(userThemeAliases).forEach((aliasKey) => { aliases = {...aliases, ...buildThemeAliases(userThemeAliases, aliases)};
aliases[aliasKey] = userThemeAliases[aliasKey];
});
}); });
return aliases; return aliases;