@milkdown/core
Version:
The core module of [milkdown](https://milkdown.dev/).
35 lines (25 loc) • 772 B
text/typescript
import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'
import { createTimer } from '@milkdown/ctx'
import { withMeta } from '../__internal__'
/// @internal
export type Config = (ctx: Ctx) => void | Promise<void>
/// The timer which will be resolved when the config plugin is ready.
export const ConfigReady = createTimer('ConfigReady')
/// The config plugin.
/// This plugin will load all user configs.
export function config(configure: Config): MilkdownPlugin {
const plugin: MilkdownPlugin = (ctx) => {
ctx.record(ConfigReady)
return async () => {
await configure(ctx)
ctx.done(ConfigReady)
return () => {
ctx.clearTimer(ConfigReady)
}
}
}
withMeta(plugin, {
displayName: 'Config',
})
return plugin
}