import { defaultValueCtx, Editor, rootCtx } from '@milkdown/core'; import { html } from 'atomico'; import { listItemBlockComponent, listItemBlockConfig, ListItemBlockConfig, listItemBlockView } from '@milkdown/components/list-item-block' import { commonmark } from '@milkdown/preset-commonmark'; import { gfm } from '@milkdown/preset-gfm'; import { nord } from '@milkdown/theme-nord' import { listener, listenerCtx } from '@milkdown/plugin-listener'; import '@milkdown/theme-nord/style.css' function configureListItem(ctx: Ctx) { ctx.set(listItemBlockConfig.key, { renderLabel: (label: string, listType, checked?: boolean) => { if (checked == null) { if (listType === 'bullet') { return html`` } return html`${label}` } else { return html`` } }, }) } function createEditor(rootId, fieldId, content) { Editor .make() .config(ctx => { ctx.set(rootCtx, rootId) ctx.set(defaultValueCtx, content) const listener = ctx.get(listenerCtx); listener.markdownUpdated((ctx, markdown, prevMarkdown) => { if (markdown !== prevMarkdown) { console.log(markdown); console.log(fieldId); document.getElementById(fieldId).value = markdown; console.log("updated"); } }) }) .config(configureListItem) .use(commonmark) .use(gfm) .use(nord) .use(listener) .use(listItemBlockComponent) .create(); } window.createEditor = createEditor;