@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
44 lines (39 loc) • 1.1 kB
text/typescript
import { Node, NodeSpec } from '../../prosemirror';
import { Inline } from './doc';
import uuid from '../../plugins/tasks-and-decisions/uuid';
/**
* @name decisionItem_node
*/
export interface Definition {
type: 'decisionItem';
content: Array<Inline>;
attrs: {
localId: string;
state: string;
};
}
export const decisionItem: NodeSpec = {
content: 'inline<_>*',
attrs: {
localId: { compute: uuid.generate },
state: { default: 'DECIDED' },
},
parseDOM: [{
tag: 'li[data-decision-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-decision-state')!,
})
}],
toDOM(node: Node): [string, any, number] {
const { localId, state } = node.attrs;
const attrs = {
'data-decision-local-id': localId || 'local-decision',
'data-decision-state': state,
};
return ['li', attrs, 0];
}
};