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).
52 lines (41 loc) • 979 B
JavaScript
const MIN_LEVEL = 1
const MAX_LEVEL = 3
export default function ListItemMixin (TextNode) {
class ListItem extends TextNode {
getLevel () {
return this.level
}
setLevel (newLevel) {
const doc = this.getDocument()
doc.set([this.id, 'level'], newLevel)
}
getPath () {
return [this.id, 'content']
}
get canIndent () { return true }
indent () {
const level = this.level
if (level < MAX_LEVEL) {
this._changeLevel(1)
}
}
get canDedent () { return true }
dedent () {
const 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 isText () { return false }
static isListItem () {
return true
}
}
return ListItem
}