UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

44 lines (39 loc) 1.08 kB
import { Node, NodeSpec } from '../../prosemirror'; import { Inline } from './doc'; import uuid from '../../plugins/tasks-and-decisions/uuid'; /** * @name taskItem_node */ export interface Definition { type: 'taskItem'; content: Array<Inline>; attrs: { localId: string; state: 'TODO' | 'DONE'; }; } export const taskItem: NodeSpec = { content: 'inline<_>*', attrs: { localId: { compute: uuid.generate }, state: { default: 'TODO' }, }, parseDOM: [{ tag: 'li[data-task-local-id]', // Default priority is 50. We normaly don't change this but since this node type is // also used by list-item we need to make sure that we run this parser first. priority: 100, getAttrs: (dom: Element) => ({ localId: uuid.generate(), state: dom.getAttribute('data-task-state')!, }) }], toDOM(node: Node): [string, any, number] { const { localId, state } = node.attrs; const attrs = { 'data-task-local-id': localId || 'local-task', 'data-task-state': state, }; return ['li', attrs, 0]; } };