diff --git a/theme/src/node/loadConfig/loader.ts b/theme/src/node/loadConfig/loader.ts index 4e7e3d15..c8697c8a 100644 --- a/theme/src/node/loadConfig/loader.ts +++ b/theme/src/node/loadConfig/loader.ts @@ -105,7 +105,7 @@ export async function onConfigChange(onChange: ChangeEvent) { if (loader && !loader.changeEvents.includes(onChange)) { loader.changeEvents.push(onChange) if (loader.loaded) { - onChange(loader.resolvedConfig) + await onChange(loader.resolvedConfig) } } } @@ -140,9 +140,9 @@ function updateResolvedConfig(app: App, userConfig: ThemeConfig = {}) { } } -function runChangeEvents() { +async function runChangeEvents() { if (loader) { - loader.changeEvents.forEach(fn => fn(loader!.resolvedConfig)) + await Promise.all(loader.changeEvents.map(fn => fn(loader!.resolvedConfig))) } } diff --git a/theme/src/node/theme.ts b/theme/src/node/theme.ts index 77123e9c..e7834a72 100644 --- a/theme/src/node/theme.ts +++ b/theme/src/node/theme.ts @@ -73,11 +73,13 @@ export function plumeTheme(options: PlumeThemeOptions = {}): Theme { }, onPrepared: async (app) => { - onConfigChange(({ localeOptions }) => { - prepareThemeData(app, localeOptions) - prepareData(app) + onConfigChange(async ({ localeOptions }) => { + await prepareThemeData(app, localeOptions) + await prepareData(app) }) - await waitForConfigLoaded() + const { localeOptions } = await waitForConfigLoaded() + await prepareThemeData(app, localeOptions) + await prepareData(app) }, onWatched: (app, watchers) => {