package.lib.core.leaf.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of quilljs Show documentation
Show all versions of quilljs Show documentation
Cross browser rich text editor
The newest version!
var Format, Leaf, LinkedList, dom, _,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
_ = require('lodash');
dom = require('../lib/dom');
Format = require('./format');
LinkedList = require('../lib/linked-list');
Leaf = (function(_super) {
__extends(Leaf, _super);
Leaf.ID_PREFIX = 'leaf-';
Leaf.isLeafNode = function(node) {
return dom(node).isTextNode() || (node.firstChild == null);
};
function Leaf(node, formats) {
this.node = node;
this.formats = _.clone(formats);
this.id = _.uniqueId(Leaf.ID_PREFIX);
this.text = dom(this.node).text();
this.length = this.text.length;
}
Leaf.prototype.deleteText = function(offset, length) {
var textNode;
if (!(length > 0)) {
return;
}
this.text = this.text.slice(0, offset) + this.text.slice(offset + length);
this.length = this.text.length;
if (dom.EMBED_TAGS[this.node.tagName] != null) {
textNode = this.node.ownerDocument.createTextNode(this.text);
return this.node = dom(this.node).replace(textNode);
} else {
return dom(this.node).text(this.text);
}
};
Leaf.prototype.insertText = function(offset, text) {
var textNode;
this.text = this.text.slice(0, offset) + text + this.text.slice(offset);
if (dom(this.node).isTextNode()) {
dom(this.node).text(this.text);
} else {
textNode = this.node.ownerDocument.createTextNode(text);
if (this.node.tagName === dom.DEFAULT_BREAK_TAG) {
this.node = dom(this.node).replace(textNode);
} else {
this.node.appendChild(textNode);
this.node = textNode;
}
}
return this.length = this.text.length;
};
return Leaf;
})(LinkedList.Node);
module.exports = Leaf;