| Index: static/src/js/vendor/element-closest.js | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/static/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); | 
|  |