| Index: src/js/vendor/element-closest.js |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/src/js/vendor/element-closest.js |
| @@ -0,0 +1,33 @@ |
| +/*! @source https://github.com/jonathantneal/closest/blob/master/element-closest.js */ |
| + |
| +(function (ElementProto) { |
| + if (typeof ElementProto.matches !== 'function') { |
| + ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) { |
| + var element = this; |
| + var elements = (element.document || element.ownerDocument).querySelectorAll(selector); |
| + var index = 0; |
| + |
| + while (elements[index] && elements[index] !== element) { |
| + ++index; |
| + } |
| + |
| + return Boolean(elements[index]); |
| + }; |
| + } |
| + |
| + if (typeof ElementProto.closest !== 'function') { |
| + ElementProto.closest = function closest(selector) { |
| + var element = this; |
| + |
| + while (element && element.nodeType === 1) { |
| + if (element.matches(selector)) { |
| + return element; |
| + } |
| + |
| + element = element.parentNode; |
| + } |
| + |
| + return null; |
| + }; |
| + } |
| +})(window.Element.prototype); |