remove prosemirror-utils dependency

This commit is contained in:
Hans Pagel
2021-01-26 17:27:52 +01:00
parent 5c9fa9d006
commit e5789a42a4
20 changed files with 154 additions and 17 deletions

View File

@@ -26,7 +26,6 @@
"prosemirror-schema-list": "^1.1.4",
"prosemirror-state": "^1.3.3",
"prosemirror-tables": "^1.1.1",
"prosemirror-utils": "^0.9.6",
"tiptap-utils": "^1.12.0"
}
}

View File

@@ -1,5 +1,5 @@
import { wrapInList, liftListItem } from 'prosemirror-schema-list'
import { findParentNode } from 'prosemirror-utils'
import { findParentNode } from 'tiptap-utils'
function isList(node, schema) {
return (node.type === schema.nodes.bullet_list

View File

@@ -28,7 +28,6 @@
"prosemirror-state": "^1.3.3",
"prosemirror-tables": "^1.1.1",
"prosemirror-transform": "^1.2.8",
"prosemirror-utils": "^0.9.6",
"prosemirror-view": "^1.16.5",
"tiptap": "^1.31.0",
"tiptap-commands": "^1.16.0",

View File

@@ -18,7 +18,7 @@ import {
setCellAttr,
fixTables,
} from 'prosemirror-tables'
import { createTable } from 'prosemirror-utils'
import { createTable } from 'tiptap-utils'
import { TextSelection } from 'prosemirror-state'
import TableNodes from './TableNodes'

View File

@@ -1,6 +1,6 @@
import { Plugin, PluginKey } from 'tiptap'
import { Decoration, DecorationSet } from 'prosemirror-view'
import { findBlockNodes } from 'prosemirror-utils'
import { findBlockNodes } from 'tiptap-utils'
import low from 'lowlight/lib/core'
function getDecorations({ doc, name }) {

View File

@@ -22,7 +22,6 @@
"dependencies": {
"prosemirror-model": "^1.13.1",
"prosemirror-state": "^1.3.3",
"prosemirror-tables": "^1.1.1",
"prosemirror-utils": "^0.9.6"
"prosemirror-tables": "^1.1.1"
}
}

View File

@@ -1,6 +1,17 @@
export { default as createCell } from './utils/createCell'
export { default as createTable } from './utils/createTable'
export { default as equalNodeType } from './utils/equalNodeType'
export { default as findBlockNodes } from './utils/findBlockNodes'
export { default as findChildren } from './utils/findChildren'
export { default as findParentNode } from './utils/findParentNode'
export { default as findParentNodeClosestToPos } from './utils/findParentNodeClosestToPos'
export { default as findSelectedNodeOfType } from './utils/findSelectedNodeOfType'
export { default as flatten } from './utils/flatten'
export { default as getMarkAttrs } from './utils/getMarkAttrs'
export { default as getNodeAttrs } from './utils/getNodeAttrs'
export { default as getMarkRange } from './utils/getMarkRange'
export { default as getNodeAttrs } from './utils/getNodeAttrs'
export { default as getTableNodeTypes } from './utils/getTableNodeTypes'
export { default as isNodeSelection } from './utils/isNodeSelection'
export { default as markIsActive } from './utils/markIsActive'
export { default as nodeEqualsType } from './utils/nodeEqualsType'
export { default as nodeIsActive } from './utils/nodeIsActive'

View File

@@ -0,0 +1,7 @@
export default function createCell(cellType, cellContent) {
if (cellContent) {
return cellType.createChecked(null, cellContent)
}
return cellType.createAndFill()
}

View File

@@ -0,0 +1,33 @@
import createCell from './createCell'
import getTableNodeTypes from './getTableNodeTypes'
export default function createTable(schema, rowsCount, colsCount, withHeaderRow, cellContent) {
const types = getTableNodeTypes(schema)
const headerCells = []
const cells = []
for (let index = 0; index < colsCount; index += 1) {
const cell = createCell(types.cell, cellContent)
if (cell) {
cells.push(cell)
}
if (withHeaderRow) {
const headerCell = createCell(types.header_cell, cellContent)
if (headerCell) {
headerCells.push(headerCell)
}
}
}
const rows = []
for (let index = 0; index < rowsCount; index += 1) {
rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells))
}
return types.table.createChecked(null, rows)
}

View File

@@ -0,0 +1,3 @@
export default function equalNodeType(nodeType, node) {
return Array.isArray(nodeType) && (nodeType.indexOf(node.type) > -1 || node.type === nodeType)
}

View File

@@ -0,0 +1,5 @@
import findChildren from './findChildren'
export default function findBlockNodes(node, descend) {
return findChildren(node, child => child.isBlock, descend)
}

View File

@@ -0,0 +1,10 @@
import flatten from './flatten'
export default function findChildren(node, predicate, descend) {
if (!node) {
throw new Error('Invalid "node" parameter')
} else if (!predicate) {
throw new Error('Invalid "predicate" parameter')
}
return flatten(node, descend).filter(child => predicate(child.node))
}

View File

@@ -0,0 +1,5 @@
import findParentNodeClosestToPos from './findParentNodeClosestToPos'
export default function findParentNode(predicate) {
return selection => findParentNodeClosestToPos(selection.$from, predicate)
}

View File

@@ -0,0 +1,15 @@
// eslint-disable-next-line
export default function findParentNodeClosestToPos($pos, predicate) {
for (let i = $pos.depth; i > 0; i -= 1) {
const node = $pos.node(i)
if (predicate(node)) {
return {
pos: i > 0 ? $pos.before(i) : 0,
start: $pos.start(i),
depth: i,
node,
}
}
}
}

View File

@@ -0,0 +1,16 @@
import isNodeSelection from './isNodeSelection'
import equalNodeType from './equalNodeType'
export default function findSelectedNodeOfType(nodeType) {
// eslint-disable-next-line
return function (selection) {
if (isNodeSelection(selection)) {
const { node } = selection
const { $from } = selection
if (equalNodeType(nodeType, node)) {
return { node, pos: $from.pos, depth: $from.depth }
}
}
}
}

View File

@@ -0,0 +1,17 @@
export default function flatten(node) {
// eslint-disable-next-line
const descend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true
if (!node) {
throw new Error('Invalid "node" parameter')
}
const result = []
// eslint-disable-next-line
node.descendants((child, pos) => {
result.push({ node: child, pos })
if (!descend) {
return false
}
})
return result
}

View File

@@ -0,0 +1,20 @@
export default function getTableNodeTypes(schema) {
if (schema.cached.tableNodeTypes) {
return schema.cached.tableNodeTypes
}
const roles = {}
Object.keys(schema.nodes).forEach(type => {
const nodeType = schema.nodes[type]
if (nodeType.spec.tableRole) {
roles[nodeType.spec.tableRole] = nodeType
}
})
// eslint-disable-next-line
schema.cached.tableNodeTypes = roles
return roles
}

View File

@@ -0,0 +1,5 @@
import { NodeSelection } from 'prosemirror-state'
export default function isNodeSelection(selection) {
return selection instanceof NodeSelection
}

View File

@@ -1,7 +1,5 @@
import {
findParentNode,
findSelectedNodeOfType,
} from 'prosemirror-utils'
import findSelectedNodeOfType from './findSelectedNodeOfType'
import findParentNode from './findParentNode'
export default function nodeIsActive(state, type, attrs = {}) {
const predicate = node => node.type === type

View File

@@ -10538,11 +10538,6 @@ prosemirror-transform@^1.2.1:
dependencies:
prosemirror-model "^1.0.0"
prosemirror-utils@^0.9.6:
version "0.9.6"
resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.6.tgz#3d97bd85897e3b535555867dc95a51399116a973"
integrity sha512-UC+j9hQQ1POYfMc5p7UFxBTptRiGPR7Kkmbl3jVvU8VgQbkI89tR/GK+3QYC8n+VvBZrtAoCrJItNhWSxX3slA==
prosemirror-view@1.16.5, prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3:
version "1.16.5"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.16.5.tgz#1a4646832e16c1cf116b54b9becf4b0663821125"