/* eslint-disable func-names, no-extend-native */ "use strict"; // fix iterating over NodeList in Chrome and Opera NodeList.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator]; NodeList.prototype.querySelector = function (...args) { for (let node of this) { if (node.nodeType === 3) { continue; } const result = node.querySelector(...args); if (result) { return result; } } return null; }; NodeList.prototype.querySelectorAll = function (...args) { let result = []; for (let node of this) { if (node.nodeType === 3) { continue; } for (let childNode of node.querySelectorAll(...args)) { result.push(childNode); } } return result; }; // non standard Node.prototype.prependChild = function (child) { if (this.firstChild) { this.insertBefore(child, this.firstChild); } else { this.appendChild(child); } }; // non standard Promise.prototype.always = function (onResolveOrReject) { return this.then(onResolveOrReject, (reason) => { onResolveOrReject(reason); throw reason; }); }; // non standard Number.prototype.between = function (a, b, inclusive) { const min = Math.min(a, b); const max = Math.max(a, b); return inclusive ? this >= min && this <= max : this > min && this < max; }; // non standard Promise.prototype.abort = () => {}; // non standard Date.prototype.addDays = function (days) { let dat = new Date(this.valueOf()); dat.setDate(dat.getDate() + days); return dat; };