From a5ee11a77e33d561ecb9ef50a78d8793c9664e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E4=BC=9F?= Date: Wed, 15 Mar 2023 16:24:42 +0800 Subject: [PATCH] Add new option pluginKey --- packages/prosemirror-codemark/src/plugin.ts | 11 ++++++----- packages/prosemirror-codemark/src/types.ts | 2 ++ packages/prosemirror-codemark/src/utils.ts | 3 --- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/prosemirror-codemark/src/plugin.ts b/packages/prosemirror-codemark/src/plugin.ts index 84a718af..74f0c334 100644 --- a/packages/prosemirror-codemark/src/plugin.ts +++ b/packages/prosemirror-codemark/src/plugin.ts @@ -1,9 +1,6 @@ -import { Plugin } from 'prosemirror-state'; import type { PluginSpec } from 'prosemirror-state'; +import { Plugin, PluginKey } from 'prosemirror-state'; import { Decoration, DecorationSet } from 'prosemirror-view'; -import type { CodemarkState, CursorMetaTr, Options } from './types'; -import { getMarkType, pluginKey, safeResolve } from './utils'; -import { createInputRule } from './inputRules'; import { onArrowLeft, onArrowRight, @@ -13,6 +10,9 @@ import { stepOutside, stepOutsideNextTrAndPass, } from './actions'; +import { createInputRule } from './inputRules'; +import type { CodemarkState, CursorMetaTr, Options } from './types'; +import { getMarkType, safeResolve } from './utils'; function toDom(): Node { const span = document.createElement('span'); @@ -21,8 +21,9 @@ function toDom(): Node { } export function getDecorationPlugin(opts?: Options) { + const pluginKey = opts?.pluginKey || new PluginKey('codemark'); const plugin: Plugin = new Plugin({ - key: pluginKey, + key: typeof pluginKey === 'string' ? new PluginKey(pluginKey) : pluginKey, appendTransaction: (trs, oldState, newState) => { const prev = plugin.getState(oldState) as CodemarkState; const meta = trs[0]?.getMeta(plugin) as CursorMetaTr | null; diff --git a/packages/prosemirror-codemark/src/types.ts b/packages/prosemirror-codemark/src/types.ts index 3b8a0245..8acc4b05 100644 --- a/packages/prosemirror-codemark/src/types.ts +++ b/packages/prosemirror-codemark/src/types.ts @@ -1,7 +1,9 @@ +import type { PluginKey } from 'prosemirror-state'; import type { MarkType } from 'prosemirror-model'; export type Options = { markType?: MarkType; + pluginKey?: string | PluginKey; }; export type CodemarkState = { diff --git a/packages/prosemirror-codemark/src/utils.ts b/packages/prosemirror-codemark/src/utils.ts index 7789c6d6..5a7b6bed 100644 --- a/packages/prosemirror-codemark/src/utils.ts +++ b/packages/prosemirror-codemark/src/utils.ts @@ -1,12 +1,9 @@ import type { MarkType, Node } from 'prosemirror-model'; import type { EditorState } from 'prosemirror-state'; -import { PluginKey } from 'prosemirror-state'; import type { EditorView } from 'prosemirror-view'; import type { Options } from './types'; -export const DEFAULT_ID = 'codemark'; export const MAX_MATCH = 100; -export const pluginKey = new PluginKey(DEFAULT_ID); export function getMarkType(view: EditorView | EditorState, opts?: Options): MarkType { if ('schema' in view) return opts?.markType ?? view.schema.marks.code;