You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							80 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
	
	
							80 lines
						
					
					
						
							2.7 KiB
						
					
					
				(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.delegate = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | 
						|
var DOCUMENT_NODE_TYPE = 9; | 
						|
 | 
						|
/** | 
						|
 * A polyfill for Element.matches() | 
						|
 */ | 
						|
if (typeof Element !== 'undefined' && !Element.prototype.matches) { | 
						|
    var proto = Element.prototype; | 
						|
 | 
						|
    proto.matches = proto.matchesSelector || | 
						|
                    proto.mozMatchesSelector || | 
						|
                    proto.msMatchesSelector || | 
						|
                    proto.oMatchesSelector || | 
						|
                    proto.webkitMatchesSelector; | 
						|
} | 
						|
 | 
						|
/** | 
						|
 * Finds the closest parent that matches a selector. | 
						|
 * | 
						|
 * @param {Element} element | 
						|
 * @param {String} selector | 
						|
 * @return {Function} | 
						|
 */ | 
						|
function closest (element, selector) { | 
						|
    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { | 
						|
        if (element.matches(selector)) return element; | 
						|
        element = element.parentNode; | 
						|
    } | 
						|
} | 
						|
 | 
						|
module.exports = closest; | 
						|
 | 
						|
},{}],2:[function(require,module,exports){ | 
						|
var closest = require('./closest'); | 
						|
 | 
						|
/** | 
						|
 * Delegates event to a selector. | 
						|
 * | 
						|
 * @param {Element} element | 
						|
 * @param {String} selector | 
						|
 * @param {String} type | 
						|
 * @param {Function} callback | 
						|
 * @param {Boolean} useCapture | 
						|
 * @return {Object} | 
						|
 */ | 
						|
function delegate(element, selector, type, callback, useCapture) { | 
						|
    var listenerFn = listener.apply(this, arguments); | 
						|
 | 
						|
    element.addEventListener(type, listenerFn, useCapture); | 
						|
 | 
						|
    return { | 
						|
        destroy: function() { | 
						|
            element.removeEventListener(type, listenerFn, useCapture); | 
						|
        } | 
						|
    } | 
						|
} | 
						|
 | 
						|
/** | 
						|
 * Finds closest match and invokes callback. | 
						|
 * | 
						|
 * @param {Element} element | 
						|
 * @param {String} selector | 
						|
 * @param {String} type | 
						|
 * @param {Function} callback | 
						|
 * @return {Function} | 
						|
 */ | 
						|
function listener(element, selector, type, callback) { | 
						|
    return function(e) { | 
						|
        e.delegateTarget = closest(e.target, selector); | 
						|
 | 
						|
        if (e.delegateTarget) { | 
						|
            callback.call(element, e); | 
						|
        } | 
						|
    } | 
						|
} | 
						|
 | 
						|
module.exports = delegate; | 
						|
 | 
						|
},{"./closest":1}]},{},[2])(2) | 
						|
}); |