///
import classes = require('component-classes');
import matches = require('matches-selector');
var is = {
text: function(el: Node): boolean {
return el &&
el.nodeType == Node.TEXT_NODE;
},
element: function(el: Node): boolean {
return el &&
el.nodeType == Node.ELEMENT_NODE;
},
p: function(el: Node): boolean {
return is.element(el) &&
el.nodeName == 'P';
},
list: function(el: Node): boolean {
return is.element(el) &&
(el.nodeName == 'UL' || el.nodeName == 'OL');
},
listItem: function(el: Node): boolean {
return is.element(el) &&
el.nodeName == 'LI';
},
emptyListItem: function(el: Node): boolean {
return is.listItem(el) &&
el.childNodes.length == 1 &&
el.childNodes[0].nodeName == 'BR';
},
blockquote: function(el: Node): boolean {
return is.element(el) &&
el.nodeName == 'BLOCKQUOTE';
},
overlayReference: function (el: Node): boolean {
return is.element(el) && matches(el, 'div.overlay-reference[data-id]');
},
joinHint: function (el: Node): boolean {
return is.element(el) && matches(el, 'span.join-hint[contenteditable=false]');
},
empty: function (el: Node): boolean {
return el &&
el.childNodes.length == 0;
},
nonEmpty: function(el: Node): boolean {
return el &&
el.childNodes.length > 0;
},
newline: function(el: Node): boolean {
return is.text(el) &&
(el).textContent == '\n';
},
emptyParagraph: function(el: Node): boolean {
return el.nodeName === 'P' &&
el.childNodes.length === 1 &&
el.childNodes[0].nodeName === 'BR';
},
emptyOverlayReference: function(el: Node): boolean {
return is.overlayReference(el) &&
el.childNodes.length === 1 &&
el.childNodes[0].nodeName === 'BR';
}
}
export = is;