From 56417a44a7203a113a24be3390beb34395a470a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Sat, 23 Jan 2021 22:48:34 +0100 Subject: [PATCH] refactoring --- .../extension-table-cell/src/table-cell.ts | 4 +++- .../src/table-header.ts | 4 +++- packages/extension-table-row/src/table-row.ts | 4 +++- packages/extension-table/src/table.ts | 16 ++++++++------ .../src/utilities/createCell.ts | 2 +- .../src/utilities/createTable.ts | 22 ++++++++++--------- .../src/utilities/getTableNodeTypes.ts | 7 +++--- 7 files changed, 34 insertions(+), 25 deletions(-) diff --git a/packages/extension-table-cell/src/table-cell.ts b/packages/extension-table-cell/src/table-cell.ts index 0076119e..4faee886 100644 --- a/packages/extension-table-cell/src/table-cell.ts +++ b/packages/extension-table-cell/src/table-cell.ts @@ -33,7 +33,9 @@ export const TableCell = Node.create({ isolating: true, parseHTML() { - return [{ tag: 'td' }] + return [ + { tag: 'td' }, + ] }, renderHTML({ HTMLAttributes }) { diff --git a/packages/extension-table-header/src/table-header.ts b/packages/extension-table-header/src/table-header.ts index e107639e..f7ebf212 100644 --- a/packages/extension-table-header/src/table-header.ts +++ b/packages/extension-table-header/src/table-header.ts @@ -33,7 +33,9 @@ export const TableHeader = Node.create({ isolating: true, parseHTML() { - return [{ tag: 'th' }] + return [ + { tag: 'th' }, + ] }, renderHTML({ HTMLAttributes }) { diff --git a/packages/extension-table-row/src/table-row.ts b/packages/extension-table-row/src/table-row.ts index 946f798c..bc85b946 100644 --- a/packages/extension-table-row/src/table-row.ts +++ b/packages/extension-table-row/src/table-row.ts @@ -18,7 +18,9 @@ export const TableRow = Node.create({ tableRole: 'row', parseHTML() { - return [{ tag: 'tr' }] + return [ + { tag: 'tr' }, + ] }, renderHTML({ HTMLAttributes }) { diff --git a/packages/extension-table/src/table.ts b/packages/extension-table/src/table.ts index e83e51fb..71be2ac5 100644 --- a/packages/extension-table/src/table.ts +++ b/packages/extension-table/src/table.ts @@ -57,7 +57,9 @@ export const Table = Node.create({ group: 'block', parseHTML() { - return [{ tag: 'table' }] + return [ + { tag: 'table' }, + ] }, renderHTML({ HTMLAttributes }) { @@ -66,14 +68,14 @@ export const Table = Node.create({ addCommands() { return { - insertTable: ({ rows = 3, cols = 3, withHeaderRow = true }): Command => ({ state, dispatch }) => { - const offset = state.tr.selection.anchor + 1 - const nodes = createTable(this.editor.schema, rows, cols, withHeaderRow) - const tr = state.tr.replaceSelectionWith(nodes).scrollIntoView() - const resolvedPos = tr.doc.resolve(offset) + insertTable: ({ rows = 3, cols = 3, withHeaderRow = true }): Command => ({ tr, dispatch, editor }) => { + const offset = tr.selection.anchor + 1 + const node = createTable(editor.schema, rows, cols, withHeaderRow) if (dispatch) { - tr.setSelection(TextSelection.near(resolvedPos)) + tr.replaceSelectionWith(node) + .scrollIntoView() + .setSelection(TextSelection.near(tr.doc.resolve(offset))) } return true diff --git a/packages/extension-table/src/utilities/createCell.ts b/packages/extension-table/src/utilities/createCell.ts index 5aebc223..65d52df3 100644 --- a/packages/extension-table/src/utilities/createCell.ts +++ b/packages/extension-table/src/utilities/createCell.ts @@ -4,7 +4,7 @@ import { Schema, } from 'prosemirror-model' -export function createCell(cellType: NodeType, cellContent?: Fragment | ProsemirrorNode | Array>) { +export function createCell(cellType: NodeType, cellContent?: Fragment | ProsemirrorNode | Array>): ProsemirrorNode | null | undefined { if (cellContent) { return cellType.createChecked(null, cellContent) } diff --git a/packages/extension-table/src/utilities/createTable.ts b/packages/extension-table/src/utilities/createTable.ts index 429963a8..812fc491 100644 --- a/packages/extension-table/src/utilities/createTable.ts +++ b/packages/extension-table/src/utilities/createTable.ts @@ -1,23 +1,25 @@ -import { - Schema, - Fragment, - Node as ProsemirrorNode, -} from 'prosemirror-model' +import { Schema, Fragment, Node as ProsemirrorNode } from 'prosemirror-model' import { createCell } from './createCell' - import { getTableNodeTypes } from './getTableNodeTypes' -export function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | ProsemirrorNode | Array>) { +export function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | ProsemirrorNode | Array>): ProsemirrorNode { const types = getTableNodeTypes(schema) - const headerCells = [] const cells = [] for (let index = 0; index < colsCount; index += 1) { - cells.push(createCell(types.cell, cellContent)) + const cell = createCell(types.cell, cellContent) + + if (cell) { + cells.push(cell) + } if (withHeaderRow) { - headerCells.push(createCell(types.header_cell, cellContent)) + const headerCell = createCell(types.header_cell, cellContent) + + if (headerCell) { + headerCells.push(headerCell) + } } } diff --git a/packages/extension-table/src/utilities/getTableNodeTypes.ts b/packages/extension-table/src/utilities/getTableNodeTypes.ts index e0f7324b..38010a96 100644 --- a/packages/extension-table/src/utilities/getTableNodeTypes.ts +++ b/packages/extension-table/src/utilities/getTableNodeTypes.ts @@ -1,17 +1,16 @@ -import { Schema } from 'prosemirror-model' +import { Schema, NodeType } from 'prosemirror-model' -export function getTableNodeTypes(schema: Schema) { +export function getTableNodeTypes(schema: Schema): { [key: string]: NodeType } { if (schema.cached.tableNodeTypes) { return schema.cached.tableNodeTypes } - const roles = {} + const roles: { [key: string]: NodeType } = {} Object.keys(schema.nodes).forEach(type => { const nodeType = schema.nodes[type] if (nodeType.spec.tableRole) { - // @ts-ignore roles[nodeType.spec.tableRole] = nodeType } })