'use strict'; var DOM = {}; DOM.e = function (tagName, className) { var element = document.createElement(tagName); element.className = className; return element; }; DOM.appendTo = function (child, parent) { parent.appendChild(child); return child; }; function cssGet(element, styleName) { return window.getComputedStyle(element)[styleName]; } function cssSet(element, styleName, styleValue) { if (typeof styleValue === 'number') { styleValue = styleValue.toString() + 'px'; } element.style[styleName] = styleValue; return element; } function cssMultiSet(element, obj) { for (var key in obj) { var val = obj[key]; if (typeof val === 'number') { val = val.toString() + 'px'; } element.style[key] = val; } return element; } DOM.css = function (element, styleNameOrObject, styleValue) { if (typeof styleNameOrObject === 'object') { // multiple set with object return cssMultiSet(element, styleNameOrObject); } else { if (typeof styleValue === 'undefined') { return cssGet(element, styleNameOrObject); } else { return cssSet(element, styleNameOrObject, styleValue); } } }; DOM.matches = function (element, query) { if (typeof element.matches !== 'undefined') { return element.matches(query); } else { if (typeof element.matchesSelector !== 'undefined') { return element.matchesSelector(query); } else if (typeof element.webkitMatchesSelector !== 'undefined') { return element.webkitMatchesSelector(query); } else if (typeof element.mozMatchesSelector !== 'undefined') { return element.mozMatchesSelector(query); } else if (typeof element.msMatchesSelector !== 'undefined') { return element.msMatchesSelector(query); } } }; DOM.remove = function (element) { if (typeof element.remove !== 'undefined') { element.remove(); } else { if (element.parentNode) { element.parentNode.removeChild(element); } } }; DOM.queryChildren = function (element, selector) { return Array.prototype.filter.call(element.childNodes, function (child) { return DOM.matches(child, selector); }); }; module.exports = DOM;