From 6a5dde0101bdddc5cae1237b4143d5fa29ff2040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 28 Jan 2021 09:57:20 +0100 Subject: [PATCH] refactoring --- packages/core/src/helpers/getMarksBetween.ts | 18 ++++++------------ packages/core/src/helpers/isMarkActive.ts | 10 ++-------- packages/core/src/helpers/isNodeActive.ts | 10 ++-------- packages/core/src/inputRules/markInputRule.ts | 2 +- packages/core/src/types.ts | 18 +++++++++++++++++- 5 files changed, 28 insertions(+), 30 deletions(-) diff --git a/packages/core/src/helpers/getMarksBetween.ts b/packages/core/src/helpers/getMarksBetween.ts index 194c4ae4..f7ba63f5 100644 --- a/packages/core/src/helpers/getMarksBetween.ts +++ b/packages/core/src/helpers/getMarksBetween.ts @@ -1,19 +1,13 @@ -import { Mark } from 'prosemirror-model' import { EditorState } from 'prosemirror-state' +import { MarkRange } from '../types' -export type MarkPosition = { - mark: Mark, - start: number, - end: number, -} +export default function getMarksBetween(from: number, to: number, state: EditorState): MarkRange[] { + let marks: MarkRange[] = [] -export default function getMarksBetween(start: number, end: number, state: EditorState): MarkPosition[] { - let marks: MarkPosition[] = [] - - state.doc.nodesBetween(start, end, (node, pos) => { + state.doc.nodesBetween(from, to, (node, pos) => { marks = [...marks, ...node.marks.map(mark => ({ - start: pos, - end: pos + node.nodeSize, + from: pos, + to: pos + node.nodeSize, mark, }))] }) diff --git a/packages/core/src/helpers/isMarkActive.ts b/packages/core/src/helpers/isMarkActive.ts index b41f1c2f..d5296ece 100644 --- a/packages/core/src/helpers/isMarkActive.ts +++ b/packages/core/src/helpers/isMarkActive.ts @@ -1,14 +1,8 @@ import { EditorState } from 'prosemirror-state' -import { Mark, MarkType } from 'prosemirror-model' +import { MarkType } from 'prosemirror-model' import objectIncludes from '../utilities/objectIncludes' import getMarkType from './getMarkType' -import { AnyObject } from '../types' - -export type MarkRange = { - mark: Mark, - from: number, - to: number, -} +import { AnyObject, MarkRange } from '../types' export default function isMarkActive( state: EditorState, diff --git a/packages/core/src/helpers/isNodeActive.ts b/packages/core/src/helpers/isNodeActive.ts index 082df635..e95a8cc9 100644 --- a/packages/core/src/helpers/isNodeActive.ts +++ b/packages/core/src/helpers/isNodeActive.ts @@ -1,14 +1,8 @@ import { EditorState } from 'prosemirror-state' -import { Node, NodeType } from 'prosemirror-model' +import { NodeType } from 'prosemirror-model' import objectIncludes from '../utilities/objectIncludes' import getNodeType from './getNodeType' -import { AnyObject } from '../types' - -export type NodeRange = { - node: Node, - from: number, - to: number, -} +import { AnyObject, NodeRange } from '../types' export default function isNodeActive( state: EditorState, diff --git a/packages/core/src/inputRules/markInputRule.ts b/packages/core/src/inputRules/markInputRule.ts index 100b4d70..516951ca 100644 --- a/packages/core/src/inputRules/markInputRule.ts +++ b/packages/core/src/inputRules/markInputRule.ts @@ -24,7 +24,7 @@ export default function (regexp: RegExp, markType: MarkType, getAttributes?: Fun const { excluded } = item.mark.type return excluded.find((type: MarkType) => type.name === markType.name) }) - .filter(item => item.end > textStart) + .filter(item => item.to > textStart) if (excludedMarks.length) { return null diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 8280bf6d..aec14f17 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1,4 +1,8 @@ -import { Node as ProseMirrorNode, ParseOptions } from 'prosemirror-model' +import { + Node as ProseMirrorNode, + Mark as ProseMirrorMark, + ParseOptions, +} from 'prosemirror-model' import { EditorView, Decoration, @@ -138,4 +142,16 @@ export type Range = { to: number, } +export type NodeRange = { + node: ProseMirrorNode, + from: number, + to: number, +} + +export type MarkRange = { + mark: ProseMirrorMark, + from: number, + to: number, +} + export type Predicate = (node: ProseMirrorNode) => boolean