UNPKG

substance

Version:

Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing system. It is developed to power our online editing platform [Substance](http://substance.io).

58 lines (46 loc) 1.11 kB
import { DocumentNode, TextNodeMixin, TEXT } from 'substance' import { ANNOS_AND_INLINE_NODES } from './TestArticleConstants' const MIN_LEVEL = 1 const MAX_LEVEL = 3 export default class TestListItem extends TextNodeMixin(DocumentNode) { getLevel () { return this.level } setLevel (newLevel) { let doc = this.getDocument() doc.set([this.id, 'level'], newLevel) } getPath () { return [this.id, 'content'] } get canIndent () { return true } indent () { let level = this.level if (level < MAX_LEVEL) { this._changeLevel(1) } } get canDedent () { return true } dedent () { let level = this.level if (level > MIN_LEVEL) { this._changeLevel(-1) } } _changeLevel (delta) { this.setLevel(this.level + delta) // HACK: triggering parent explicitly // TODO: find a better solution this.getParent()._itemsChanged() } static isListItem () { return true } define () { return { type: 'list-item', level: { type: 'number', default: 1 }, content: TEXT(ANNOS_AND_INLINE_NODES) } } }