From 82b2d23d27ae005f161ee94713c836f90b8a2718 Mon Sep 17 00:00:00 2001 From: Brandon Keepers Date: Fri, 22 Mar 2024 16:05:38 -0400 Subject: [PATCH] Simplify setup --- demo.ts | 17 ++++++----------- src/extensions/index.ts | 3 +-- src/index.ts | 32 +++++++++++--------------------- 3 files changed, 18 insertions(+), 34 deletions(-) diff --git a/demo.ts b/demo.ts index 6f3b72e..770d670 100644 --- a/demo.ts +++ b/demo.ts @@ -26,17 +26,12 @@ const el = document.querySelector('#editor')! createEditor({ parent: el, - state: { - doc, - extensions: [ - linter((view) => { - return [{ from: 0, to: 46, message: "This is what warnings look like", severity: "warning" }] - }) - ], - events: { - changeInterval: 500, // `change` events are debounced by default (300ms) - } - } + doc, + extensions: [ + linter((view) => { + return [{ from: 0, to: 46, message: "This is what warnings look like", severity: "warning" }] + }) + ] }) el.addEventListener('focus', console.log) diff --git a/src/extensions/index.ts b/src/extensions/index.ts index cece5aa..a2fdbd8 100644 --- a/src/extensions/index.ts +++ b/src/extensions/index.ts @@ -39,7 +39,6 @@ export default [ if (completionStatus(e.state)) return acceptCompletion(e); return false }, - }, - + } ]) ] diff --git a/src/index.ts b/src/index.ts index acef859..fdd687a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,29 +1,19 @@ -import { EditorState, EditorStateConfig } from '@codemirror/state' +import { EditorState, EditorStateConfig, Extension } from '@codemirror/state' import { EditorView, EditorViewConfig } from '@codemirror/view' import extensions from "./extensions" -import { eventsToExtensions, EventConfig } from "./events" +import { eventsToExtensions } from "./events" -export type { EventConfig } -export { extensions, eventsToExtensions } +export const basicSetup: Extension[] = [ + ...extensions, + ...eventsToExtensions() +] -export interface StateConfig extends EditorStateConfig { - events?: EventConfig -} - -export function createState({ events, ...state }: StateConfig = {}) { - return EditorState.create({ - ...state, - extensions: [ - ...extensions, - ...eventsToExtensions(events), - state.extensions ?? [] - ], - }) -} - -export function createEditor({ state, ...config }: EditorViewConfig = {}) { +export function createEditor(config: EditorViewConfig = {}) { return new EditorView({ ...config, - state: createState(state) + extensions: [ + ...basicSetup, + ...(config.extensions ? [config.extensions] : []) + ].flat() }) }