{"version":3,"sources":["../node_modules/browserify/node_modules/browser-pack/_prelude.js","../src/array.js","../src/attr.js","../src/class.js","../src/contains.js","../src/css.js","../src/data.js","../src/dom.js","../src/dom_extra.js","../src/event.js","../src/html.js","../src/noconflict.js","../src/ready.js","../src/selector.js","../src/selector_extra.js","../src/trigger.js","../src/type.js","../src/util.js","../src/index.js"],"names":[],"mappings":"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","file":"domtastic.js","sourceRoot":"","sourcesContent":["(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})","/**\n * @module Array\n */\n\nimport { each as _each, toArray } from './util';\nimport { $, matches } from './selector';\n\nvar ArrayProto = Array.prototype;\n\n/**\n * Checks if the given callback returns a true(-ish) value for each element in the collection.\n *\n * @param {Function} callback Function to execute for each element, invoked with `element` as argument.\n * @param {Object} [thisArg] Value to use as `this` when executing `callback`.\n * @return {Boolean} Whether each element passed the callback check.\n * @example\n *     $('.items').every(function(element) {\n *         return element.hasAttribute('active')\n *     });\n *     // true/false\n */\n\nvar every = ArrayProto.every;\n\n/**\n * Filter the collection by selector or function, and return a new collection with the result.\n *\n * @param {String|Function} selector Selector or function to filter the collection.\n * @param {Object} [thisArg] Value to use as `this` when executing `callback`.\n * @return {Object} A new wrapped collection\n * @chainable\n * @example\n *     $('.items').filter('.active');\n * @example\n *     $('.items').filter(function(element) {\n *         return element.hasAttribute('active')\n *     });\n */\n\nfunction filter(selector, thisArg) {\n    var callback = typeof selector === 'function' ? selector : function(element) {\n        return matches(element, selector);\n    };\n    return $(ArrayProto.filter.call(this, callback, thisArg));\n}\n\n/**\n * Execute a function for each element in the collection.\n *\n * @param {Function} callback Function to execute for each element, invoked with `element` as argument.\n * @param {Object} [thisArg] Value to use as `this` when executing `callback`.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.items').forEach(function(element) {\n *         element.style.color = 'evergreen';\n *     );\n */\n\nfunction forEach(callback, thisArg) {\n    return _each(this, callback, thisArg);\n}\n\nvar each = forEach;\n\n/**\n * Returns the index of an element in the collection.\n *\n * @param {Node} element\n * @return {Number} The zero-based index, -1 if not found.\n * @example\n *     $('.items').indexOf(element);\n *     // 2\n */\n\nvar indexOf = ArrayProto.indexOf;\n\n/**\n * Create a new collection by executing the callback for each element in the collection.\n *\n * @param {Function} callback Function to execute for each element, invoked with `element` as argument.\n * @param {Object} [thisArg] Value to use as `this` when executing `callback`.\n * @return {Array} Collection with the return value of the executed callback for each element.\n * @example\n *     $('.items').map(function(element) {\n *         return element.getAttribute('name')\n *     });\n *     // ['ever', 'green']\n */\n\nvar map = ArrayProto.map;\n\n/**\n * Removes the last element from the collection, and returns that element.\n *\n * @return {Object} The last element from the collection.\n * @example\n *     var lastElement = $('.items').pop();\n */\n\nvar pop = ArrayProto.pop;\n\n/**\n * Adds one or more elements to the end of the collection, and returns the new length of the collection.\n *\n * @param {Object} element Element(s) to add to the collection\n * @return {Number} The new length of the collection\n * @example\n *     $('.items').push(element);\n */\n\nvar push = ArrayProto.push;\n\n/**\n * Apply a function against each element in the collection, and this accumulator function has to reduce it\n * to a single value.\n *\n * @param {Function} callback Function to execute on each value in the array, taking four arguments (see example).\n * @param {Mixed} initialValue Object to use as the first argument to the first call of the callback.\n * @example\n *     $('.items').reduce(function(previousValue, element, index, collection) {\n *         return previousValue + element.clientHeight;\n *     }, 0);\n *     // [total height of elements]\n */\n\nvar reduce = ArrayProto.reduce;\n\n/**\n * Apply a function against each element in the collection (from right-to-left), and this accumulator function has\n * to reduce it to a single value.\n *\n * @param {Function} callback Function to execute on each value in the array, taking four arguments (see example).\n * @param {Mixed} initialValue Object to use as the first argument to the first call of the callback.\n * @example\n *     $('.items').reduceRight(function(previousValue, element, index, collection) {\n *         return previousValue + element.textContent;\n *     }, '')\n *     // [reversed text of elements]\n */\n\nvar reduceRight = ArrayProto.reduceRight;\n\n/**\n * Reverses an array in place. The first array element becomes the last and the last becomes the first.\n *\n * @return {Object} The wrapped collection, reversed\n * @chainable\n * @example\n *     $('.items').reverse();\n */\n\nfunction reverse() {\n    return $(toArray(this).reverse());\n}\n\n/**\n * Removes the first element from the collection, and returns that element.\n *\n * @return {Object} The first element from the collection.\n * @example\n *     var firstElement = $('.items').shift();\n */\n\nvar shift = ArrayProto.shift;\n\n/**\n * Checks if the given callback returns a true(-ish) value for any of the elements in the collection.\n *\n * @param {Function} callback Function to execute for each element, invoked with `element` as argument.\n * @return {Boolean} Whether any element passed the callback check.\n * @example\n *     $('.items').some(function(element) {\n *         return element.hasAttribute('active')\n *     });\n *     // true/false\n */\n\nvar some = ArrayProto.some;\n\n/**\n * Adds one or more elements to the beginning of the collection, and returns the new length of the collection.\n *\n * @param {Object} element Element(s) to add to the collection\n * @return {Number} The new length of the collection\n * @example\n *     $('.items').unshift(element);\n */\n\nvar unshift = ArrayProto.unshift;\n\n/*\n * Export interface\n */\n\nexport { each, every, filter, forEach, indexOf, map, pop, push, reduce, reduceRight, reverse, shift, some, unshift };\n","/**\n * @module Attr\n */\n\nimport { each } from './util';\n\n/**\n * Get the value of an attribute for the first element, or set one or more attributes for each element in the collection.\n *\n * @param {String|Object} key The name of the attribute to get or set. Or an object containing key-value pairs to set as attributes.\n * @param {String} [value] The value of the attribute to set.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').attr('attrName'); // get\n *     $('.item').attr('attrName', 'attrValue'); // set\n *     $('.item').attr({'attr1', 'value1'}, {'attr2', 'value2}); // set multiple\n */\n\nfunction attr(key, value) {\n\n    if (typeof key === 'string' && typeof value === 'undefined') {\n        var element = this.nodeType ? this : this[0];\n        return element ? element.getAttribute(key) : undefined;\n    }\n\n    each(this, function(element) {\n        if (typeof key === 'object') {\n            for (var attr in key) {\n                element.setAttribute(attr, key[attr]);\n            }\n        } else {\n            element.setAttribute(key, value);\n        }\n    });\n\n    return this;\n}\n\n/**\n * Remove attribute from each element in the collection.\n *\n * @param {String} key Attribute name\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.items').removeAttr('attrName');\n */\n\nfunction removeAttr(key) {\n    each(this, function(element) {\n        element.removeAttribute(key);\n    });\n    return this;\n}\n\n/*\n * Export interface\n */\n\nexport { attr, removeAttr };\n","/**\n * @module Class\n */\n\nimport { each } from './util';\n\n/**\n * Add a class to the element(s)\n *\n * @param {String} value Space-separated class name(s) to add to the element(s).\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').addClass('bar');\n *     $('.item').addClass('bar foo');\n */\n\nfunction addClass(value) {\n    if(value && value.length) {\n        each(value.split(' '), _each.bind(this, 'add'));\n    }\n    return this;\n}\n\n/**\n * Remove a class from the element(s)\n *\n * @param {String} value Space-separated class name(s) to remove from the element(s).\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.items').removeClass('bar');\n *     $('.items').removeClass('bar foo');\n */\n\nfunction removeClass(value) {\n    if(value && value.length) {\n        each(value.split(' '), _each.bind(this, 'remove'));\n    }\n    return this;\n}\n\n/**\n * Toggle a class at the element(s)\n *\n * @param {String} value Space-separated class name(s) to toggle at the element(s).\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').toggleClass('bar');\n *     $('.item').toggleClass('bar foo');\n */\n\nfunction toggleClass(value) {\n    if(value && value.length) {\n        each(value.split(' '), _each.bind(this, 'toggle'));\n    }\n    return this;\n}\n\n/**\n * Check if the element(s) have a class.\n *\n * @param {String} value Check if the DOM element contains the class name. When applied to multiple elements,\n * returns `true` if _any_ of them contains the class name.\n * @return {Boolean} Whether the element's class attribute contains the class name.\n * @example\n *     $('.item').hasClass('bar');\n */\n\nfunction hasClass(value) {\n    return (this.nodeType ? [this] : this).some(function(element) {\n        return element.classList.contains(value);\n    });\n}\n\n/**\n * Specialized iteration, applying `fn` of the classList API to each element.\n *\n * @param {String} fnName\n * @param {String} className\n * @private\n */\n\nfunction _each(fnName, className) {\n    each(this, function(element) {\n        element.classList[fnName](className);\n    });\n}\n\n/*\n * Export interface\n */\n\nexport { addClass, removeClass, toggleClass, hasClass };\n","/**\n * @module contains\n */\n\n/**\n * Test whether an element contains another element in the DOM.\n *\n * @param {Element} container The element that may contain the other element.\n * @param {Element} element The element that may be a descendant of the other element.\n * @return {Boolean} Whether the `container` element contains the `element`.\n * @example\n *     $.contains(parentElement, childElement);\n *     // true/false\n */\n\nfunction contains(container, element) {\n    if(!container || !element || container === element) {\n        return false;\n    } else if (container.contains) {\n        return container.contains(element);\n    } else if (container.compareDocumentPosition) {\n        return !(container.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_DISCONNECTED);\n    }\n    return false;\n}\n\n\n/*\n * Export interface\n */\n\nexport { contains };\n","/**\n * @module Attr\n */\n\nimport { each } from './util';\n\nfunction isNumeric(value) {\n    return !isNaN(parseFloat(value)) && isFinite(value);\n}\n\nfunction camelize(value) {\n    return value.replace(/-([\\da-z])/gi, function (matches, letter) { return letter.toUpperCase(); });\n}\n\nfunction dasherize(value) {\n    return value.replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n/**\n * Get the value of a style property for the first element, or set one or more style properties for each element in the collection.\n *\n * @param {String|Object} key The name of the style property to get or set. Or an object containing key-value pairs to set as style properties.\n * @param {String} [value] The value of the style property to set.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').css('padding-left'); // get\n *     $('.item').css('color', '#f00'); // set\n *     $('.item').css({'border-width', '1px'}, {'display', 'inline-block}); // set multiple\n */\n\nfunction css(key, value) {\n\n    var styleProps, prop, val;\n\n    if(typeof key === 'string') {\n        key = camelize(key);\n\n        if (typeof value === 'undefined') {\n            var element = this.nodeType ? this : this[0];\n            if(element) {\n                val = element.style[key];\n                return isNumeric(val) ? parseFloat(val) : val;\n            }\n            return undefined;\n        }\n\n        styleProps = {};\n        styleProps[key] = value;\n    } else {\n        styleProps = key;\n        for (prop in styleProps) {\n            val = styleProps[prop];\n            delete styleProps[prop];\n            styleProps[camelize(prop)] = val;\n        }\n    }\n\n    each(this, function(element) {\n        for (prop in styleProps) {\n            if(styleProps[prop] || styleProps[prop] === 0) {\n                element.style[prop] = styleProps[prop];\n            } else {\n                element.style.removeProperty(dasherize(prop));\n            }\n        }\n    });\n\n    return this;\n}\n\n/*\n * Export interface\n */\n\nexport { css };\n","/**\n * @module Data\n */\n\nimport { each } from './util';\n\nvar dataKeyProp = '__domtastic_data__';\n\n/**\n * Get data from first element, or set data for each element in the collection.\n *\n * @param {String} key The key for the data to get or set.\n * @param {String} [value] The data to set.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').data('attrName'); // get\n *     $('.item').data('attrName', {any: 'data'}); // set\n */\n\nfunction data(key, value) {\n\n    if (typeof key === 'string' && typeof value === 'undefined') {\n        var element = this.nodeType ? this : this[0];\n        return element && element[dataKeyProp] ? element[dataKeyProp][key] : undefined;\n    }\n\n    each(this, function(element) {\n        element[dataKeyProp] = element[dataKeyProp] || {};\n        element[dataKeyProp][key] = value;\n    });\n\n    return this;\n\n}\n\n/**\n * Get property from first element, or set property on each element in the collection.\n *\n * @param {String} key The name of the property to get or set.\n * @param {String} [value] The value of the property to set.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').prop('attrName'); // get\n *     $('.item').prop('attrName', 'attrValue'); // set\n */\n\nfunction prop(key, value) {\n\n    if (typeof key === 'string' && typeof value === 'undefined') {\n        var element = this.nodeType ? this : this[0];\n        return element && element ? element[key] : undefined;\n    }\n\n    each(this, function(element) {\n        element[key] = value;\n    });\n\n    return this;\n\n}\n\n\n/*\n * Export interface\n */\n\nexport { data, prop }","/**\n * @module DOM\n */\n\nimport { toArray } from './util';\nimport { $ } from './selector';\n\n/**\n * Append element(s) to each element in the collection.\n *\n * @param {String|Node|NodeList|Object} element What to append to the element(s).\n * Clones elements as necessary.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').append('<p>more</p>');\n */\n\nfunction append(element) {\n    if (this instanceof Node) {\n        if (typeof element === 'string') {\n            this.insertAdjacentHTML('beforeend', element);\n        } else {\n            if (element instanceof Node) {\n                this.appendChild(element);\n            } else {\n                var elements = element instanceof NodeList ? toArray(element) : element;\n                elements.forEach(this.appendChild.bind(this));\n            }\n        }\n    } else {\n        _each(this, append, element);\n    }\n    return this;\n}\n\n/**\n * Place element(s) at the beginning of each element in the collection.\n *\n * @param {String|Node|NodeList|Object} element What to place at the beginning of the element(s).\n * Clones elements as necessary.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').prepend('<span>start</span>');\n */\n\nfunction prepend(element) {\n    if (this instanceof Node) {\n        if (typeof element === 'string') {\n            this.insertAdjacentHTML('afterbegin', element);\n        } else {\n            if (element instanceof Node) {\n                this.insertBefore(element, this.firstChild);\n            } else {\n                var elements = element instanceof NodeList ? toArray(element) : element;\n                elements.reverse().forEach(prepend.bind(this));\n            }\n        }\n    } else {\n        _each(this, prepend, element);\n    }\n    return this;\n}\n\n/**\n * Place element(s) before each element in the collection.\n *\n * @param {String|Node|NodeList|Object} element What to place as sibling(s) before to the element(s).\n * Clones elements as necessary.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.items').before('<p>prefix</p>');\n */\n\nfunction before(element) {\n    if (this instanceof Node) {\n        if (typeof element === 'string') {\n            this.insertAdjacentHTML('beforebegin', element);\n        } else {\n            if (element instanceof Node) {\n                this.parentNode.insertBefore(element, this);\n            } else {\n                var elements = element instanceof NodeList ? toArray(element) : element;\n                elements.forEach(before.bind(this));\n            }\n        }\n    } else {\n        _each(this, before, element);\n    }\n    return this;\n}\n\n/**\n * Place element(s) after each element in the collection.\n *\n * @param {String|Node|NodeList|Object} element What to place as sibling(s) after to the element(s). Clones elements as necessary.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.items').after('<span>suf</span><span>fix</span>');\n */\n\nfunction after(element) {\n    if (this instanceof Node) {\n        if (typeof element === 'string') {\n            this.insertAdjacentHTML('afterend', element);\n        } else {\n            if (element instanceof Node) {\n                this.parentNode.insertBefore(element, this.nextSibling);\n            } else {\n                var elements = element instanceof NodeList ? toArray(element) : element;\n                elements.reverse().forEach(after.bind(this));\n            }\n        }\n    } else {\n        _each(this, after, element);\n    }\n    return this;\n}\n\n/**\n * Clone a wrapped object.\n *\n * @return {Object} Wrapped collection of cloned nodes.\n * @example\n *     $(element).clone();\n */\n\nfunction clone() {\n    return $(_clone(this));\n}\n\n/**\n * Clone an object\n *\n * @param {String|Node|NodeList|Array} element The element(s) to clone.\n * @return {String|Node|NodeList|Array} The cloned element(s)\n * @private\n */\n\nfunction _clone(element) {\n    if (typeof element === 'string') {\n        return element;\n    } else if (element instanceof Node) {\n        return element.cloneNode(true);\n    } else if ('length' in element) {\n        return [].map.call(element, function(el) {\n            return el.cloneNode(true);\n        });\n    }\n    return element;\n}\n\n/**\n * Specialized iteration, applying `fn` in reversed manner to a clone of each element, but the provided one.\n *\n * @param {NodeList|Array} collection\n * @param {Function} fn\n * @param {Node} element\n * @private\n */\n\nfunction _each(collection, fn, element) {\n    var l = collection.length;\n    while (l--) {\n        var elm = l === 0 ? element : _clone(element);\n        fn.call(collection[l], elm);\n    }\n}\n\n/*\n * Export interface\n */\n\nexport { append, prepend, before, after, clone };\n","/**\n * @module DOM (extra)\n */\n\nimport { each } from './util';\nimport { append, before, after } from './dom';\nimport { $ } from './selector';\n\n/**\n * Append each element in the collection to the specified element(s).\n *\n * @param {Node|NodeList|Object} element What to append the element(s) to. Clones elements as necessary.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').appendTo(container);\n */\n\nfunction appendTo(element) {\n    var context = typeof element === 'string' ? $(element) : element;\n    append.call(context, this);\n    return this;\n}\n\n/*\n * Empty each element in the collection.\n *\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').empty();\n */\n\nfunction empty(){\n    return each(this, function(element) {\n        element.innerHTML = '';\n    });\n}\n\n/**\n * Remove the collection from the DOM.\n *\n * @return {Array} Array containing the removed elements\n * @example\n *     $('.item').remove();\n */\n\nfunction remove() {\n    return each(this, function(element) {\n        if (element.parentNode) {\n            element.parentNode.removeChild(element);\n        }\n    });\n}\n\n/**\n * Replace each element in the collection with the provided new content, and return the array of elements that were replaced.\n *\n * @return {Array} Array containing the replaced elements\n */\n\nfunction replaceWith() {\n    return before.apply(this, arguments).remove();\n}\n\n/**\n * Get the `textContent` from the first, or set the `textContent` of each element in the collection.\n *\n * @param {String} [value]\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').text('New content');\n */\n\nfunction text(value){\n\n    if(value === undefined) {\n        return this[0].textContent;\n    }\n\n    each(this, function(element) {\n        element.textContent = '' + value;\n    });\n\n    return this;\n}\n\n/**\n * Get the `value` from the first, or set the `value` of each element in the collection.\n *\n * @param {String} [value]\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('input.firstName').value('New value');\n */\n\nfunction val(value){\n\n    if(value === undefined) {\n        return this[0].value;\n    }\n\n    each(this, function(element){\n        element.value = value;\n    });\n\n    return this;\n}\n\n/*\n * Export interface\n */\n\nexport { appendTo, empty, remove, replaceWith, text, val };\n","/**\n * @module Events\n */\n\nimport { each } from './util';\nimport { closest } from './selector';\n\n/**\n * Shorthand for `addEventListener`. Supports event delegation if a filter (`selector`) is provided.\n *\n * @param {String} eventNames List of space-separated event types to be added to the element(s)\n * @param {String} [selector] Selector to filter descendants that delegate the event to this element.\n * @param {Function} handler Event handler\n * @param {Boolean} useCapture=false\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').on('click', callback);\n *     $('.container').on('click focus', '.item', handler);\n */\n\nfunction on(eventNames, selector, handler, useCapture) {\n\n    if (typeof selector === 'function') {\n        handler = selector;\n        selector = null;\n    }\n\n    var parts,\n        namespace,\n        eventListener;\n\n    eventNames.split(' ').forEach(function(eventName) {\n\n        parts = eventName.split('.');\n        eventName = parts[0] || null;\n        namespace = parts[1] || null;\n\n        eventListener = proxyHandler(handler);\n\n        each(this, function(element) {\n\n            if (selector) {\n                eventListener = delegateHandler.bind(element, selector, eventListener);\n            }\n\n            element.addEventListener(eventName, eventListener, useCapture || false);\n\n            getHandlers(element).push({\n                eventName: eventName,\n                handler: handler,\n                eventListener: eventListener,\n                selector: selector,\n                namespace: namespace\n            });\n        });\n\n    }, this);\n\n    return this;\n}\n\n/**\n * Shorthand for `removeEventListener`.\n *\n * @param {String} eventNames List of space-separated event types to be removed from the element(s)\n * @param {String} [selector] Selector to filter descendants that undelegate the event to this element.\n * @param {Function} handler Event handler\n * @param {Boolean} useCapture=false\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').off('click', callback);\n *     $('#my-element').off('myEvent myOtherEvent');\n *     $('.item').off();\n */\n\nfunction off(eventNames = '', selector, handler, useCapture) {\n\n    if (typeof selector === 'function') {\n        handler = selector;\n        selector = null;\n    }\n\n    var parts,\n        namespace,\n        handlers;\n\n    eventNames.split(' ').forEach(function(eventName) {\n\n        parts = eventName.split('.');\n        eventName = parts[0] || null;\n        namespace = parts[1] || null;\n\n        each(this, function(element) {\n\n            handlers = getHandlers(element);\n\n            each(handlers.filter(function(item) {\n                return (\n                    (!eventName || item.eventName === eventName) &&\n                    (!namespace || item.namespace === namespace) &&\n                    (!handler || item.handler === handler) &&\n                    (!selector || item.selector === selector));\n            }), function(item) {\n                element.removeEventListener(item.eventName, item.eventListener, useCapture || false);\n                handlers.splice(handlers.indexOf(item), 1);\n            });\n\n            if (!eventName && !namespace && !selector && !handler) {\n                clearHandlers(element);\n            } else if (handlers.length === 0) {\n                clearHandlers(element);\n            }\n\n        });\n\n    }, this);\n\n    return this;\n}\n\n/**\n * Get event handlers from an element\n *\n * @private\n * @param {Node} element\n * @return {Array}\n */\n\nvar eventKeyProp = '__domtastic_event__';\nvar id = 1;\nvar handlers = {};\nvar unusedKeys = [];\n\nfunction getHandlers(element) {\n    if (!element[eventKeyProp]) {\n        element[eventKeyProp] = unusedKeys.length === 0 ? ++id : unusedKeys.pop();\n    }\n    var key = element[eventKeyProp];\n    return handlers[key] || (handlers[key] = []);\n}\n\n/**\n * Clear event handlers for an element\n *\n * @private\n * @param {Node} element\n */\n\nfunction clearHandlers(element) {\n    var key = element[eventKeyProp];\n    if (handlers[key]) {\n        handlers[key] = null;\n        element[key] = null;\n        unusedKeys.push(key);\n    }\n}\n\n/**\n * Function to create a handler that augments the event object with some extra methods,\n * and executes the callback with the event and the event data (i.e. `event.detail`).\n *\n * @private\n * @param handler Callback to execute as `handler(event, data)`\n * @return {Function}\n */\n\nfunction proxyHandler(handler) {\n    return function(event) {\n        handler.call(this, augmentEvent(event), event.detail);\n    };\n}\n\n/**\n * Attempt to augment events and implement something closer to DOM Level 3 Events.\n *\n * @private\n * @param {Object} event\n * @return {Function}\n */\n\nvar augmentEvent = (function() {\n\n    var methodName,\n        eventMethods = {\n            preventDefault: 'isDefaultPrevented',\n            stopImmediatePropagation: 'isImmediatePropagationStopped',\n            stopPropagation: 'isPropagationStopped'\n        },\n        returnTrue = () => true,\n        returnFalse = () => false;\n\n    return function(event) {\n        if (!event.isDefaultPrevented || event.stopImmediatePropagation || event.stopPropagation) {\n            for (methodName in eventMethods) {\n                (function(methodName, testMethodName, originalMethod) {\n                    event[methodName] = function() {\n                        this[testMethodName] = returnTrue;\n                        return originalMethod && originalMethod.apply(this, arguments);\n                    };\n                    event[testMethodName] = returnFalse;\n                }(methodName, eventMethods[methodName], event[methodName]));\n            }\n            if (event._preventDefault) {\n                event.preventDefault();\n            }\n        }\n        return event;\n    }\n\n})();\n\n/**\n * Function to test whether delegated events match the provided `selector` (filter),\n * if the event propagation was stopped, and then actually call the provided event handler.\n * Use `this` instead of `event.currentTarget` on the event object.\n *\n * @private\n * @param {String} selector Selector to filter descendants that undelegate the event to this element.\n * @param {Function} handler Event handler\n * @param {Event} event\n */\n\nfunction delegateHandler(selector, handler, event) {\n    var eventTarget = event._target || event.target,\n        currentTarget = closest.call([eventTarget], selector, this)[0];\n    if (currentTarget && currentTarget !== this) {\n        if (currentTarget === eventTarget || !(event.isPropagationStopped && event.isPropagationStopped())) {\n            handler.call(currentTarget, event);\n        }\n    }\n}\n\nvar bind = on,\n    unbind = off;\n\n/*\n * Export interface\n */\n\nexport { on, off, bind, unbind };\n","/**\n * @module HTML\n */\n\nimport { each } from './util';\n\n/*\n * Get the HTML contents of the first element, or set the HTML contents for each element in the collection.\n *\n * @param {String} [fragment] HTML fragment to set for the element. If this argument is omitted, the HTML contents are returned.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').html();\n *     $('.item').html('<span>more</span>');\n */\n\nfunction html(fragment) {\n\n    if (typeof fragment !== 'string') {\n        var element = this.nodeType ? this : this[0];\n        return element ? element.innerHTML : undefined;\n    }\n\n    each(this, function(element) {\n        element.innerHTML = fragment;\n    });\n\n    return this;\n\n}\n\n/*\n * Export interface\n */\n\nexport { html };\n","/**\n * @module noConflict\n */\n\nimport { global } from './util';\n\n/*\n * Save the previous value of the global `$` variable, so that it can be restored later on.\n * @private\n */\n\nvar previousLib = global.$;\n\n/**\n * In case another library sets the global `$` variable before DOMtastic does,\n * this method can be used to return the global `$` to that other library.\n *\n * @return {Object} Reference to DOMtastic.\n * @example\n *     var $E = $.noConflict();\n */\n\nfunction noConflict() {\n    global.$ = previousLib;\n    return this;\n}\n\n/*\n * Export interface\n */\n\nexport { noConflict };\n","/**\n * @module Ready\n */\n\n/**\n * Execute callback when `DOMContentLoaded` fires for `document`, or immediately if called afterwards.\n *\n * @param handler Callback to execute when initial DOM content is loaded.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $(document).ready(callback);\n */\n\nfunction ready(handler) {\n    if (/complete|loaded|interactive/.test(document.readyState) && document.body) {\n        handler();\n    } else {\n        document.addEventListener('DOMContentLoaded', handler, false)\n    }\n    return this;\n}\n\n/*\n * Export interface\n */\n\nexport { ready };\n","/**\n * @module Selector\n */\n\nimport { global } from './util';\n\nvar isPrototypeSet = false,\n    reFragment = /^\\s*<(\\w+|!)[^>]*>/,\n    reSingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n    reSimpleSelector = /^[\\.#]?[\\w-]*$/;\n\n/*\n * Versatile wrapper for `querySelectorAll`.\n *\n * @param {String|Node|NodeList|Array} selector Query selector, `Node`, `NodeList`, array of elements, or HTML fragment string.\n * @param {String|Node|NodeList} context=document The context for the selector to query elements.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     var $items = $(.items');\n * @example\n *     var $element = $(domElement);\n * @example\n *     var $list = $(nodeList, document.body);\n * @example\n *     var $element = $('<p>evergreen</p>');\n */\n\nfunction $(selector, context = document) {\n\n    var collection;\n\n    if (!selector) {\n\n        collection = document.querySelectorAll(null);\n\n    } else if (selector instanceof Wrapper) {\n\n        return selector;\n\n    } else if (typeof selector !== 'string') {\n\n        collection = selector.nodeType || selector === window ? [selector] : selector;\n\n    } else if (reFragment.test(selector)) {\n\n        collection = createFragment(selector);\n\n    } else {\n\n        context = typeof context === 'string' ? document.querySelector(context) : context.length ? context[0] : context;\n\n        collection = querySelector(selector, context);\n\n    }\n\n    return wrap(collection);\n\n}\n\n/*\n * Chaining for the `$` wrapper (aliasing `find` for `$`).\n *\n * @param {String|Node|NodeList|Array} selector Query selector, `Node`, `NodeList`, array of elements, or HTML fragment string.\n * @return {Object} The wrapped collection\n * @example\n *     $('.selector').find('.deep').$('.deepest');\n */\n\nfunction find(selector) {\n    return $(selector, this);\n}\n\n/**\n * Return the closest element matching the selector (starting by itself).\n *\n * @param {String} selector Filter\n * @param {Object} [context] If provided, matching elements must be a descendant of this element\n * @return {Object} New wrapped collection (containing zero or one element)\n * @chainable\n * @example\n *     $('.selector').closest('.container');\n */\n\nvar closest = (function() {\n\n    function closest(selector, context) {\n        var node = this[0];\n        while (node && node !== context) {\n            if (matches(node, selector)) {\n                return $(node);\n            } else {\n                node = node.parentElement;\n            }\n        }\n        return $();\n    }\n\n    return !Element.prototype.closest ? closest : function(selector, context) {\n        if(!context) {\n            var node = this[0];\n            return $(node.closest(selector));\n        } else {\n            return closest.call(this, selector, context)\n        }\n    }\n})();\n\n/*\n * Returns `true` if the element would be selected by the specified selector string; otherwise, returns `false`.\n *\n * @param {Node} element Element to test\n * @param {String} selector Selector to match against element\n * @return {Boolean}\n *\n * @example\n *     $.matches(element, '.match');\n */\n\nvar matches = (function() {\n    var context = typeof Element !== 'undefined' ? Element.prototype : global,\n        _matches = context.matches || context.matchesSelector || context.mozMatchesSelector || context.msMatchesSelector || context.oMatchesSelector || context.webkitMatchesSelector;\n    return function(element, selector) {\n        return _matches.call(element, selector);\n    };\n})();\n\n/*\n * Use the faster `getElementById`, `getElementsByClassName` or `getElementsByTagName` over `querySelectorAll` if possible.\n *\n * @private\n * @param {String} selector Query selector.\n * @param {Node} context The context for the selector to query elements.\n * @return {Object} NodeList, HTMLCollection, or Array of matching elements (depending on method used).\n */\n\nfunction querySelector(selector, context) {\n\n    var isSimpleSelector = reSimpleSelector.test(selector);\n\n    if (isSimpleSelector) {\n        if (selector[0] === '#') {\n            var element = (context.getElementById ? context : document).getElementById(selector.slice(1));\n            return element ? [element] : [];\n        }\n        if (selector[0] === '.') {\n            return context.getElementsByClassName(selector.slice(1));\n        }\n        return context.getElementsByTagName(selector);\n    }\n\n    return context.querySelectorAll(selector);\n\n}\n\n/*\n * Create DOM fragment from an HTML string\n *\n * @private\n * @param {String} html String representing HTML.\n * @return {NodeList}\n */\n\nfunction createFragment(html) {\n\n    if (reSingleTag.test(html)) {\n        return [document.createElement(RegExp.$1)];\n    }\n\n    var elements = [],\n        container = document.createElement('div'),\n        children = container.childNodes;\n\n    container.innerHTML = html;\n\n    for (var i = 0, l = children.length; i < l; i++) {\n        elements.push(children[i]);\n    }\n\n    return elements;\n}\n\n/*\n * Calling `$(selector)` returns a wrapped collection of elements.\n *\n * @private\n * @param {NodeList|Array} collection Element(s) to wrap.\n * @return (Object) The wrapped collection\n */\n\nfunction wrap(collection) {\n\n    if (!isPrototypeSet) {\n        Wrapper.prototype = $.fn;\n        Wrapper.prototype.constructor = Wrapper;\n        isPrototypeSet = true;\n    }\n\n    return new Wrapper(collection);\n}\n\n/*\n * Constructor for the Object.prototype strategy\n *\n * @constructor\n * @private\n * @param {NodeList|Array} collection Element(s) to wrap.\n */\n\nfunction Wrapper(collection) {\n    var i = 0, length = collection.length;\n    for (; i < length;) {\n        this[i] = collection[i++];\n    }\n    this.length = length;\n}\n\n/*\n * Export interface\n */\n\nexport { $, find, closest, matches };\n","/**\n * @module Selector (extra)\n */\n\nimport { each, toArray } from './util';\nimport { $, matches } from './selector';\n\n/**\n * Return children of each element in the collection, optionally filtered by a selector.\n *\n * @param {String} [selector] Filter\n * @return {Object} New wrapped collection\n * @chainable\n * @example\n *     $('.selector').children();\n *     $('.selector').children('.filter');\n */\n\nfunction children(selector) {\n    var nodes = [];\n    each(this, function(element) {\n        if(element.children) {\n            each(element.children, function(child) {\n                if (!selector || (selector && matches(child, selector))) {\n                    nodes.push(child);\n                }\n            });\n        }\n    });\n    return $(nodes);\n}\n\n/**\n * Return child nodes of each element in the collection, including text and comment nodes.\n *\n * @return {Object} New wrapped collection\n * @example\n *     $('.selector').contents();\n */\n\nfunction contents() {\n    var nodes = [];\n    each(this, function(element) {\n        nodes.push.apply(nodes, toArray(element.childNodes));\n    });\n    return $(nodes);\n}\n\n/**\n * Return a collection containing only the one at the specified index.\n *\n * @param {Number} index\n * @return {Object} New wrapped collection\n * @chainable\n * @example\n *     $('.items').eq(1)\n *     // The second item; result is the same as doing $($('.items')[1]);\n */\n\nfunction eq(index) {\n    return slice.call(this, index, index + 1);\n}\n\n/**\n * Return the DOM element at the specified index.\n *\n * @param {Number} index\n * @return {Node} Element at the specified index\n * @example\n *     $('.items').get(1)\n *     // The second element; result is the same as doing $('.items')[1];\n */\n\nfunction get(index) {\n    return this[index];\n}\n\n/**\n * Return the parent elements of each element in the collection, optionally filtered by a selector.\n *\n * @param {String} [selector] Filter\n * @return {Object} New wrapped collection\n * @chainable\n * @example\n *     $('.selector').parent();\n *     $('.selector').parent('.filter');\n */\n\nfunction parent(selector) {\n    var nodes = [];\n    each(this, function(element) {\n        if (!selector || (selector && matches(element.parentNode, selector))) {\n            nodes.push(element.parentNode);\n        }\n    });\n    return $(nodes);\n}\n\n/**\n * Return the sibling elements of each element in the collection, optionally filtered by a selector.\n *\n * @param {String} [selector] Filter\n * @return {Object} New wrapped collection\n * @chainable\n * @example\n *     $('.selector').siblings();\n *     $('.selector').siblings('.filter');\n */\n\nfunction siblings(selector) {\n    var nodes = [];\n    each(this, function(element) {\n        each(element.parentNode.children, function(sibling) {\n            if (sibling !== element && (!selector || (selector && matches(sibling, selector)))) {\n                nodes.push(sibling);\n            }\n        });\n    });\n    return $(nodes);\n}\n\n/**\n * Create a new, sliced collection.\n *\n * @param {Number} start\n * @param {Number} end\n * @return {Object} New wrapped collection\n * @example\n *     $('.items').slice(1, 3)\n *     // New wrapped collection containing the second, third, and fourth element.\n */\n\nfunction slice(start, end) {\n    return $([].slice.apply(this, arguments));\n}\n\n/*\n * Export interface\n */\n\nexport { children, contents, eq, get, parent, siblings, slice };\n","/**\n * @module trigger\n */\n\nimport { global, each } from './util';\nimport { contains } from './contains';\n\nvar reMouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n    reKeyEvent = /^key/;\n\n/**\n * Trigger event at element(s)\n *\n * @param {String} type Type of the event\n * @param {Object} data Data to be sent with the event (`params.detail` will be set to this).\n * @param {Object} [params] Event parameters (optional)\n * @param {Boolean} params.bubbles=true Does the event bubble up through the DOM or not.\n * @param {Boolean} params.cancelable=true Is the event cancelable or not.\n * @param {Mixed} params.detail=undefined Additional information about the event.\n * @return {Object} The wrapped collection\n * @chainable\n * @example\n *     $('.item').trigger('anyEventType');\n */\n\nfunction trigger(type, data, params = {}) {\n\n    params.bubbles = typeof params.bubbles === 'boolean' ? params.bubbles : true;\n    params.cancelable = typeof params.cancelable === 'boolean' ? params.cancelable : true;\n    params.preventDefault = typeof params.preventDefault === 'boolean' ? params.preventDefault : false;\n    params.detail = data;\n\n    var EventConstructor = getEventConstructor(type),\n        event = new EventConstructor(type, params);\n\n    event._preventDefault = params.preventDefault;\n\n    each(this, function(element) {\n        if (!params.bubbles || isEventBubblingInDetachedTree || isAttachedToDocument(element)) {\n            dispatchEvent(element, event);\n        } else {\n            triggerForPath(element, type, params);\n        }\n    });\n    return this;\n}\n\nfunction getEventConstructor(type) {\n    return supportsOtherEventConstructors ? (reMouseEvent.test(type) ? MouseEvent : (reKeyEvent.test(type) ? KeyboardEvent : CustomEvent)) : CustomEvent;\n}\n\n/**\n * Trigger event at first element in the collection. Similar to `trigger()`, except:\n *\n * - Event does not bubble\n * - Default event behavior is prevented\n * - Only triggers handler for first matching element\n *\n * @param {String} type Type of the event\n * @param {Object} data Data to be sent with the event\n * @example\n *     $('form').triggerHandler('submit');\n */\n\nfunction triggerHandler(type, data) {\n    if (this[0]) {\n        trigger.call(this[0], type, data, {bubbles: false, preventDefault: true});\n    }\n}\n\n/**\n * Check whether the element is attached to (or detached from) the document\n *\n * @private\n * @param {Node} element Element to test\n * @return {Boolean}\n */\n\nfunction isAttachedToDocument(element) {\n    if (element === window || element === document) {\n        return true;\n    }\n    return contains(element.ownerDocument.documentElement, element);\n}\n\n/**\n * Dispatch the event at the element and its ancestors.\n * Required to support delegated events in browsers that don't bubble events in detached DOM trees.\n *\n * @private\n * @param {Node} element First element to dispatch the event at\n * @param {String} type Type of the event\n * @param {Object} [params] Event parameters (optional)\n * @param {Boolean} params.bubbles=true Does the event bubble up through the DOM or not.\n * Will be set to false (but shouldn't matter since events don't bubble anyway).\n * @param {Boolean} params.cancelable=true Is the event cancelable or not.\n * @param {Mixed} params.detail=undefined Additional information about the event.\n */\n\nfunction triggerForPath(element, type, params = {}) {\n    params.bubbles = false;\n    var event = new CustomEvent(type, params);\n    event._target = element;\n    do {\n        dispatchEvent(element, event);\n    } while (element = element.parentNode);\n}\n\n/**\n * Dispatch event to element, but call direct event methods instead if available\n * (e.g. \"blur()\", \"submit()\") and if the event is non-cancelable.\n *\n * @private\n * @param {Node} element Element to dispatch the event at\n * @param {Object} event Event to dispatch\n */\n\nvar directEventMethods = ['blur', 'focus', 'select', 'submit'];\n\nfunction dispatchEvent(element, event) {\n    if(directEventMethods.indexOf(event.type) !== -1 && typeof element[event.type] === 'function' && !event._preventDefault && !event.cancelable) {\n        element[event.type]();\n    } else {\n        element.dispatchEvent(event);\n    }\n}\n\n/**\n * Polyfill for CustomEvent, borrowed from [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill).\n * Needed to support IE (9, 10, 11) & PhantomJS\n */\n\n(function() {\n    function CustomEvent(event, params = { bubbles: false, cancelable: false, detail: undefined }) {\n        var customEvent = document.createEvent('CustomEvent');\n        customEvent.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n        return customEvent;\n    }\n\n    CustomEvent.prototype = global.CustomEvent && global.CustomEvent.prototype;\n    global.CustomEvent = CustomEvent;\n\n})();\n\n/*\n * Are events bubbling in detached DOM trees?\n * @private\n */\n\nvar isEventBubblingInDetachedTree = (function() {\n    var isBubbling = false,\n        doc = global.document;\n    if (doc) {\n        var parent = doc.createElement('div'),\n            child = parent.cloneNode();\n        parent.appendChild(child);\n        parent.addEventListener('e', function() {\n            isBubbling = true;\n        });\n        child.dispatchEvent(new CustomEvent('e', { bubbles: true }));\n    }\n    return isBubbling;\n})();\n\nvar supportsOtherEventConstructors = (function() {\n    try {\n        new window.MouseEvent('click');\n    } catch (e) {\n        return false;\n    }\n    return true;\n})();\n\n/*\n * Export interface\n */\n\nexport { trigger, triggerHandler };\n","/**\n * @module Type\n */\n\n/*\n * Determine if the argument passed is a Javascript function object.\n *\n * @param {Object} [obj] Object to test whether or not it is a function.\n * @return {boolean} \n * @example\n *     $.isFunction(function(){});\n *     // true\n * @example\n *     $.isFunction({});\n *     // false\n */\n\nfunction isFunction(obj) {\n    return (typeof obj === 'function');\n}\n\n/*\n * Determine whether the argument is an array.\n *\n * @param {Object} [obj] Object to test whether or not it is an array.\n * @return {boolean} \n * @example\n *     $.isArray([]);\n *     // true\n * @example\n *     $.isArray({});\n *     // false\n */\n\nvar isArray = Array.isArray;\n\n/*\n * Export interface\n */\n\nexport { isArray, isFunction };\n","/*\n * @module Util\n */\n\n/*\n * Reference to the global scope\n * @private\n */\n\nvar global = new Function(\"return this\")();\n\n/**\n * Convert `NodeList` to `Array`.\n *\n * @param {NodeList|Array} collection\n * @return {Array}\n * @private\n */\n\nfunction toArray(collection) {\n    var length = collection.length,\n        result = new Array(length);\n    for (var i = 0; i < length; i++) {\n        result[i] = collection[i];\n    }\n    return result;\n}\n\n/**\n * Faster alternative to [].forEach method\n *\n * @param {Node|NodeList|Array} collection\n * @param {Function} callback\n * @return {Node|NodeList|Array}\n * @private\n */\n\nfunction each(collection, callback, thisArg) {\n    var length = collection.length;\n    if (length !== undefined && collection.nodeType === undefined) {\n        for (var i = 0; i < length; i++){\n            callback.call(thisArg, collection[i], i, collection);\n        }\n    } else {\n        callback.call(thisArg, collection, 0, collection);\n    }\n    return collection;\n}\n\n/**\n * Assign enumerable properties from source object(s) to target object\n *\n * @method extend\n * @param {Object} target Object to extend\n * @param {Object} [source] Object to extend from\n * @return {Object} Extended object\n * @example\n *     $.extend({a: 1}, {b: 2});\n *     // {a: 1, b: 2}\n * @example\n *     $.extend({a: 1}, {b: 2}, {a: 3});\n *     // {a: 3, b: 2}\n */\n\nfunction extend(target, ...sources) {\n    sources.forEach(function(src) {\n        for (var prop in src) {\n            target[prop] = src[prop];\n        }\n    });\n    return target;\n}\n\n/*\n * Export interface\n */\n\nexport { global, toArray, each, extend };\n","/**\n * @module API\n */\n\nimport { extend } from './util';\n\nvar api = {},\n    $ = {};\n\n// Import modules to build up the API\n\nimport * as array from './array';\nimport * as attr from './attr';\nimport * as class_ from './class';\nimport * as contains from './contains';\nimport * as css from './css';\nimport * as data from './data';\nimport * as dom from './dom';\nimport * as dom_extra from './dom_extra';\nimport * as event from './event';\nimport * as html from './html';\nimport * as noconflict from './noconflict';\nimport * as ready from './ready';\nimport * as selector from './selector';\nimport * as selector_extra from './selector_extra';\nimport * as trigger from './trigger';\nimport * as type from './type';\n\nif (typeof selector !== 'undefined') {\n    $ = selector.$;\n    $.matches = selector.matches;\n    api.find = selector.find;\n    api.closest = selector.closest;\n}\n\nextend($, contains, noconflict, type);\nextend(api, array, attr, class_, css, data, dom, dom_extra, event, html, ready, selector_extra, trigger);\n\n$.fn = api;\n\n// Version\n\n$.version = '__VERSION__';\n\n// Util\n\n$.extend = extend;\n\n// Export interface\n\nexport default $;\n"]}