mirror of
https://github.com/ueberdosis/tiptap.git
synced 2025-08-06 13:38:49 +08:00
refactoring
This commit is contained in:
parent
ec56158739
commit
8d38459289
@ -12,11 +12,7 @@ import createStyleTag from './utils/createStyleTag'
|
||||
import CommandManager from './CommandManager'
|
||||
import ExtensionManager from './ExtensionManager'
|
||||
import EventEmitter from './EventEmitter'
|
||||
import {
|
||||
EditorOptions,
|
||||
EditorContent,
|
||||
CommandSpec,
|
||||
} from './types'
|
||||
import { EditorOptions, EditorContent, CommandSpec } from './types'
|
||||
import * as extensions from './extensions'
|
||||
import style from './style'
|
||||
|
||||
@ -332,7 +328,7 @@ export class Editor extends EventEmitter {
|
||||
* @param name Name of the node
|
||||
*/
|
||||
public getNodeAttributes(name: string) {
|
||||
return getNodeAttributes(this.state, this.schema.nodes[name])
|
||||
return getNodeAttributes(this.state, name)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -341,7 +337,7 @@ export class Editor extends EventEmitter {
|
||||
* @param name Name of the mark
|
||||
*/
|
||||
public getMarkAttributes(name: string) {
|
||||
return getMarkAttributes(this.state, this.schema.marks[name])
|
||||
return getMarkAttributes(this.state, name)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,9 @@
|
||||
import { EditorState } from 'prosemirror-state'
|
||||
import { Mark, MarkType } from 'prosemirror-model'
|
||||
import getMarkType from './getMarkType'
|
||||
|
||||
export default function getMarkAttributes(state: EditorState, type: MarkType) {
|
||||
export default function getMarkAttributes(state: EditorState, typeOrName: string | MarkType) {
|
||||
const type = getMarkType(typeOrName, state.schema)
|
||||
const { from, to, empty } = state.selection
|
||||
let marks: Mark[] = []
|
||||
|
||||
|
@ -1,7 +1,9 @@
|
||||
import { EditorState } from 'prosemirror-state'
|
||||
import { Node, NodeType } from 'prosemirror-model'
|
||||
import getNodeType from './getNodeType'
|
||||
|
||||
export default function getNodeAttributes(state: EditorState, type: NodeType) {
|
||||
export default function getNodeAttributes(state: EditorState, typeOrName: string | NodeType) {
|
||||
const type = getNodeType(typeOrName, state.schema)
|
||||
const { from, to } = state.selection
|
||||
let nodes: Node[] = []
|
||||
|
||||
|
@ -1,11 +1,10 @@
|
||||
import { EditorState } from 'prosemirror-state'
|
||||
import { MarkType } from 'prosemirror-model'
|
||||
import getMarkAttributes from './getMarkAttributes'
|
||||
import { AnyObject } from '../types'
|
||||
import isEmptyObject from './isEmptyObject'
|
||||
import objectIncludes from './objectIncludes'
|
||||
|
||||
export default function markHasAttributes(state: EditorState, type: MarkType, attributes: AnyObject) {
|
||||
export default function markHasAttributes(state: EditorState, type: MarkType, attributes: {}) {
|
||||
if (isEmptyObject(attributes)) {
|
||||
return true
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { EditorState } from 'prosemirror-state'
|
||||
import { MarkType } from 'prosemirror-model'
|
||||
import markHasAttributes from './markHasAttributes'
|
||||
import isEmptyObject from './isEmptyObject'
|
||||
|
||||
export default function markIsActive(state: EditorState, type: MarkType, attributes = {}) {
|
||||
const {
|
||||
@ -17,7 +16,5 @@ export default function markIsActive(state: EditorState, type: MarkType, attribu
|
||||
|
||||
const hasAttributes = markHasAttributes(state, type, attributes)
|
||||
|
||||
return isEmptyObject(attributes)
|
||||
? hasMark
|
||||
: hasMark && hasAttributes
|
||||
return hasMark && hasAttributes
|
||||
}
|
||||
|
@ -2,14 +2,17 @@ import { findParentNode, findSelectedNodeOfType } from 'prosemirror-utils'
|
||||
import { EditorState } from 'prosemirror-state'
|
||||
import { Node, NodeType } from 'prosemirror-model'
|
||||
|
||||
export default function nodeIsActive(state: EditorState, type: NodeType, attrs = {}) {
|
||||
export default function nodeIsActive(state: EditorState, type: NodeType, attributes = {}) {
|
||||
const predicate = (node: Node) => node.type === type
|
||||
const node = findSelectedNodeOfType(type)(state.selection)
|
||||
|| findParentNode(predicate)(state.selection)
|
||||
|
||||
if (!Object.keys(attrs).length || !node) {
|
||||
if (!Object.keys(attributes).length || !node) {
|
||||
return !!node
|
||||
}
|
||||
|
||||
return node.node.hasMarkup(type, { ...node.node.attrs, ...attrs })
|
||||
return node.node.hasMarkup(type, {
|
||||
...node.node.attrs,
|
||||
...attributes,
|
||||
})
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
/**
|
||||
* Check if object1 includes object2
|
||||
* @param object1 Object
|
||||
* @param object2 Object
|
||||
*/
|
||||
export default function objectIncludes(object1: { [key: string ]: any }, object2: { [key: string ]: any }): boolean {
|
||||
return !!Object
|
||||
.keys(object2)
|
||||
|
Loading…
Reference in New Issue
Block a user