From e5c765c8e4a61f050d8b72cf550688cf890f0632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 22 Sep 2021 22:45:27 +0200 Subject: [PATCH] refactoring --- packages/core/src/extensions/focusEvents.ts | 3 --- packages/core/src/extensions/index.ts | 1 + packages/core/src/extensions/tabindex.ts | 19 +++++++++++++++++++ .../core/src/helpers/getMarkAttributes.ts | 6 +++--- .../core/src/helpers/getNodeAttributes.ts | 6 +++--- .../core/src/helpers/getRenderedAttributes.ts | 4 +--- .../core/src/helpers/getSchemaTypeByName.ts | 10 +--------- .../core/src/utilities/mergeAttributes.ts | 1 + packages/core/src/utilities/removeElement.ts | 2 +- 9 files changed, 30 insertions(+), 22 deletions(-) create mode 100644 packages/core/src/extensions/tabindex.ts diff --git a/packages/core/src/extensions/focusEvents.ts b/packages/core/src/extensions/focusEvents.ts index f1ad1317..eaad5aed 100644 --- a/packages/core/src/extensions/focusEvents.ts +++ b/packages/core/src/extensions/focusEvents.ts @@ -11,9 +11,6 @@ export const FocusEvents = Extension.create({ new Plugin({ key: new PluginKey('focusEvents'), props: { - attributes: { - tabindex: '0', - }, handleDOMEvents: { focus: (view, event) => { editor.isFocused = true diff --git a/packages/core/src/extensions/index.ts b/packages/core/src/extensions/index.ts index 66302f22..31c68a82 100644 --- a/packages/core/src/extensions/index.ts +++ b/packages/core/src/extensions/index.ts @@ -3,3 +3,4 @@ export { Commands } from './commands' export { Editable } from './editable' export { FocusEvents } from './focusEvents' export { Keymap } from './keymap' +export { Tabindex } from './tabindex' diff --git a/packages/core/src/extensions/tabindex.ts b/packages/core/src/extensions/tabindex.ts new file mode 100644 index 00000000..44a7e86b --- /dev/null +++ b/packages/core/src/extensions/tabindex.ts @@ -0,0 +1,19 @@ +import { Plugin, PluginKey } from 'prosemirror-state' +import { Extension } from '../Extension' + +export const Tabindex = Extension.create({ + name: 'tabindex', + + addProseMirrorPlugins() { + return [ + new Plugin({ + key: new PluginKey('tabindex'), + props: { + attributes: { + tabindex: '0', + }, + }, + }), + ] + }, +}) diff --git a/packages/core/src/helpers/getMarkAttributes.ts b/packages/core/src/helpers/getMarkAttributes.ts index 632fe378..744de316 100644 --- a/packages/core/src/helpers/getMarkAttributes.ts +++ b/packages/core/src/helpers/getMarkAttributes.ts @@ -17,9 +17,9 @@ export default function getMarkAttributes(state: EditorState, typeOrName: string const mark = marks.find(markItem => markItem.type.name === type.name) - if (mark) { - return { ...mark.attrs } + if (!mark) { + return {} } - return {} + return { ...mark.attrs } } diff --git a/packages/core/src/helpers/getNodeAttributes.ts b/packages/core/src/helpers/getNodeAttributes.ts index fcd0d9bb..f808daef 100644 --- a/packages/core/src/helpers/getNodeAttributes.ts +++ b/packages/core/src/helpers/getNodeAttributes.ts @@ -15,9 +15,9 @@ export default function getNodeAttributes(state: EditorState, typeOrName: string .reverse() .find(nodeItem => nodeItem.type.name === type.name) - if (node) { - return { ...node.attrs } + if (!node) { + return {} } - return {} + return { ...node.attrs } } diff --git a/packages/core/src/helpers/getRenderedAttributes.ts b/packages/core/src/helpers/getRenderedAttributes.ts index ab839b7f..796b15b5 100644 --- a/packages/core/src/helpers/getRenderedAttributes.ts +++ b/packages/core/src/helpers/getRenderedAttributes.ts @@ -14,7 +14,5 @@ export default function getRenderedAttributes(nodeOrMark: Node | Mark, extension return item.attribute.renderHTML(nodeOrMark.attrs) || {} }) - .reduce((attributes, attribute) => { - return mergeAttributes(attributes, attribute) - }, {}) + .reduce((attributes, attribute) => mergeAttributes(attributes, attribute), {}) } diff --git a/packages/core/src/helpers/getSchemaTypeByName.ts b/packages/core/src/helpers/getSchemaTypeByName.ts index 6684ffdf..63975e84 100644 --- a/packages/core/src/helpers/getSchemaTypeByName.ts +++ b/packages/core/src/helpers/getSchemaTypeByName.ts @@ -1,13 +1,5 @@ import { MarkType, NodeType, Schema } from 'prosemirror-model' export default function getSchemaTypeByName(name: string, schema: Schema): NodeType | MarkType | null { - if (schema.nodes[name]) { - return schema.nodes[name] - } - - if (schema.marks[name]) { - return schema.marks[name] - } - - return null + return schema.nodes[name] || schema.marks[name] || null } diff --git a/packages/core/src/utilities/mergeAttributes.ts b/packages/core/src/utilities/mergeAttributes.ts index a41350bc..7c00ce2c 100644 --- a/packages/core/src/utilities/mergeAttributes.ts +++ b/packages/core/src/utilities/mergeAttributes.ts @@ -9,6 +9,7 @@ export default function mergeAttributes(...objects: Record[]): Reco if (!exists) { mergedAttributes[key] = value + return } diff --git a/packages/core/src/utilities/removeElement.ts b/packages/core/src/utilities/removeElement.ts index 9d466a87..9c28430f 100644 --- a/packages/core/src/utilities/removeElement.ts +++ b/packages/core/src/utilities/removeElement.ts @@ -1,5 +1,5 @@ export default function removeElement(element: HTMLElement): void { - if (element && element.parentNode) { + if (element?.parentNode) { element.parentNode.removeChild(element) } }